From 1981dee5aec45793d3c4ebdbc4e637528c71b3c5 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 03 二月 2021 19:20:47 +0800 Subject: [PATCH] 'PPTV' --- BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java | 141 ++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 128 insertions(+), 13 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java index 2fe57f5..0fc0f0e 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java @@ -48,6 +48,7 @@ import com.umeng.socialize.media.UMWeb; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; +import com.weikou.beibeivideo.BeibeiVideoApplication; import com.weikou.beibeivideo.db.WatchHistoryTable; import com.weikou.beibeivideo.entity.Follow; import com.weikou.beibeivideo.entity.Play; @@ -62,6 +63,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 +73,7 @@ import org.json.JSONArray; import org.json.JSONObject; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -100,6 +103,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 +166,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 +304,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); } @@ -402,6 +443,12 @@ .optString("Url")); info.setParams(jsonObject.getJSONObject("Data") .optString("Params")); + info.setAid(jsonObject.getJSONObject("Data") + .optString("Aid")); + info.setVid(jsonObject.getJSONObject("Data") + .optString("Vid")); + info.setCode(jsonObject.getJSONObject("Data") + .optString("Code")); Play play = new Play(); play.setPlayUrl(info); EventBus.getDefault().post(play); @@ -476,7 +523,22 @@ }); } else { - fl_native_ad1.setVisibility(View.GONE); + //鍔犺浇绌垮北鐢� + new ExpressAdManager(AdUtil.AD_TYPE.csj, getContext()).loadVideoDetailPlayerBottomAd(new ExpressAdManager.IAdLoadListener() { + @Override + public void onSuccess(List<ExpressAdContainer> adList) { + if (adList != null && adList.size() > 0) { + ExpressAdManager.renderAndFillAd(getActivity(), adList.get(0), fl_native_ad1, new ExpressAdManager.IAdEventListener() { + @Override + public void closeAd(ExpressAdContainer ad) { + fl_native_ad1.removeAllViews(); + } + }); + } else { + fl_native_ad1.setVisibility(View.GONE); + } + } + }); } } }); @@ -582,7 +644,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); @@ -778,6 +840,11 @@ .toString(), new TypeToken<VideoInfo>() { }.getType()); + if (videoInfo != null) { + + VideoUtil.saveVideoEpisodeList(BeibeiVideoApplication.application,videoInfo.getVideoDetailList(),false); + + } // 闄勫姞瀛楁 if (jsonObject.optJSONObject("Extra1") != null) { if (jsonObject.optJSONObject("Extra1").optJSONObject("Attention") != null) { @@ -795,18 +862,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.saveVideoEpisodeList(BeibeiVideoApplication.application,videoInfo.getVideoDetailList(),false); + EventBus.getDefault().post(videoInfo); int position = 0; // boolean isFromWatchHistory = false; @@ -824,10 +893,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)); @@ -842,7 +910,7 @@ public void run() { EventBus.getDefault().post(videoInfo); EventBus.getDefault().post( - videoInfo.getVideoDetailList() + VideoUtil.videoEpisodeList .get(0)); } }, 200); @@ -907,6 +975,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.saveVideoEpisodeList(BeibeiVideoApplication.application,list,true); + 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