From 2f9e1cb327b1d58e4035b77bd903a452774ce66b Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 17 十月 2020 17:28:57 +0800 Subject: [PATCH] 广告控制完善 --- BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 105 insertions(+), 12 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java index 87e5c7b..ef09ead 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java @@ -62,6 +62,7 @@ import com.weikou.beibeivideo.ui.video.EpisodeNewAdapter; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.GlideCircleTransform; +import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.util.VideoUtil; import com.weikou.beibeivideo.util.ad.AdUtil; import com.weikou.beibeivideo.util.ad.ExpressAdManager; @@ -71,6 +72,7 @@ import org.json.JSONArray; import org.json.JSONObject; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -100,6 +102,12 @@ private EpisodeNewAdapter episodeAdapter; final String TAG = "EpisodeFragment"; + + private boolean episodeLoading = false;//鍓ч泦鏄惁姝e湪鍔犺浇鏇村 + + private boolean episodeHasMore = true;//鏄惁杩樻湁鏇村鐨勫墽闆� + + private int episodePage = 2;//褰撳墠椤� public static DisplayImageOptions option = new DisplayImageOptions.Builder() .showImageForEmptyUri(R.drawable.from_other) @@ -157,7 +165,7 @@ RecyclerView parent, RecyclerView.State state) { int position = parent.getChildAdapterPosition(view); outRect.left = space; - if (mVideoInfo != null && position == mVideoInfo.getVideoDetailList().size() - 1) + if (mVideoInfo != null && position == VideoUtil.videoEpisodeList.size() - 1) outRect.right = space; } } @@ -295,10 +303,42 @@ isCollect(); loadAD1(); setFrom(mVideoInfo); - if (mVideoInfo.getVideoDetailList() != null && mVideoInfo.getVideoDetailList().size() > 1) { + if (VideoUtil.videoEpisodeList != null && VideoUtil.videoEpisodeList.size() > 1) { rv_episode.setVisibility(View.VISIBLE); } else rv_episode.setVisibility(View.GONE); + + // + rv_episode.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager(); + int first = manager.findFirstVisibleItemPosition(); + int last = manager.findLastVisibleItemPosition(); + int total = manager.getItemCount(); + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + if (mVideoInfo == null) + return; + if (!episodeLoading && episodeHasMore && last == total - 1) {//鍔犺浇鏇村 + VideoResource checkedResource = null; + for (VideoResource vr : mVideoInfo.getResourceList()) { + checkedResource = vr; + break; + } + if (checkedResource != null) { + loadMoreEpisode(mVideoInfo.getId(), checkedResource.getId(), episodePage); + } + } + } + } + + @Override + public void onScrolled(RecyclerView recyclerView, int dx, final int dy) { + super.onScrolled(recyclerView, dx, dy); + } + }); + EventBus.getDefault().register(this); } @@ -601,7 +641,7 @@ public void onEventMainThread(VideoInfo videoInfo) { mVideoInfo = videoInfo; - if (mVideoInfo.getVideoDetailList() != null && mVideoInfo.getVideoDetailList().size() > 1) { + if (VideoUtil.videoEpisodeList != null && VideoUtil.videoEpisodeList.size() > 1) { rv_episode.setVisibility(View.VISIBLE); } else rv_episode.setVisibility(View.GONE); @@ -797,6 +837,11 @@ .toString(), new TypeToken<VideoInfo>() { }.getType()); + if (videoInfo != null) { + VideoUtil.videoEpisodeList.clear(); + if (videoInfo.getVideoDetailList() != null) + VideoUtil.videoEpisodeList.addAll(videoInfo.getVideoDetailList()); + } // 闄勫姞瀛楁 if (jsonObject.optJSONObject("Extra1") != null) { if (jsonObject.optJSONObject("Extra1").optJSONObject("Attention") != null) { @@ -814,18 +859,20 @@ if (extraData != null) videoInfo.setExtraData(extraData.toString()); - if (videoInfo.getVideoDetailList() == null - || videoInfo.getVideoDetailList().isEmpty()) { + if (VideoUtil.videoEpisodeList == null + || VideoUtil.videoEpisodeList.isEmpty()) { Toast.makeText(getContext(), "褰辩墖宸插垹闄�", Toast.LENGTH_LONG).show(); getActivity().finish(); return; } + + if (rv_episode.getAdapter() != null) + rv_episode.getAdapter().notifyDataSetChanged(); // videoInfo.setSave(jsonObject.getJSONObject("Data").optBoolean("Save")); if (isSetup) { - mVideoInfo.getVideoDetailList().clear(); - mVideoInfo.setVideoDetailList(videoInfo - .getVideoDetailList()); + VideoUtil.videoEpisodeList.clear(); + VideoUtil.videoEpisodeList.addAll(videoInfo.getVideoDetailList()); EventBus.getDefault().post(videoInfo); int position = 0; // boolean isFromWatchHistory = false; @@ -843,10 +890,9 @@ "playing_position", 0); } // if (isFromWatchHistory) { - getUrl(videoInfo.getVideoDetailList().get(position)); + getUrl(VideoUtil.videoEpisodeList.get(position)); EventBus.getDefault() - .post(videoInfo - .getVideoDetailList() + .post(VideoUtil.videoEpisodeList .get(position)); // } else {// 涓嶆槸浠庤鐪嬭褰曠偣鍑昏繃鏉� --璺冲埌褰撳墠鎾斁鐨勯泦鏁� // getUrl(videoInfo.getVideoDetailList().get(position)); @@ -861,7 +907,7 @@ public void run() { EventBus.getDefault().post(videoInfo); EventBus.getDefault().post( - videoInfo.getVideoDetailList() + VideoUtil.videoEpisodeList .get(0)); } }, 200); @@ -926,6 +972,53 @@ }); } + /** + * 鍔犺浇鏇村鍓ч泦 + * + * @param videoId + * @param resourceId + */ + private synchronized void loadMoreEpisode(String videoId, String resourceId, int page) { + BeibeiVideoAPI.getVideoEpisodeList(ll_add_attention.getContext(), UserUtil.getUid(getContext()), resourceId, videoId, page, new + + BasicTextHttpResponseHandler() { + @Override + public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws + Exception { + if (jsonObject.optBoolean("IsPost")) { + JSONObject data = jsonObject.optJSONObject("Data"); + episodeHasMore = data.optBoolean("hasMore"); + JSONArray array = data.optJSONArray("list"); + if (array != null && array.length() > 0) {// + Gson gson = new GsonBuilder().setFieldNamingPolicy( + FieldNamingPolicy.UPPER_CAMEL_CASE) + .create(); + List<VideoDetailInfo> list = gson.fromJson(array.toString(), new TypeToken<List<VideoDetailInfo>>() { + }.getType()); + if (list != null && list.size() > 0) { + episodePage++; + VideoUtil.videoEpisodeList.addAll(list); + rv_episode.getAdapter().notifyDataSetChanged(); + } + } + } + } + + @Override + public void onStart() { + super.onStart(); + episodeLoading = true; + } + + @Override + public void onFinish() { + super.onFinish(); + episodeLoading = false; + } + }); + } + + @Override public void onStop() { super.onStop(); -- Gitblit v1.8.0