From f6b84428fce7453689956eae44e71b33a69a4665 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 24 十二月 2021 11:32:15 +0800 Subject: [PATCH] UI修改 --- app/src/com/hanju/video/app/ui/recommend/RecommendNewAdapter.java | 206 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 204 insertions(+), 2 deletions(-) diff --git a/app/src/com/hanju/video/app/ui/recommend/RecommendNewAdapter.java b/app/src/com/hanju/video/app/ui/recommend/RecommendNewAdapter.java index c18e746..111cbc8 100644 --- a/app/src/com/hanju/video/app/ui/recommend/RecommendNewAdapter.java +++ b/app/src/com/hanju/video/app/ui/recommend/RecommendNewAdapter.java @@ -14,6 +14,11 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; +import com.bytedance.sdk.dp.DPSdk; +import com.bytedance.sdk.dp.DPWidgetVideoCardParams; +import com.bytedance.sdk.dp.IDPElement; +import com.bytedance.sdk.dp.IDPVideoCardListener; +import com.bytedance.sdk.dp.IDPWidgetFactory; import com.bytedance.sdk.openadsdk.TTAdDislike; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; @@ -45,8 +50,10 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.TreeSet; +import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; public class RecommendNewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { @@ -68,6 +75,11 @@ private List<View> headerViewList; private View footerView; + + //瑙嗛鍗$墖 + private FrameLayout mVideoCardLayout; + private IDPElement mVideoCardElement; + private TextView mVideoCardTitle; public void setHeaderView(List<View> viewList) { this.headerViewList = viewList; @@ -160,6 +172,10 @@ return new HomeTypeHolder(inflater.inflate(R.layout.item_recommend_home_type, null, false), new RecyclerView.RecycledViewPool()); case RecommendContent.TYPE_AD: return new AdHolder(inflater.inflate(R.layout.item_recommend_home_type_ad, parent, false)); + + case RecommendContent.TYPE_DY_VIDEOS: + loadVideoCard(); + return new DYVideosHolder(inflater.inflate(R.layout.item_recommend_home_dy_videos, parent, false)); } return null; } @@ -176,6 +192,8 @@ int p = i; if (headerViewList != null) p -= headerViewList.size(); + + p -= (hasDYVideos() ? 1 : 0); if (viewHolder instanceof HomeTypeHolder) { @@ -249,7 +267,7 @@ v.getContext().startActivity(intent); } else { - VideoType type = JsonUtil.videoGson.fromJson(homeType.getParams().replace( + VideoType type = JsonUtil.videoGson.fromJson(homeType.getParams().replace( "\\" + "\"", "\""), VideoType.class); try { intent = new Intent(v.getContext(), Class.forName(homeType.getActivity())); @@ -275,8 +293,13 @@ } else { holder.ll_container.setVisibility(View.GONE); } + } else if (viewHolder instanceof DYVideosHolder) { + final DYVideosHolder holder = (DYVideosHolder) viewHolder; + mVideoCardLayout = holder.fl_container; + mVideoCardTitle = holder.tv_title; } } + @Override public int getItemCount() { @@ -285,6 +308,9 @@ count += headerViewList.size(); if (footerView != null) count += 1; + + count += (hasDYVideos() ? 1 : 0); + return count; } @@ -313,14 +339,33 @@ if (headerViewList != null) position -= headerViewList.size(); - if (position >= contentList.size() && footerView != null) { + if (position >= contentList.size() + (hasDYVideos() ? 1 : 0) && footerView != null) { return TYPE_FOOTER; } + + if (hasDYVideos() && position == 0) { + return RecommendContent.TYPE_DY_VIDEOS; + } + + if (hasDYVideos()) { + position--; + } + if (contentList.get(position) instanceof HomeType) return RecommendContent.TYPE_HOMETYPE; else return RecommendContent.TYPE_AD; + } + + private boolean hasDYVideos() { + + return AdUtil.isCanInitCSJ(); + } + + + public void refresh() { + loadVideoCard(); } class HomeTypeHolder extends RecyclerView.ViewHolder { @@ -358,6 +403,23 @@ ll_container = view.findViewById(R.id.ll_container); fl_ad = view.findViewById(R.id.fl_ad); rl_title_item = view.findViewById(R.id.rl_title_item); + } + + } + + + class DYVideosHolder extends RecyclerView.ViewHolder { + + FrameLayout fl_container; + TextView tv_title; + View view; + + + public DYVideosHolder(View view) { + super(view); + this.view = view; + fl_container = view.findViewById(R.id.fl_container); + tv_title = view.findViewById(R.id.tv_title); } } @@ -563,4 +625,144 @@ } + + private void loadVideoCard() { + + if (!AdUtil.isCanInitCSJ()) { + return; + } + + DPWidgetVideoCardParams params = DPWidgetVideoCardParams.obtain() + .hideTitle(true) + .listener(new IDPVideoCardListener() { + @Override + public void onDPItemClick(Map<String, Object> map) { + log("onDPItemClick map = " + map.toString()); + } + + @Override + public void onDPLSwipeEnter() { + log("onDPLSwipeEnter"); + } + + @Override + public void onDPRequestStart(@Nullable Map<String, Object> map) { + log("onDPRequestStart"); + } + + @Override + public void onDPRequestSuccess(List<Map<String, Object>> list) { + if (list == null) { + return; + } + + for (int i = 0; i < list.size(); i++) { + log("onDPRequestSuccess i = " + i + ", map = " + list.get(i).toString()); + } + } + + @Override + public void onDPRequestFail(int code, String msg, @Nullable Map<String, Object> map) { + if (map == null) { + log("onDPRequestFail code = " + code + ", msg = " + msg); + return; + } + log("onDPRequestFail code = " + code + ", msg = " + msg + ", map = " + map.toString()); + } + + @Override + public void onDPClientShow(@Nullable Map<String, Object> map) { + log("onDPClientShow"); + } + + @Override + public void onDPClickAuthorName(Map<String, Object> map) { + log("onDPClickAuthorName map = " + map.toString()); + } + + @Override + public void onDPClickAvatar(Map<String, Object> map) { + log("onDPClickAvatar map = " + map.toString()); + } + + @Override + public void onDPClickComment(Map<String, Object> map) { + log("onDPClickComment map = " + map.toString()); + } + + @Override + public void onDPClickLike(boolean isLike, Map<String, Object> map) { + log("onDPClickLike isLike = " + isLike + ", map = " + map.toString()); + } + + @Override + public void onDPVideoPlay(Map<String, Object> map) { + log("onDPVideoPlay map = " + map.toString()); + } + + @Override + public void onDPVideoPause(Map<String, Object> map) { + log("onDPVideoPause map = " + map.toString()); + } + + @Override + public void onDPVideoContinue(Map<String, Object> map) { + log("onDPVideoContinue map = " + map.toString()); + } + + @Override + public void onDPVideoOver(Map<String, Object> map) { + log("onDPVideoOver map = " + map.toString()); + } + + @Override + public void onDPVideoCompletion(Map<String, Object> map) { + log("onDPVideoCompletion map = " + map.toString()); + } + }) + .dislikeListener(mContext, new DPWidgetVideoCardParams.IDislikeListener() { + @Override + public void onSelected(String msg) { + // 濡傛灉 hideTitle 涓� true锛屽彲浠ヤ笉鍋氫换浣曞鐞� + log("dislike msg = " + msg); + if (mVideoCardLayout == null) { + return; + } + mVideoCardLayout.removeAllViews(); + mVideoCardTitle.setVisibility(View.GONE); + } + }); + + DPSdk.factory().loadSmallVideoCard(params, new IDPWidgetFactory.Callback() { + @Override + public void onError(int code, String msg) { + log("onError code = " + code + ", msg = " + msg); + } + + @Override + public void onSuccess(IDPElement data) { + + + mVideoCardElement = data; + View view = data.getView(); + if (view == null || mVideoCardLayout == null) { + return; + } + + mVideoCardLayout.removeAllViews(); + ViewGroup viewGroup = (ViewGroup) view.getParent(); + if (viewGroup != null) { + viewGroup.removeAllViews(); + } + mVideoCardLayout.addView(view); + mVideoCardElement.reportShow(); + mVideoCardTitle.setVisibility(View.VISIBLE); + notifyDataSetChanged(); + } + }); + } + + private static void log(String msg) { + Log.d(TAG, String.valueOf(msg)); + } } -- Gitblit v1.8.0