From edeef504e654415c25d3816a4609f43edc79fbb3 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 07 四月 2021 19:13:14 +0800 Subject: [PATCH] androidx兼容,新版轮播图样式 --- BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java | 159 ++++++++++++++++++++++++++++++++++------------------ 1 files changed, 104 insertions(+), 55 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java index 062d712..34b6fe8 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java @@ -1,17 +1,20 @@ package com.weikou.beibeivideo.ui.recommend; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; 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 androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -35,6 +38,7 @@ import com.lcjian.library.util.common.StorageUtils; import com.lcjian.library.util.common.StringUtils; import com.lcjian.library.widget.RatioLayout; +import com.lzj.gallery.library.views.BannerViewPager; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.umeng.analytics.MobclickAgent; import com.viewpagerindicator.CirclePageIndicator; @@ -47,11 +51,14 @@ 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.HomeClass; import com.weikou.beibeivideo.ui.category.bean.HotStar; +import com.weikou.beibeivideo.ui.media.VideoDetailActivity; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.util.BeibeiConstant; +import com.weikou.beibeivideo.util.CustomShareDialog; import com.weikou.beibeivideo.util.DimenUtils; import com.weikou.beibeivideo.util.JumpActivityUtil; import com.weikou.beibeivideo.util.ad.AdUtil; @@ -71,6 +78,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.Iterator; import java.util.List; public class RecommendFragment extends RetainViewFragment implements @@ -183,10 +191,9 @@ } } - private ViewPager vp_recommend; + private BannerViewPager vp_recommend; private LinearLayout ll_ad_containner; private RatioLayout rl_recommend_top; - private CirclePageIndicator indicator_recommend; private boolean isLoad; private View loading; private View noMoreDataView; @@ -196,9 +203,7 @@ 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); - indicator_recommend = view.findViewById(R.id.indicator_recommend); mRecommendNewAdapter.setHeaderView(view); - autoPlayBanner(vp_recommend); } @Override @@ -381,58 +386,104 @@ } } - private Runnable autoPlayBanner = null; - private synchronized void autoPlayBanner(final ViewPager viewPager) { + private void setHomeAdsData(float ratio) { + List<String> urlList = new ArrayList<>(); + for (HomeAd ad : mHomeAds) + urlList.add(ad.getPicture()); - 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); + + if (!vp_recommend.hasAdapter()) { + + int width = ScreenUtils.getScreenWidth(getContext()); + + vp_recommend.initBanner(urlList, false, ratio)//寮�鍚�3D鐢诲粖鏁堟灉 + .addPageMargin((int) (DimenUtils.dip2px(getContext(), 1) * 1.5), DimenUtils.dip2px(getContext(), 3))//鍙傛暟1page涔嬮棿鐨勯棿璺�,鍙傛暟2涓棿item璺濈杈圭晫鐨勯棿璺� +// .addPointMargin(5)//鎸囩ず鍣ㄧ偣闂磋窛 + .addStartTimer(3)//鑷姩杞挱3绉掗棿闅� +// .addPointBottom(0)//搴曢儴闂磋窛 + .addDefaultImg(R.drawable.shape_video_list_cover_placeholder) + .addRoundCorners(DimenUtils.dip2px(getContext(), 8))//鍦嗚 + .finishConfig()//杩欏彞蹇呴』鍔� + .addBannerListener(new BannerViewPager.OnClickBannerListener() { + @Override + public void onBannerClick(int position) { + if (position >= mHomeAds.size()) + return; + Intent intent = null; + if (mHomeAds.get(position).getLinkType() == 1) { + intent = new Intent(getContext(), + VideoDetailActivity.class); + intent.putExtra("video_info", mHomeAds.get(position) + .getVideo()); + } else if (mHomeAds.get(position).getLinkType() == 5) { + try { + JSONObject object = new JSONObject(mHomeAds + .get(position).getParams() + .replace("\\", "")); + String thumb = object.optString("thumb"); + String title = object.optString("title"); + String desc = object.optString("desc"); + String path = object.optString("path"); + String username = object.optString("username"); + String url = object.optString("url"); + + CustomShareDialog.Builder builder = new CustomShareDialog.Builder(getActivity()); + builder.setMessage(desc); + builder.setUrl(url); + builder.setContentImage(thumb); + builder.setTitle(title); + builder.setPath(path); + builder.setUserName(username); + builder.setNegativeButton("鍙栨秷鍒嗕韩", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + builder.create().show(); + } catch (Exception e) { + + } + } else { - viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true); + try { + intent = new Intent(getContext(), Class + .forName(mHomeAds.get(position).getClazz())); + JSONObject object = new JSONObject(mHomeAds + .get(position).getParams() + .replace("\\", "")); + if (mHomeAds.get(position).getClazz().contains("FXBrowserActivity") && object.optString("url").endsWith(".apk")) { +// startDownLoadFile(object.optString("url")); + return; + } + if (mHomeAds.get(position).getParams() != null) { + @SuppressWarnings("unchecked") + Iterator<String> its = object.keys(); + while (its.hasNext()) { + String key = its.next(); + String value = object.optString(key); + intent.putExtra(key, value); + intent.putExtra("isPush", true); + } + } + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + if (intent != null) + getContext().startActivity(intent); } - autoPlayBanner(viewPager); - } catch (Exception e) { - } - } - }; - viewPager.postDelayed(autoPlayBanner, 3000); + }); } else { - viewPager.removeCallbacks(autoPlayBanner); - viewPager.postDelayed(autoPlayBanner, 3000); + vp_recommend.notifyDataSetChanged(); } } - /** - * 璁剧疆骞垮憡鏁版嵁 - */ - private void setHomeAdsData() { - if (vp_recommend.getAdapter() == null) { - vp_recommend.setAdapter(new RecommendTopAdapter(mHomeAds, getActivity(), position == 0 ? false : true)); - indicator_recommend.setViewPager(vp_recommend); - indicator_recommend.setViewPager(vp_recommend); - } else - vp_recommend.getAdapter().notifyDataSetChanged(); - - if (mHomeAds != null && mHomeAds.size() > 0) { - rl_recommend_top.setVisibility(View.VISIBLE); - } else { - rl_recommend_top.setVisibility(View.GONE); - } - - if (vp_recommend.getChildCount() == 1) { - indicator_recommend.setVisibility(View.GONE); - } else - indicator_recommend.setVisibility(View.VISIBLE); - - } private void loadCacheData() { if (cache != null && position == 0) { @@ -478,7 +529,7 @@ if (adList != null && adList.size() > 0) { mHomeAds.clear(); mHomeAds.addAll(adList); - setHomeAdsData(); + setHomeAdsData(0.4375f); } } catch (JSONException e) { e.printStackTrace(); @@ -687,7 +738,7 @@ mHomeAds.addAll(homeAds); } - setHomeAdsData(); + setHomeAdsData(new BigDecimal(bannerSizeRate).floatValue()); if (position == 0) { @@ -850,8 +901,6 @@ @Override public void onDestroy() { super.onDestroy(); - if (autoPlayBanner != null) - vp_recommend.removeCallbacks(autoPlayBanner); } private List<HomeVideo> adList1 = new ArrayList<>(); -- Gitblit v1.8.0