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/recommend/RecommendFragment.java | 283 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 181 insertions(+), 102 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java index ba92779..3797b3f 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java @@ -8,13 +8,16 @@ import android.os.Bundle; import android.provider.Settings; import android.support.v4.app.Fragment; +import android.support.v4.view.ViewPager; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import com.bumptech.glide.Glide; @@ -29,33 +32,32 @@ import com.lcjian.library.util.cache.DiskLruCache; import com.lcjian.library.util.common.StorageUtils; import com.lcjian.library.util.common.StringUtils; +import com.lcjian.library.widget.RatioLayout; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; -import com.qq.e.ads.cfg.DownAPPConfirmPolicy; -import com.qq.e.ads.cfg.VideoOption; -import com.qq.e.ads.nativ.ADSize; -import com.qq.e.ads.nativ.NativeExpressAD; -import com.qq.e.ads.nativ.NativeExpressADView; -import com.qq.e.comm.util.AdError; import com.umeng.analytics.MobclickAgent; +import com.viewpagerindicator.LinePageIndicator; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; +import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.entity.HomeAd; import com.weikou.beibeivideo.entity.HomeType; import com.weikou.beibeivideo.entity.HomeTypeItem; import com.weikou.beibeivideo.entity.HomeVideo; +import com.weikou.beibeivideo.entity.JumpDetail; import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.entity.VideoType; import com.weikou.beibeivideo.entity.ad.ExpressAdContainer; -import com.weikou.beibeivideo.entity.recommend.RecommendContent; +import com.weikou.beibeivideo.entity.recommend.HomeClass; import com.weikou.beibeivideo.ui.category.bean.HotStar; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.DimenUtils; +import com.weikou.beibeivideo.util.JumpActivityUtil; +import com.weikou.beibeivideo.util.ad.AdUtil; import com.weikou.beibeivideo.util.ad.ExpressAdManager; import com.weikou.beibeivideo.util.ui.DividerItemDecoration; -import com.yeshi.buwanshequ.R; -import com.ysh.wpc.appupdate.GoReview; -import com.ysh.wpc.appupdate.service.DownLoadFileService; +import com.yeshi.appupdate.GoReview; +import com.yeshi.appupdate.service.DownLoadFileService; import org.apache.http.Header; import org.json.JSONArray; @@ -78,7 +80,7 @@ private RecommendNewAdapter mRecommendNewAdapter; - private List<HomeType> mHomeTypes; + private List mHomeTypes; private List<HomeAd> mHomeAds; @@ -100,10 +102,10 @@ boolean isReview; - private List<RecommendContent> contentList; + private Context context; - public static Fragment newInstance(VideoType type, String position) { - if (Integer.parseInt(position) < 2) { + public static Fragment newInstance(HomeClass type, String position) { + if ("recommend".equalsIgnoreCase(type.getDataType())) { RecommendFragment fragment = new RecommendFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("videotype", type); @@ -123,14 +125,19 @@ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + context = getActivity().getApplicationContext(); try { cache = DiskLruCache.open( - new File(StorageUtils.getCacheDirectory(getContext()) - .toString(), "http"), getVersionNum(getContext()), + new File(StorageUtils.getCacheDirectory(context) + .toString(), "http"), getVersionNum(context), 1, 1024 * 1024); } catch (IOException e) { e.printStackTrace(); } + + + + } @Override @@ -163,27 +170,33 @@ //濉厖鏁版嵁 - private void setContent() { - contentList.clear(); - contentList.add(new RecommendContent(RecommendContent.TYPE_BANNER, mHomeAds)); - if (mHomeTypes != null && mHomeTypes.size() > 0) - for (HomeType ht : mHomeTypes) { - contentList.add(new RecommendContent(RecommendContent.TYPE_HOMETYPE, ht)); + private void setAdContent() { + //娌℃湁骞垮憡锛屾坊鍔犲箍鍛� + if (position != 0)//鍙湁鎺ㄨ崘鎵嶆湁骞垮憡 + return; + if (mRecommendNewAdapter.getAdCount() == 0) { + if (adList != null && adList.size() > 0) { + mRecommendNewAdapter.addAdToPosition(adList.get(0), 3); } - else { - contentList.add(RecommendContent.createHomeType(null)); + mRecommendNewAdapter.notifyDataSetChanged(); } - //濉厖骞垮憡 - if (adList != null && adList.size() > 0) - contentList.add(2, RecommendContent.createAd(adList.get(0))); - else - contentList.add(2, RecommendContent.createAd(null)); + } - if (adList != null && adList.size() > 1) { - contentList.add(RecommendContent.createAd(adList.get(1))); - } else { - contentList.add(RecommendContent.createAd(null)); - } + private ViewPager vp_recommend; + private LinearLayout ll_ad_containner; + private RatioLayout rl_recommend_top; + private LinePageIndicator indicator_recommend; + + private void initHomeAd() { + View view = LayoutInflater.from(getContext()).inflate(R.layout.recommend_top, null); + vp_recommend = view.findViewById(R.id.vp_recommend); + ll_ad_containner = view.findViewById(R.id.ll_ad_containner); + rl_recommend_top = view.findViewById(R.id.rl_recommend_top); + if (position > 0) + rl_recommend_top.setRatio(0.56f); + indicator_recommend = view.findViewById(R.id.indicator_recommend); + mRecommendNewAdapter.setHeaderView(view); + autoPlayBanner(vp_recommend); } @Override @@ -192,7 +205,7 @@ tv_no_network.setOnClickListener(this); // 鍏憡 tv_notice = contentView.findViewById(R.id.include_notice); - mChangeHelper = new ConnectivityChangeHelper(tv_no_network.getContext(), + mChangeHelper = new ConnectivityChangeHelper(context, new OnConnectivityChangeListener() { @Override public void onNetworkUnAvailable() { @@ -225,15 +238,15 @@ } }); - int width = (int) SystemCommon.getScreenWidth(tv_no_network.getContext()); + int width = (int) SystemCommon.getScreenWidth(context); rl_recommend = contentView.findViewById(R.id.rl_recommend); rv_recommend = contentView .findViewById(R.id.rv_recommend); - rv_recommend.setLayoutManager(new LinearLayoutManager(rv_recommend.getContext())); + rv_recommend.setLayoutManager(new LinearLayoutManager(context)); DividerItemDecoration decoration = new DividerItemDecoration(); - decoration.setSize(DimenUtils.dip2px(rv_recommend.getContext(), 6)); + decoration.setSize(DimenUtils.dip2px(rv_recommend.getContext(), 0)); rv_recommend.addItemDecoration(decoration); rl_recommend.setClickable(false); @@ -244,7 +257,7 @@ position = (Integer) getArguments().get("position"); - isReview = GoReview.getGoReview(getContext(), BeibeiConstant.GO_REVIEW_KEY); + isReview = GoReview.getGoReview(context, BeibeiConstant.GO_REVIEW_KEY); mHomeTypes = new ArrayList<HomeType>(); @@ -262,15 +275,15 @@ Log.i("mResult", "onCreate---setOnRefreshListener---loadAD1"); } }); - contentList = new ArrayList<>(); - //鍔犺浇缂撳瓨鏁版嵁 - loadCacheData(); - setContent(); - - - mRecommendNewAdapter = new RecommendNewAdapter(getActivity(), contentList); + if (mHomeTypes == null) + mHomeTypes = new ArrayList(); + mRecommendNewAdapter = new RecommendNewAdapter(getActivity(), mHomeTypes); rv_recommend.setAdapter(mRecommendNewAdapter); + setAdContent(); + initHomeAd(); + //鍔犺浇缂撳瓨鏁版嵁 +// loadCacheData(); rv_recommend.postDelayed(new Runnable() { @Override @@ -298,43 +311,85 @@ private void loadAd() { try { - ExpressAdManager recommendAdManager = new ExpressAdManager(ExpressAdManager.SOURCE_GDT, getContext()); + ExpressAdManager recommendAdManager = new ExpressAdManager(AdUtil.AD_TYPE.csj, context); recommendAdManager.loadRecommendLargeAd(new ExpressAdManager.IAdLoadListener() { @Override - public void onSuccess(List<ExpressAdContainer> adList) { - //濉厖骞垮憡浣� - RecommendFragment.this.adList = adList; - boolean hasAd = false; - int p = 0; - for (RecommendContent content : contentList) { - if (content.getType() == RecommendContent.TYPE_AD && content.getAd() == null) { - hasAd = true; - break; - } - p++; - } - - int adP = 0; - for (int i = 0; i < contentList.size(); i++) { - //濉厖骞垮憡鏁版嵁 - if (contentList.get(i).getType() == RecommendContent.TYPE_AD && contentList.get(i).getAd() == null) { - //濉厖骞垮憡鏁版嵁 - if (adP < RecommendFragment.this.adList.size()) { - hasAd = true; - contentList.get(i).setAd(RecommendFragment.this.adList.get(adP++)); + public void onSuccess(final List<ExpressAdContainer> adList) { + RecommendFragment.this.adList = new ArrayList<>(); + for (ExpressAdContainer ad : adList) { + ExpressAdManager.renderAd(getActivity(), ad, new ExpressAdManager.IAdRenderListener() { + @Override + public void onRenderSuccess(List<ExpressAdContainer> adList1) { + RecommendFragment.this.adList.add(adList1.get(0)); + if (RecommendFragment.this.adList.size() == adList.size()) { + if (mRecommendNewAdapter.getAdCount() == 0 && mHomeTypes.size() > 0) {//娌℃湁濉厖骞垮憡 + setAdContent(); + } + } } - } - } - //鏈夊~鍏呭箍鍛� - if (hasAd) { - mRecommendNewAdapter.notifyDataSetChanged(); + @Override + public void onRenderFail(List<ExpressAdContainer> adList) { + + } + }, new ExpressAdManager.IAdEventListener() { + @Override + public void closeAd(ExpressAdContainer ad) { + mRecommendNewAdapter.removeAd(ad); + } + }); } } }); } catch (Exception e) { } + } + + private Runnable autoPlayBanner = null; + + private synchronized void autoPlayBanner(final ViewPager viewPager) { + + if (autoPlayBanner == null) { + autoPlayBanner = new Runnable() { + @Override + public void run() { + try { + if (viewPager.getAdapter() != null && viewPager.getAdapter().getCount() > 0) { + if (viewPager.getCurrentItem() >= viewPager.getAdapter().getCount() - 1) { + viewPager.setCurrentItem(0, true); + } else { + viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true); + } + } + autoPlayBanner(viewPager); + } catch (Exception e) { + + } + } + }; + viewPager.postDelayed(autoPlayBanner, 3000); + } else { + viewPager.removeCallbacks(autoPlayBanner); + viewPager.postDelayed(autoPlayBanner, 3000); + } + } + + /** + * 璁剧疆骞垮憡鏁版嵁 + */ + private void setHomeAdsData() { + if (vp_recommend.getAdapter() == null) { + vp_recommend.setAdapter(new RecommendTopAdapter(mHomeAds, getActivity(), position == 0 ? false : true)); + int width = (int) SystemCommon.getScreenWidth(getContext()); + indicator_recommend.setScreenWidth(width); + indicator_recommend.setSelectedColor(vp_recommend.getContext().getResources() + .getColor(R.color.yellow)); + indicator_recommend.setUnselectedColor(0xbbADA9A7); + indicator_recommend.setViewPager(vp_recommend); + indicator_recommend.setViewPager(vp_recommend); + } else + vp_recommend.getAdapter().notifyDataSetChanged(); } private void loadCacheData() { @@ -381,7 +436,7 @@ if (adList != null && adList.size() > 0) { mHomeAds.clear(); mHomeAds.addAll(adList); -// mRecommendNewAdapter.notifyDataSetChanged(); + setHomeAdsData(); } } catch (JSONException e) { e.printStackTrace(); @@ -413,7 +468,7 @@ // mRecommendNewAdapter.notifyDataSetChanged(); } } - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } finally { if (snapshot != null) { @@ -427,7 +482,7 @@ private void getAdRecommendRight() { - BeibeiVideoAPI.getAdRecommendRight(rv_recommend.getContext(), new BasicTextHttpResponseHandler() { + BeibeiVideoAPI.getAdRecommendRight(context, new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.getBoolean("IsPost")) { @@ -437,7 +492,7 @@ final String linkType = jsonObject.optJSONObject("Data").optString("linkType"); final String webLink = jsonObject.optJSONObject("Data").optString("webLink"); final String downloadLink = jsonObject.optJSONObject("Data").optString("downloadLink"); - Glide.with(rv_recommend.getContext()).load(img).into(iv_right_ad); + Glide.with(context).load(img).into(iv_right_ad); if (mstatus.equalsIgnoreCase("0")) { iv_right_ad.setVisibility(View.GONE); } else { @@ -448,24 +503,24 @@ @Override public void onClick(View v) { if (linkType.equalsIgnoreCase("0")) { - Intent intent = new Intent(rv_recommend.getContext(), BrowserActivity.class); + Intent intent = new Intent(context, BrowserActivity.class); intent.putExtra("url", webLink); startActivity(intent); } else { try { - Intent intent = new Intent(rv_recommend.getContext(), + Intent intent = new Intent(context, DownLoadFileService.class); - getContext().stopService(intent); + context.stopService(intent); } catch (Exception e) { } try { Bundle bundle = new Bundle(); bundle.putString("downloadurl", downloadLink); - Intent intent = new Intent(rv_recommend.getContext(), + Intent intent = new Intent(context, DownLoadFileService.class); intent.putExtras(bundle); - getContext().startService(intent); + context.startService(intent); } catch (Exception e) { } } @@ -506,10 +561,10 @@ private String content; private void getNotice() { - SharedPreferences preferences = tv_no_network.getContext().getSharedPreferences( + SharedPreferences preferences = context.getSharedPreferences( "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); - BeibeiVideoAPI.getNotice(tv_no_network.getContext(), uid, + BeibeiVideoAPI.getNotice(context, uid, new BasicTextHttpResponseHandler() { @Override @@ -519,23 +574,34 @@ if (jsonObject.getBoolean("IsPost")) { JSONObject obj = jsonObject.optJSONObject("Data"); content = obj.optString("Content"); + JSONObject jumpDetailJson = obj.optJSONObject("jumpDetail"); + JumpDetail jumpDetail = null; + if (jumpDetailJson != null) { + jumpDetail = new Gson().fromJson(jumpDetailJson.toString(), JumpDetail.class); + } + JSONObject paramsJson = obj.optJSONObject("Params"); + com.alibaba.fastjson.JSONObject params = null; + if (paramsJson != null) + params = com.alibaba.fastjson.JSONObject.parseObject(paramsJson.toString()); + + + final JumpDetail fJumpDetail = jumpDetail; + final com.alibaba.fastjson.JSONObject fParams = params; + // 0-涓嶆樉绀� // 1-鏄剧ず final String url = obj.optString("Url"); + if (position > 0)//鍙湁绗竴椤垫墠鏄剧ず閫氱煡 + content = null; if (!StringUtils.isBlank(content)) { tv_notice.setVisibility(View.VISIBLE); tv_notice.setText(content); if (!StringUtils.isBlank(url)) { tv_notice .setOnClickListener(new OnClickListener() { - @Override public void onClick(View v) { - startActivity(new Intent( - v.getContext(), - BrowserActivity.class) - .putExtra("url", url)); - + JumpActivityUtil.jumpPage(getActivity(), fJumpDetail, fParams); } }); } @@ -549,10 +615,10 @@ } private void getHomeAd() { - SharedPreferences preferences = tv_no_network.getContext().getSharedPreferences( + SharedPreferences preferences = context.getSharedPreferences( "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); - BeibeiVideoAPI.getHomeAd(tv_no_network.getContext(), uid, type.getId(), + BeibeiVideoAPI.getHomeAd(context, uid, type.getId(), new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, @@ -573,6 +639,8 @@ mHomeAds.clear(); mHomeAds.addAll(homeAds); } + + setHomeAdsData(); if (position == 0) { @@ -598,10 +666,10 @@ private void getHomeType() { - SharedPreferences preferences = tv_no_network.getContext().getSharedPreferences( + SharedPreferences preferences = context.getSharedPreferences( "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); - BeibeiVideoAPI.getHomeType(getContext(), uid, type.getId(), + BeibeiVideoAPI.getHomeType(context, uid, type.getId(), new BasicTextHttpResponseHandler() { @Override @@ -609,10 +677,7 @@ Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.getBoolean("IsPost")) { - if (mHomeTypes != null || mHomeTypes.size() > 0) { - mHomeTypes.clear(); - } - Gson gson = new GsonBuilder().setFieldNamingPolicy( + Gson gson = new GsonBuilder().setVersion(1.0).setFieldNamingPolicy( FieldNamingPolicy.UPPER_CAMEL_CASE) .create(); List<HomeType> homeTypes = new ArrayList<HomeType>(); @@ -654,11 +719,23 @@ } } type.setItemTypeList(itemList); - homeTypes.add(type); + if (!type.getName().equalsIgnoreCase("缇庡コ")) + homeTypes.add(type); } + + //娓呴櫎鑰佹暟鎹� + mHomeTypes.clear(); + mRecommendNewAdapter.removeAllAd(); mHomeTypes.addAll(homeTypes); //濉厖鏁版嵁 - setContent(); + setAdContent(); + if (position == 0) { + DiskLruCache.Editor editor = cache + .edit(getKey("getHomeType") + type.getId()); + editor.set(0, jsonObject.getJSONObject("Data") + .getJSONArray("data").toString()); + editor.commit(); + } mRecommendNewAdapter.notifyDataSetChanged(); } } @@ -697,6 +774,8 @@ @Override public void onDestroy() { super.onDestroy(); + if (autoPlayBanner != null) + vp_recommend.removeCallbacks(autoPlayBanner); } private List<HomeVideo> adList1 = new ArrayList<>(); @@ -705,10 +784,10 @@ List<HotStar> hotStars = new ArrayList<>(); private void getHotStars() { - SharedPreferences preferences = tv_no_network.getContext().getSharedPreferences( + SharedPreferences preferences = context.getSharedPreferences( "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); - BeibeiVideoAPI.getRecommendStars(tv_no_network.getContext(), uid, + BeibeiVideoAPI.getRecommendStars(context, uid, new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, -- Gitblit v1.8.0