From 8039a1b2fbfa3471b6f726d3e839d7867c81a84f Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 10 十月 2020 18:51:24 +0800 Subject: [PATCH] 资讯与小说集成 --- library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java | 187 ++++++++++++++++++++++------------------------ 1 files changed, 91 insertions(+), 96 deletions(-) diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java similarity index 67% rename from library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java rename to library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java index f928360..03af61a 100644 --- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java @@ -1,21 +1,19 @@ package com.yeshi.ec.library_baiducpu.fragment; -import android.content.Context; +import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.Rect; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.Gravity; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.RelativeLayout; import android.widget.TextView; -import com.androidquery.AQuery; import com.baidu.mobad.feeds.RequestParameters; import com.baidu.mobads.nativecpu.CPUAdRequest; import com.baidu.mobads.nativecpu.CpuLpFontSize; @@ -25,7 +23,7 @@ import com.lcjian.library.util.common.DimenUtils; import com.ut.device.UTDevice; import com.yeshi.ec.library_baiducpu.R; -import com.yeshi.ec.library_baiducpu.entity.NativeCPUView; +import com.yeshi.ec.library_baiducpu.adapter.BaiduCPUContentAdapter; import com.yeshi.ec.library_baiducpu.entity.SpinnerItem; import java.util.ArrayList; @@ -34,7 +32,12 @@ /** * 鐧惧害璧勮 */ -public class BaiDuNewsContentFragment extends RetainViewFragment implements NativeCPUManager.CPUAdListener { +public class BaiDuCPUContentFragment extends RetainViewFragment implements NativeCPUManager.CPUAdListener { + + public final static int VIEW_TYPE_NEWS = 1; + public final static int VIEW_TYPE_SMALLVIDEO = 2; + public final static int VIEW_TYPE_VIDEO = 3; + private final String YOUR_APP_ID = "be796ac7"; // 鍙屽紩鍙蜂腑濉啓鑷繁鐨凙PPSID private List<IBasicCPUData> nrAdList = new ArrayList<IBasicCPUData>(); private NativeCPUManager mCpuManager; @@ -45,17 +48,20 @@ private boolean isLoad; - private MyAdapter adapter; + private BaiduCPUContentAdapter adapter; private final static String TAG = "BaiDuNewsContent"; private TextView footerView; + private int viewType; - public static BaiDuNewsContentFragment newInstance(SpinnerItem spinnerItem) { - BaiDuNewsContentFragment fragment = new BaiDuNewsContentFragment(); + + public static BaiDuCPUContentFragment newInstance(SpinnerItem spinnerItem, int viewType) { + BaiDuCPUContentFragment fragment = new BaiDuCPUContentFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("item", spinnerItem); + bundle.putInt("viewType", viewType); fragment.setArguments(bundle); return fragment; } @@ -84,6 +90,8 @@ isLoad = true; if (nrAdList != null && nrAdList.size() > 0) footerView.setVisibility(View.VISIBLE); + else + footerView.setVisibility(View.GONE); loadAd(currentPage); } } @@ -107,9 +115,55 @@ footerView.setTextSize(12); } + RecyclerView.ItemDecoration itemDecoration2 = new RecyclerView.ItemDecoration() { + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + super.onDraw(c, parent, state); + } + + @Override + public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { + super.onDrawOver(c, parent, state); + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + int index = parent.getChildAdapterPosition(view); + int total = parent.getAdapter().getItemCount(); + int minWidth = DimenUtils.dipToPixels(2, view.getContext()); + if (index % 2 == 0) { + outRect.left = 0; //绗竴鍒楀乏杈硅创杈� + outRect.right = minWidth; + } else { + outRect.right = 0; //绗竴鍒楀乏杈硅创杈� + outRect.left = minWidth; + } + + if (index - 1 > 0) { + outRect.top = minWidth; + } else + outRect.top = 0; + + if (total % 2 == 0) { + if (total > 2 && (index < total - 2)) + outRect.bottom = minWidth; + else + outRect.bottom = 0; + } else { + if (total > 2 && (index < total - 1)) + outRect.bottom = minWidth; + else + outRect.bottom = 0; + } + } + }; + + private void initData() { Bundle bundle = getArguments(); SpinnerItem item = (SpinnerItem) bundle.getSerializable("item"); + viewType = bundle.getInt("viewType"); bundle.clear(); mChannelId = item.getmId(); @@ -119,9 +173,27 @@ */ mCpuManager.setLpFontSize(CpuLpFontSize.SMALL); mCpuManager.setLpDarkMode(true); - adapter = new MyAdapter(getContext()); + adapter = new BaiduCPUContentAdapter(getContext(), viewType, nrAdList); rv_news.setAdapter(adapter); - rv_news.setLayoutManager(new LinearLayoutManager(getContext())); + + if (viewType == VIEW_TYPE_SMALLVIDEO) { + RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getContext(), 2); + rv_news.setLayoutManager(layoutManager); + //缁熶竴鍒嗕负2鍒� + ((GridLayoutManager) rv_news.getLayoutManager()).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (position >= nrAdList.size()) + return 2; + else + return 1; + } + }); + rv_news.addItemDecoration(itemDecoration2); + } else { + rv_news.setLayoutManager(new LinearLayoutManager(getContext())); + } + srl_news.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { @@ -165,6 +237,13 @@ @Override public void onAdLoaded(List<IBasicCPUData> list) { onLoadFinish(); + for (int i = list.size() - 1; i >= 0; i--) { + if ("ad".equalsIgnoreCase(list.get(i).getType())) { + list.remove(i--); + break; + } + } + int start = nrAdList.size(); if (currentPage == 1) { nrAdList.clear(); @@ -209,90 +288,6 @@ @Override public void onAdStatusChanged(String s) { - } - - class MyAdapter extends RecyclerView.Adapter { - private LayoutInflater inflater; - private AQuery aq; - private View footerView; - - private final int TYPE_FOOTER = 1; - private final int TYPE_CONTENT = 2; - - - public MyAdapter(Context context) { - inflater = LayoutInflater.from(getContext()); - aq = new AQuery(context); - } - - public void setFooterView(View footerView) { - this.footerView = footerView; - } - - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - if (viewType == TYPE_CONTENT) - return new ViewHolder(inflater.inflate(R.layout.item_baidu_news, null, false)); - else - return new FooterViewHolder(footerView); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof ViewHolder) { - ViewHolder viewHolder = (ViewHolder) holder; - final IBasicCPUData nrAd = nrAdList.get(position); - final NativeCPUView cpuView = new NativeCPUView(getContext()); - if (cpuView.getParent() != null) { - ((ViewGroup) cpuView.getParent()).removeView(cpuView); - } - cpuView.setItemData(nrAd, aq); - viewHolder.rl_container.removeAllViews(); - viewHolder.rl_container.addView(cpuView); - nrAd.onImpression(viewHolder.view); - viewHolder.view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nrAd.handleClick(view); - } - }); - } - } - - @Override - public int getItemCount() { - int count = nrAdList.size(); - if (footerView != null) - count++; - return count; - } - - @Override - public int getItemViewType(int position) { - if (position >= nrAdList.size()) - return TYPE_FOOTER; - else - return TYPE_CONTENT; - } - - class ViewHolder extends RecyclerView.ViewHolder { - RelativeLayout rl_container; - View view; - - public ViewHolder(View itemView) { - super(itemView); - view = itemView; - rl_container = itemView.findViewById(R.id.native_outer_view); - } - } - - class FooterViewHolder extends RecyclerView.ViewHolder { - public FooterViewHolder(View itemView) { - super(itemView); - } - } } } -- Gitblit v1.8.0