From 399ac289f80b7a40aa4210341db6b447cacdcf14 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 09 八月 2022 17:42:33 +0800 Subject: [PATCH] 广告升级,隐私政策整改 --- app/src/main/java/com/tejia/lijin/app/ui/trends/SendCircleAdapter.java | 184 ++++++++++++++++++++++++--------------------- 1 files changed, 98 insertions(+), 86 deletions(-) diff --git a/app/src/main/java/com/tejia/lijin/app/ui/trends/SendCircleAdapter.java b/app/src/main/java/com/tejia/lijin/app/ui/trends/SendCircleAdapter.java index 0bfdb48..45fff71 100644 --- a/app/src/main/java/com/tejia/lijin/app/ui/trends/SendCircleAdapter.java +++ b/app/src/main/java/com/tejia/lijin/app/ui/trends/SendCircleAdapter.java @@ -1,21 +1,15 @@ package com.tejia.lijin.app.ui.trends; import android.app.Activity; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; -import android.graphics.Paint; +import android.graphics.Color; import android.graphics.Rect; - -import androidx.annotation.NonNull; -import androidx.viewpager.widget.ViewPager; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - +import android.graphics.drawable.Drawable; +import android.text.Html; import android.text.Layout; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.Spanned; -import android.text.style.RelativeSizeSpan; +import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -32,10 +26,6 @@ import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; -import com.viewpagerindicator.CirclePageIndicator; -import com.wpc.library.util.SystemCommon; -import com.wpc.library.util.common.DimenUtils; -import com.wpc.library.widget.RatioLayout; import com.tejia.lijin.app.R; import com.tejia.lijin.app.entity.HomeBanner; import com.tejia.lijin.app.entity.Label; @@ -47,20 +37,33 @@ import com.tejia.lijin.app.entity.trends.SendCircleImageGoods; import com.tejia.lijin.app.entity.trends.SendCircleUser; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; +import com.tejia.lijin.app.ui.recommend.GoodsDetailActivity; import com.tejia.lijin.app.ui.recommend.RecommendTopAdapter2; import com.tejia.lijin.app.util.SetLabels; import com.tejia.lijin.app.util.downutil.StringUtils; -import com.tejia.lijin.app.util.goods.GoodsDetailJumpUtil; +import com.tejia.lijin.app.util.goods.GoodsDetailListUtil; +import com.tejia.lijin.app.util.ui.GoodsRightViewHolder; +import com.tejia.lijin.app.util.ui.TextViewUtil; import com.tejia.lijin.app.util.user.UserUtil; +import com.viewpagerindicator.CirclePageIndicator; +import com.wpc.library.util.SystemCommon; +import com.wpc.library.util.common.DimenUtils; +import com.wpc.library.widget.RatioLayout; import java.util.ArrayList; import java.util.List; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager.widget.ViewPager; /** * 鍙戝湀adapter */ public class SendCircleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { + private static final String TAG = "SendCircleAdapter"; private List<HomeBanner> mBannerList; private List<SendCircleContent> mContentList; private Activity mContext; @@ -70,14 +73,30 @@ private final int TYPE_BANNER = 1; private final int TYPE_CIRCLE_CONTENT = 2; private Integer maxImgHeight = null; + private TextViewUtil.URLClickListener mUrlClickListener; private DisplayImageOptions options; + private Html.ImageGetter imageGetter = new Html.ImageGetter() { + @Override + public Drawable getDrawable(String source) { + try { + int resId = mContext.getResources().getIdentifier(source, "drawable", mContext.getPackageName()); + Drawable drawable = mContext.getResources().getDrawable(resId); + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); + return drawable; + } catch (Exception e) { + return null; + } + } + }; - public SendCircleAdapter(Activity activity, List<HomeBanner> mBannerList, List<SendCircleContent> mContentList, AdapterEventActionListener actionListener) { + + public SendCircleAdapter(Activity activity, List<HomeBanner> mBannerList, List<SendCircleContent> mContentList, AdapterEventActionListener actionListener, TextViewUtil.URLClickListener urlClickListener) { this.mContext = activity; this.mBannerList = mBannerList; this.mContentList = mContentList; + this.mUrlClickListener = urlClickListener; inflater = LayoutInflater.from(mContext); this.adapterEventActionListener = actionListener; this.options = new DisplayImageOptions.Builder() @@ -142,8 +161,9 @@ SendCircleImageGoods imageGoods = imageList.get(position).getGoods(); int goodsType = imageGoods.getGoodsType(); //璺宠浆鍟嗗搧璇︽儏 - Intent intent = GoodsDetailJumpUtil.getGoodsDetailIntent(mContext, imageGoods.getGoodsType()); - intent.putExtra("id", imageGoods.getGoodsId() + ""); + Intent intent = new Intent(mContext, GoodsDetailActivity.class); + intent.putExtra("goodsId", imageGoods.getGoodsId()); + intent.putExtra("goodsType", goodsType); intent.putExtra("from", "faquan"); mContext.startActivity(intent); } @@ -238,8 +258,9 @@ }); circleContentHolder.tv_recommend.setMaxLines(6); - //鎺ㄨ崘璇祴鍊� - circleContentHolder.tv_recommend.setText(circleContent.getTitle()); + circleContentHolder.tv_recommend.setMovementMethod(LinkMovementMethod.getInstance()); + circleContentHolder.tv_recommend.setText(TextViewUtil.getClickableHtml(Html.fromHtml(circleContent.getTitle(), imageGetter, null), mContext, Color.parseColor("#586b95"), mUrlClickListener)); + circleContentHolder.tv_recommend.post(new Runnable() { @Override @@ -248,13 +269,24 @@ if (l != null) { int lines = l.getLineCount(); if (lines > 0) { - if (l.getEllipsisCount(lines - 1) > 0) { + if (lines > circleContentHolder.tv_recommend.getMaxLines()) { circleContentHolder.iv_recommend_more.setVisibility(View.VISIBLE); } else { circleContentHolder.iv_recommend_more.setVisibility(View.GONE); } } } + } + }); + + circleContentHolder.tv_recommend.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + + if (adapterEventActionListener != null) + adapterEventActionListener.copyRecommendText(circleContent); + + return false; } }); @@ -321,10 +353,10 @@ if (circleContentHolder.rv_content.getItemDecorationCount() == 0) { - circleContentHolder.rv_content.addItemDecoration(new SpaceItemDecoration(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 2))); + circleContentHolder.rv_content.addItemDecoration(new SpaceItemDecoration(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 1))); } else { SpaceItemDecoration spaceItemDecoration = (SpaceItemDecoration) circleContentHolder.rv_content.getItemDecorationAt(0); - spaceItemDecoration.initData(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 2)); + spaceItemDecoration.initData(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 1)); } if (maxImgHeight == null) { @@ -491,7 +523,7 @@ public SendCircleContentAdapter(Context context, SendCircleContent content, int maxImgHeight, int maxImgWidth, CommentClickListener commentClickListener, ImgClickListener imgClickListener, int outPosition) { this.outPosition = outPosition; - options = new RequestOptions().skipMemoryCache(false).centerCrop().placeholder(R.drawable.ic_send_circle_default).diskCacheStrategy(DiskCacheStrategy.ALL).error(R.drawable.ic_send_circle_default); + options = new RequestOptions().skipMemoryCache(false).centerCrop().placeholder(R.color.send_circle_img_default_color).diskCacheStrategy(DiskCacheStrategy.ALL).error(R.color.send_circle_img_default_color); this.content = content; this.context = context; if (content.getImgList() != null) @@ -597,7 +629,7 @@ if (imgInfo.isLarge()) width = maxImgWidth; else { - width = (maxImgWidth - DimenUtils.dip2px(mContext, 2) * 8) / 3; + width = (maxImgWidth - DimenUtils.dip2px(mContext, 2) * 3) / 3; } height = (int) (width * ratio); params.width = width; @@ -669,48 +701,11 @@ }); } else if (holder1 instanceof GoodsViewHolder) { + + GoodsViewHolder goodsViewHolder = (GoodsViewHolder) holder1; - - final TaoBaoGoodsBrief info = goods; - String disCount; - if (info.isHasCoupon()) { - goodsViewHolder.ll_coupon_bg.setVisibility(View.VISIBLE); - disCount = "楼 " + info.getCouponPrice(); - goodsViewHolder.tv_coupon_price.setText("楼 " + info.getCouponInfo().getAmount()); - } else { - goodsViewHolder.ll_coupon_bg.setVisibility(View.GONE); - disCount = "楼 " + info.getZkPrice(); - } - - if (info.getShopType() == 11) {//澶╃尗 - goodsViewHolder.iv_shop_type.setImageResource(R.drawable.ic_tmall); - } else if (info.getShopType() == 20 || info.getShopType() == 21) { - goodsViewHolder.iv_shop_type.setImageResource(R.drawable.ic_jingdong); - } else if (info.getShopType() == 30) { - goodsViewHolder.iv_shop_type.setImageResource(R.drawable.ic_pinduoduo); - } else { - goodsViewHolder.iv_shop_type.setImageResource(R.drawable.icon); - } - - int pos = disCount.indexOf("."); - Spannable span = new SpannableString(disCount); - span.setSpan(new RelativeSizeSpan(1.54f), 1, pos > 1 ? pos : disCount.length(), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - goodsViewHolder.tv_price.setText(span); - - goodsViewHolder.tv_sales_num.setText(info.getSalesType() == 1 ? "鏈堥攢 " + info.getSalesCount() : - info.getSalesType() == 2 ? "2灏忔椂閿�閲� " + info.getSalesCount() : info.getSalesType() == 3 ? - "浠婃棩閿�閲� " + info.getSalesCount() : "鎬婚攢閲� " + info.getSalesCount()); - - - goodsViewHolder.tv_zkprice.setText("楼" + info.getZkPrice()); - goodsViewHolder.tv_zkprice.setPaintFlags(goodsViewHolder.tv_zkprice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); - - goodsViewHolder.tv_favourable.setBackgroundResource(R.drawable.shape_goods_list_price_fan); - goodsViewHolder.tv_favourable.setText(" 濂� " + info.getMoneyInfo().getShareMoney()); - goodsViewHolder.tv_favourable.setVisibility(View.GONE); - - if (info.getState() != 0) { + GoodsDetailListUtil.setGoodsDetail(context, content.getGoods(), goodsViewHolder.goodsRightViewHolder); + if (content.getGoods().getState() != 0) { goodsViewHolder.view.setOnClickListener(null); goodsViewHolder.iv_state_invalid.setVisibility(View.VISIBLE); } else { @@ -719,8 +714,9 @@ @Override public void onClick(View v) { //璺宠浆鍟嗗搧璇︽儏 - Intent intent = GoodsDetailJumpUtil.getGoodsDetailIntent(mContext, info.getGoodsType()); - intent.putExtra("id", info.getGoodsId()); + Intent intent = new Intent(mContext, GoodsDetailActivity.class); + intent.putExtra("goodsId", content.getGoods().getGoodsId()); + intent.putExtra("goodsType", content.getGoods().getGoodsType()); intent.putExtra("from", "faquan"); mContext.startActivity(intent); } @@ -764,11 +760,19 @@ holder.ll_tag.setVisibility(View.GONE); } + + holder.tv_content.setClickable(false); if (StringUtils.isNullOrEmpty(comment.getContent())) { holder.ll_content.setVisibility(View.GONE); } else { holder.ll_content.setVisibility(View.VISIBLE); - holder.tv_content.setText(comment.getContent()); + String content = comment.getContent(); + + holder.tv_content.setMovementMethod(LinkMovementMethod.getInstance()); + holder.tv_content.setFocusable(false); + holder.tv_content.setClickable(false); + holder.tv_content.setLongClickable(false); + holder.tv_content.setText(TextViewUtil.getClickableHtml(Html.fromHtml(content, imageGetter, null), context, Color.parseColor("#586b95"), mUrlClickListener)); } holder.tv_content.setMaxLines(6); @@ -787,7 +791,7 @@ if (l != null) { int lines = l.getLineCount(); if (lines > 0) { - if (l.getEllipsisCount(lines - 1) > 0) { + if (lines > holder.tv_content.getMaxLines()) { holder.iv_comment_more.setVisibility(View.VISIBLE); } else { @@ -795,6 +799,14 @@ } } } + } + }); + + holder.tv_content.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + commentClickListener.onCopyClick(cposition); + return false; } }); @@ -917,23 +929,15 @@ class GoodsViewHolder extends RecyclerView.ViewHolder { private View view; - //鍟嗗搧淇℃伅鎺т欢 - private TextView tv_price, tv_zkprice, tv_sales_num, tv_coupon_price, tv_favourable; - private LinearLayout ll_coupon_bg; + private GoodsRightViewHolder goodsRightViewHolder; //杩囨湡鏍囪瘑 - private ImageView iv_state_invalid, iv_shop_type; + private ImageView iv_state_invalid; public GoodsViewHolder(View view) { super(view); this.view = view; - tv_price = view.findViewById(R.id.tv_price); - tv_zkprice = view.findViewById(R.id.tv_zkprice); - tv_sales_num = view.findViewById(R.id.tv_sales_num); - tv_coupon_price = view.findViewById(R.id.tv_coupon_price1); - tv_favourable = view.findViewById(R.id.tv_favourable); - ll_coupon_bg = view.findViewById(R.id.ll_coupon_bg1); iv_state_invalid = view.findViewById(R.id.iv_state_invalid); - iv_shop_type = view.findViewById(R.id.iv_shop_type); + goodsRightViewHolder = new GoodsRightViewHolder(view); } } } @@ -968,7 +972,7 @@ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildLayoutPosition(view); if (position < largeImgCount) { - outRect.bottom = space * 3; + outRect.bottom = space * 6; if (position == 0) outRect.top = 0; } else if (position < largeImgCount + smallImageCount) { @@ -987,14 +991,22 @@ outRect.left = space; outRect.right = space; } + //鍒ゆ柇鏄惁涓烘渶鍚庝竴琛� + int currentRow = cposition / lineNum; + int totalRow = smallImageCount % lineNum == 0 ? smallImageCount / lineNum : smallImageCount / lineNum + 1; + if (currentRow + 1 == totalRow) { + outRect.bottom = space * 6; + } + + } else if (position < largeImgCount + smallImageCount + goodsCount) { - outRect.bottom = space; + outRect.bottom = space * 3; outRect.top = 0; outRect.left = 0; outRect.right = 0; } else if (position < largeImgCount + smallImageCount + goodsCount + commentCount) { - outRect.bottom = space * 2; - outRect.top = space * 2; + outRect.bottom = space * 3; + outRect.top = space * 3; int cposition = position - (largeImgCount + smallImageCount + goodsCount + commentCount); if (cposition == 0 && goodsCount > 0) outRect.top = 0; -- Gitblit v1.8.0