package com.tejia.lijin.app.ui.recommend.singleshare;
|
|
import android.content.Context;
|
import android.graphics.Bitmap;
|
import android.graphics.Typeface;
|
import android.graphics.drawable.Drawable;
|
import android.os.Bundle;
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import android.text.Spannable;
|
import android.text.SpannableString;
|
import android.text.Spanned;
|
import android.text.style.RelativeSizeSpan;
|
import android.text.style.StyleSpan;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.request.target.SimpleTarget;
|
import com.bumptech.glide.request.transition.Transition;
|
import com.wpc.library.RetainViewFragment;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.wpc.library.util.common.StringUtils;
|
import com.wpc.library.widget.RatioLayout;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.entity.share.SingleGoodsShareInfo;
|
import com.tejia.lijin.app.util.Constant;
|
import com.tejia.lijin.app.util.GlideRoundTransform;
|
import com.tejia.lijin.app.util.ImageUtil;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.tejia.lijin.app.util.zxing.ZxingUtils;
|
|
|
/**
|
* 单图内容
|
*/
|
public class SingleGoodsInfoFragment extends RetainViewFragment implements View.OnClickListener {
|
|
private TextView tv_goods_title,
|
tv_after_coupon_price, tv_normal_price, tv_sale_num,
|
tv_coupon_price,
|
tv_tlj_single, tv_free_shipping, tv_invite_code, tv_discount;
|
private ImageView iv_share_img, iv_qr_code,
|
iv_qr_code_center_img, iv_notify;
|
|
private FrameLayout fl_qr,
|
fl_free_shipping, fl_notify;
|
private LinearLayout ll_discount;
|
|
private RatioLayout rl_qr;
|
|
private LinearLayout ll_imgs, ll_share_single_img, ll_coupon, ll_invite_code;
|
private SingleGoodsShareInfo shareInfo;//分享信息
|
|
private String selectedImgUrl;//单图选中图片链接
|
|
//是否显示邀请码
|
private boolean inviteCodeShow = true;
|
|
|
/**
|
* 设置显示的图片
|
*
|
* @param img
|
*/
|
public void setSelectedImgUrl(String img) {
|
if (img != null) {
|
selectedImgUrl = img;
|
Glide.with(this).load(img).placeholder(R.drawable.ic_goods_default).into(iv_share_img);
|
}
|
}
|
|
public String getSelectedImgUrl() {
|
return selectedImgUrl;
|
}
|
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_share_single_img;
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
Bundle bundle = this.getArguments();
|
shareInfo = (SingleGoodsShareInfo) bundle.getSerializable("shareInfo");
|
inviteCodeShow = bundle.getBoolean("inviteCodeShow", true);
|
initView(contentView);
|
initListener(contentView);
|
}
|
|
public void setInviteCodeShowState(boolean show) {
|
if (ll_invite_code == null)
|
return;
|
if (show) {
|
ll_invite_code.setVisibility(View.VISIBLE);
|
} else
|
ll_invite_code.setVisibility(View.GONE);
|
|
}
|
|
private void initView(View contentView) {
|
tv_goods_title = contentView.findViewById(R.id.tv_goods_title);
|
tv_after_coupon_price = contentView.findViewById(R.id.tv_after_coupon_price);
|
tv_normal_price = contentView.findViewById(R.id.tv_normal_price);
|
tv_sale_num = contentView.findViewById(R.id.tv_sale_num);
|
tv_coupon_price = contentView.findViewById(R.id.tv_coupon_price1);
|
ll_coupon = contentView.findViewById(R.id.ll_coupon_bg1);
|
tv_tlj_single = contentView.findViewById(R.id.tv_tlj_single);
|
iv_share_img = contentView.findViewById(R.id.iv_share_img);
|
iv_qr_code = contentView.findViewById(R.id.iv_qr_code);
|
iv_qr_code_center_img = contentView.findViewById(R.id.iv_qr_code_center_img);
|
ll_imgs = contentView.findViewById(R.id.ll_imgs);
|
ll_share_single_img = contentView.findViewById(R.id.ll_share_single_img);
|
fl_notify = contentView.findViewById(R.id.fl_notify);
|
fl_qr = contentView.findViewById(R.id.fl_qr);
|
fl_free_shipping = contentView.findViewById(R.id.fl_free_shipping);
|
tv_free_shipping = contentView.findViewById(R.id.tv_free_shipping);
|
rl_qr = contentView.findViewById(R.id.rl_qr);
|
ll_invite_code = contentView.findViewById(R.id.ll_invite_code);
|
tv_discount = contentView.findViewById(R.id.tv_discount);
|
ll_discount = contentView.findViewById(R.id.ll_discount);
|
|
iv_notify = contentView.findViewById(R.id.iv_notify);
|
tv_invite_code = contentView.findViewById(R.id.tv_invite_code);
|
|
tv_tlj_single.setVisibility(StringUtils.isEmpty(shareInfo.getTljId()) ? View.GONE : View.VISIBLE);
|
tv_tlj_single.setText(StringUtils.isEmpty(shareInfo.getTljId()) ? "" : shareInfo.getSpreadMoney());
|
Glide.with(this).load(shareInfo.getGoodsInfo().getImgList().get(0)).placeholder(R.drawable.ic_goods_default).into(iv_share_img);
|
selectedImgUrl = shareInfo.getGoodsInfo().getImgList().get(0);
|
//初始化单图的图片选择
|
for (int i = 0; i < shareInfo.getGoodsInfo().getImgList().size(); i++) {
|
View view = LayoutInflater.from(getContext()).inflate(R.layout.item_share_select_img, null);
|
ImageView iv_share_select_img = view.findViewById(R.id.iv_share_img);
|
FrameLayout fl_select_img = view.findViewById(R.id.fl_select_img);
|
final ImageView iv_select = view.findViewById(R.id.iv_share_img_selected);
|
final String imgUrl = shareInfo.getGoodsInfo().getImgList().get(i);
|
iv_select.setTag(imgUrl);
|
Glide.with(this).load(imgUrl).placeholder(R.drawable.ic_goods_default).into(iv_share_select_img);
|
iv_share_select_img.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
for (int j = 0; j < ll_imgs.getChildCount(); j++) {
|
View view1 = ll_imgs.getChildAt(j);
|
view1.findViewById(R.id.iv_share_img_selected).setVisibility(View.GONE);
|
}
|
iv_select.setVisibility(View.VISIBLE);
|
// ImageLoader.getInstance().displayImage(imgUrl, iv_share_img, options);
|
selectedImgUrl = iv_select.getTag() + "";
|
Glide.with(getContext()).load(imgUrl).placeholder(R.drawable.ic_goods_default).into(iv_share_img);
|
}
|
});
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT
|
, ViewGroup.LayoutParams.WRAP_CONTENT);
|
if (i == 0) {
|
iv_select.setVisibility(View.VISIBLE);
|
params.leftMargin = DimenUtils.dip2px(getContext(), 15);
|
} else if (i == shareInfo.getGoodsInfo().getImgList().size() - 1) {
|
iv_select.setVisibility(View.GONE);
|
params.leftMargin = DimenUtils.dip2px(getContext(), 10);
|
params.rightMargin = DimenUtils.dip2px(getContext(), 15);
|
} else {
|
iv_select.setVisibility(View.GONE);
|
params.leftMargin = DimenUtils.dip2px(getContext(), 10);
|
}
|
fl_select_img.setLayoutParams(params);
|
ll_imgs.addView(view);
|
}
|
ImageUtil.showImageFace1(getContext(), shareInfo.getGoodsInfo().getTitle(), shareInfo.getGoodsInfo().getShopType(), tv_goods_title);
|
String price = "";
|
int startP;
|
|
|
if (shareInfo.getGoodsInfo().getGoodsType() == Constant.GOODS_TYPE_VIP) {
|
price = "折后价 ¥ " + shareInfo.getGoodsInfo().getCouponPrice();
|
startP = 5;
|
ll_coupon.setVisibility(View.GONE);
|
tv_normal_price.setVisibility(View.VISIBLE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame);
|
ll_discount.setVisibility(View.VISIBLE);
|
tv_discount.setText(shareInfo.getGoodsInfo().getDiscount());
|
} else {
|
ll_discount.setVisibility(View.GONE);
|
if (shareInfo.getGoodsInfo().isHasCoupon()) {//有优惠券
|
price = "券后价 ¥ " + shareInfo.getGoodsInfo().getCouponPrice();
|
startP = 5;
|
tv_coupon_price.setText("¥ " + shareInfo.getGoodsInfo().getCouponInfo().getAmount());
|
ll_coupon.setVisibility(View.VISIBLE);
|
tv_normal_price.setVisibility(View.VISIBLE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame);
|
} else {
|
price = "¥ " + shareInfo.getGoodsInfo().getZkPrice();
|
startP = 1;
|
ll_coupon.setVisibility(View.GONE);
|
tv_normal_price.setVisibility(View.INVISIBLE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame_no_coupon);
|
}
|
}
|
Spannable span = new SpannableString(price);
|
span.setSpan(new RelativeSizeSpan(1.3f), startP, price.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
span.setSpan(new StyleSpan(Typeface.BOLD), startP, price.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
tv_after_coupon_price.setText(span);
|
setQRCode(shareInfo.getWxErCode());//设置二维码
|
if (shareInfo.getGoodsInfo().getShopType() == 21) {
|
fl_free_shipping.setVisibility(View.VISIBLE);
|
tv_free_shipping.setText("自营");
|
} else {
|
if (shareInfo.getGoodsInfo().isBaoyou()) {
|
fl_free_shipping.setVisibility(View.VISIBLE);
|
tv_free_shipping.setText("包邮");
|
} else {
|
fl_free_shipping.setVisibility(View.GONE);
|
}
|
}
|
|
|
iv_qr_code.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
Context context = null;
|
if (iv_qr_code != null && iv_qr_code.getContext() != null) {
|
context = iv_qr_code.getContext();
|
}
|
if (context == null)
|
return;
|
String portrait = iv_qr_code.getContext().getSharedPreferences("user", Context.MODE_PRIVATE).getString("portrait", "");
|
Glide.with(getContext()).load(portrait).transform(new GlideRoundTransform(
|
getContext(), 4)).into(iv_qr_code_center_img);
|
}
|
}, 200);
|
|
tv_normal_price.setText(shareInfo.getGoodsInfo().getPriceName() + " ¥" + shareInfo.getGoodsInfo().getZkPrice());
|
|
String saleType = shareInfo.getGoodsInfo().getSalesType() == 1 ? "月销 " : "总销量 ";
|
tv_sale_num.setText(saleType + shareInfo.getGoodsInfo().getSalesCount());
|
if (shareInfo.getGoodsInfo().getGoodsType() == Constant.GOODS_TYPE_VIP) {
|
tv_sale_num.setVisibility(View.GONE);
|
}
|
|
Glide.with(this).load(shareInfo.getNotifyPictureNew()).into(iv_notify);
|
|
tv_invite_code.setText("邀请码:" + UserUtil.getInviteCode(getContext()));
|
fl_notify.post(new Runnable() {
|
@Override
|
public void run() {
|
int width = fl_notify.getWidth();
|
ViewGroup.LayoutParams params = rl_qr.getLayoutParams();
|
params.width = width / 3;
|
rl_qr.setLayoutParams(params);
|
|
ViewGroup.LayoutParams nparams = iv_notify.getLayoutParams();
|
nparams.width = params.width * 190 / 100;
|
params.height = params.width;
|
iv_notify.setLayoutParams(nparams);
|
|
ViewGroup.LayoutParams fparams = fl_notify.getLayoutParams();
|
fparams.height = params.width;
|
fl_notify.setLayoutParams(fparams);
|
|
|
}
|
});
|
|
if (inviteCodeShow)
|
ll_invite_code.setVisibility(View.VISIBLE);
|
else
|
ll_invite_code.setVisibility(View.GONE);
|
}
|
|
/*****************设置二维码******/
|
public void setQRCode(String clickUrl) {
|
//二维码
|
Bitmap QRCode = ZxingUtils.createBitmap(clickUrl, DimenUtils.dip2px(getContext(), 85));
|
Bitmap QRCodeMul = ZxingUtils.createBitmap(clickUrl, DimenUtils.dip2px(getContext(), 85));
|
iv_qr_code.setImageBitmap(QRCode);
|
iv_qr_code.setScaleType(ImageView.ScaleType.FIT_XY);
|
}
|
|
|
private void initListener(View contentView) {
|
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
|
}
|
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
}
|
}
|
|
public void getViewBp(final ViewClipListener listener) {
|
//下载图片
|
//先下载文件
|
new Thread(new Runnable() {
|
@Override
|
public void run() {
|
try {
|
Glide.with(getContext())
|
.load(selectedImgUrl)
|
.into(new SimpleTarget<Drawable>() {
|
@Override
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
final Drawable fresource = resource;
|
iv_share_img.post(new Runnable() {
|
@Override
|
public void run() {
|
iv_share_img.setImageDrawable(fresource);
|
listener.onSuccess(getViewBp(ll_share_single_img));
|
}
|
});
|
}
|
});
|
|
|
} catch (Exception e) {
|
iv_share_img.post(new Runnable() {
|
@Override
|
public void run() {
|
listener.onFail();
|
}
|
});
|
}
|
}
|
}).start();
|
|
}
|
|
private Bitmap getViewBp(View v) {
|
if (null == v) {
|
return null;
|
}
|
v.setDrawingCacheEnabled(true);
|
v.buildDrawingCache();
|
v.measure(View.MeasureSpec.makeMeasureSpec(v.getWidth(),
|
View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(
|
v.getHeight(), View.MeasureSpec.EXACTLY));
|
v.layout((int) v.getX(), (int) v.getY(),
|
(int) v.getX() + v.getMeasuredWidth(),
|
(int) v.getY() + v.getMeasuredHeight());
|
Bitmap b = Bitmap.createBitmap(v.getDrawingCache(), 0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
|
v.setDrawingCacheEnabled(false);
|
v.destroyDrawingCache();
|
return b;
|
}
|
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
}
|
|
interface ViewClipListener {
|
public void onSuccess(Bitmap bitmap);
|
|
public void onFail();
|
}
|
}
|