package com.tejia.lijin.app.ui.recommend;
|
|
|
import android.Manifest;
|
import android.app.Activity;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.graphics.Typeface;
|
import android.graphics.drawable.Drawable;
|
import android.media.MediaScannerConnection;
|
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.RelativeLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.app.hubert.guide.util.ScreenUtils;
|
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.load.DataSource;
|
import com.bumptech.glide.load.engine.GlideException;
|
import com.bumptech.glide.request.RequestListener;
|
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.target.Target;
|
import com.google.gson.Gson;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.umeng.analytics.MobclickAgent;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.wpc.library.util.common.FileUtils;
|
import com.wpc.library.util.common.StringUtils;
|
import com.wpc.library.util.security.MD5Utils;
|
import com.wpc.library.widget.RatioLayout;
|
import com.wpc.library.widget.ResizableImageView;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.callBack.PermissionInterface;
|
import com.tejia.lijin.app.entity.UserInfo;
|
import com.tejia.lijin.app.entity.goods.ShareCommonGoods;
|
import com.tejia.lijin.app.entity.goods.ShareGoodsLinkInfo;
|
import com.tejia.lijin.app.entity.share.ShareEntity;
|
import com.tejia.lijin.app.entity.share.ShareImageEntity;
|
import com.tejia.lijin.app.entity.share.ShareMultiGoodsCropInfo;
|
import com.tejia.lijin.app.ui.dialog.MultiImageDownloadDialog;
|
import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog;
|
import com.tejia.lijin.app.ui.dialog.ShareGoodsImgNativeDialog;
|
import com.tejia.lijin.app.ui.invite.ShareBrowserActivity;
|
import com.tejia.lijin.app.util.GlideRoundTransform;
|
import com.tejia.lijin.app.util.ImageUtil;
|
import com.tejia.lijin.app.util.PermissionHelper;
|
import com.tejia.lijin.app.util.Toast_Dialog;
|
import com.tejia.lijin.app.util.ToolUtil;
|
import com.tejia.lijin.app.util.Tools;
|
import com.tejia.lijin.app.util.TopStatusSettings;
|
import com.tejia.lijin.app.util.clipboard.ClipboardUtil;
|
import com.tejia.lijin.app.util.umengCustomEvent.GoodsCustomEvent;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.tejia.lijin.app.util.zxing.ZxingUtils;
|
|
import org.apache.http.Header;
|
import org.json.JSONArray;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 多个商品创建分享
|
*/
|
public class MultiGoodsShareActivity extends Activity implements View.OnClickListener, PermissionInterface {
|
|
public static final String TAG = "MultiGoodsShareActivity";
|
|
private TextView tv_left, tv_middle, tv_goods_title,
|
tv_after_coupon_price, tv_normal_price, tv_sale_num,
|
tv_coupon_price, tv_estimate_reward,
|
tv_remind_content,
|
tv_tlj_single, tv_free_shipping;
|
private ImageView iv_right, iv_share_img, iv_qr_code,
|
iv_qr_code_center_img;
|
private ResizableImageView iv_single_img_coupon_ad;
|
|
private FrameLayout fl_qr, fl_single_img_coupon_ad, fl_free_shipping;
|
|
private LinearLayout ll_imgs, ll_share_single_img, ll_coupon, ll_single_img_content, ll_ambush, ll_share_img_content_bg, ll_share, ll_save;
|
RelativeLayout ll_ambushlayout;
|
String rule, shareId;
|
private DisplayImageOptions options;
|
boolean isSingle = true;
|
private String selectedImgUrl;//单图选中图片链接
|
|
private RatioLayout rl_qr;
|
|
private Toast_Dialog toast_dialog;
|
private LinearLayout ll_notice;//小黄条
|
private ImageView iv_close;
|
private TextView tv_notice_content;
|
int isCheck = 0;
|
private String wxErCode;
|
private String TYPE = "shareMulti";// 小黄条type
|
//缓存
|
private Map<String, ShareEntity> shareEntityCache = new HashMap<>();
|
|
//当前选中的商品
|
private ShareEntity currentShare;
|
|
private ShapeLoadingDialog loadingDialog;
|
|
private MultiImageDownloadDialog.Builder downloadProgressDialogBuilder;
|
|
/**
|
* 获取通过inteng传过来的值
|
*
|
* @param goodsList
|
* @return
|
*/
|
public static String getGoodsIntentData(List<ShareCommonGoods> goodsList) {
|
JSONArray array = new JSONArray();
|
if (goodsList != null)
|
for (ShareCommonGoods goods : goodsList) {
|
JSONObject obj = new JSONObject();
|
try {
|
obj.put("goodsId", goods.getGoodsId());
|
obj.put("goodsType", goods.getGoodsType());
|
array.put(obj);
|
} catch (Exception e) {
|
}
|
}
|
return array.toString();
|
}
|
|
/**
|
* 解析intent传过来的值
|
*
|
* @param data
|
* @return
|
*/
|
public static List<ShareCommonGoods> parseGoodsFromIntent(String data) {
|
List<ShareCommonGoods> list = new ArrayList<>();
|
try {
|
JSONArray array = new JSONArray(data);
|
if (array != null)
|
for (int i = 0; i < array.length(); i++) {
|
list.add(new ShareCommonGoods(array.optJSONObject(i).optString("goodsId"), array.optJSONObject(i).optInt("goodsType")));
|
}
|
} catch (Exception e) {
|
}
|
return list;
|
}
|
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_share_multi_goods_img);
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
initView();
|
addListener();
|
mPermissionsChecker = new PermissionHelper(this, this);//权限请求帮助类
|
getAppPageNotification();//小黄条
|
//删除临时文件
|
FileUtils.deleteFile(tempFilePath);
|
}
|
|
/*************小黄条*******/
|
private void getAppPageNotification() {
|
ShoppingApi.getAppPageNotification(this, TYPE, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
ToolUtil.setAppPageNotification(ll_notice, tv_notice_content, iv_close, jsonObject);
|
}
|
});
|
}
|
|
private void initView() {
|
//小黄条
|
ll_notice = findViewById(R.id.ll_notice);
|
tv_notice_content = findViewById(R.id.tv_notice_content);
|
iv_close = findViewById(R.id.iv_close);
|
//顶部菜单栏
|
tv_left = findViewById(R.id.tv_top_bar_left);
|
tv_middle = findViewById(R.id.tv_top_bar_middle);
|
iv_right = findViewById(R.id.iv_top_bar_right);
|
|
//分享图控件
|
tv_goods_title = findViewById(R.id.tv_goods_title);
|
tv_after_coupon_price = findViewById(R.id.tv_after_coupon_price);
|
tv_normal_price = findViewById(R.id.tv_normal_price);
|
tv_sale_num = findViewById(R.id.tv_sale_num);
|
tv_coupon_price = findViewById(R.id.tv_coupon_price);
|
ll_coupon = findViewById(R.id.ll_coupon);
|
tv_estimate_reward = findViewById(R.id.tv_estimate_reward);
|
tv_tlj_single = findViewById(R.id.tv_tlj_single);
|
tv_remind_content = findViewById(R.id.tv_remind_content);
|
iv_share_img = findViewById(R.id.iv_share_img);
|
iv_qr_code = findViewById(R.id.iv_qr_code);
|
iv_qr_code_center_img = findViewById(R.id.iv_qr_code_center_img);
|
|
//暗地截图容器
|
ll_share_img_content_bg = findViewById(R.id.ll_share_img_content_bg);
|
|
//底部按钮
|
ll_share = findViewById(R.id.ll_share);
|
ll_save = findViewById(R.id.ll_save);
|
|
//商品选择
|
ll_single_img_content = findViewById(R.id.ll_single_img_content);
|
ll_imgs = findViewById(R.id.ll_imgs);
|
ll_share_single_img = findViewById(R.id.ll_share_single_img);
|
fl_single_img_coupon_ad = findViewById(R.id.fl_single_img_coupon_ad);
|
iv_single_img_coupon_ad = findViewById(R.id.iv_single_img_coupon_ad);
|
|
|
fl_qr = findViewById(R.id.fl_qr);
|
ll_ambush = findViewById(R.id.ll_ambush);
|
ll_ambushlayout = findViewById(R.id.ll_ambushlayout);
|
fl_free_shipping = findViewById(R.id.fl_free_shipping);
|
tv_free_shipping = findViewById(R.id.tv_free_shipping);
|
|
rl_qr=findViewById(R.id.rl_qr);
|
|
tv_middle.setText("批量分享");
|
|
this.options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_default)
|
.showImageOnFail(R.drawable.ic_goods_default)
|
.showImageOnLoading(R.drawable.ic_goods_default)
|
.resetViewBeforeLoading(false).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
.build();
|
|
//接受上个页面传过来的值
|
shareId = getIntent().getStringExtra("shareId");
|
tv_tlj_single.setVisibility(View.GONE);
|
loadingDialog = new ShapeLoadingDialog.Builder(this).build();
|
loadingDialog.setCanceledOnTouchOutside(false);
|
|
String goodsJSON = getIntent().getStringExtra("goodsInfo");
|
List<ShareCommonGoods> goodsList = parseGoodsFromIntent(goodsJSON);
|
listSimpleGoods(goodsList);
|
|
ll_share_single_img.setVisibility(View.INVISIBLE);
|
}
|
|
List<ShareCommonGoods> simpleGoodsList = new ArrayList<>();
|
|
private void listSimpleGoods(List<ShareCommonGoods> goodsList) {
|
ShoppingApi.listSimpleGoods(this, goodsList, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
if (!loadingDialog.isShowing()) {
|
loadingDialog.show();
|
}
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
super.onSuccessPerfect(statusCode, headers, jsonObject);
|
if (jsonObject.optInt("code") == 0) {
|
JSONArray array = jsonObject.optJSONArray("data");
|
|
if (array == null || array.length() == 0) {
|
Toast.makeText(MultiGoodsShareActivity.this, "商品已下架", Toast.LENGTH_SHORT).show();
|
finish();
|
}
|
|
Gson gson = new Gson();
|
for (int i = 0; i < array.length(); i++) {
|
ShareCommonGoods goods = gson.fromJson(array.optJSONObject(i).toString(), ShareCommonGoods.class);
|
simpleGoodsList.add(goods);
|
}
|
setSimpleGoodsList(simpleGoodsList);
|
} else {
|
Toast.makeText(MultiGoodsShareActivity.this, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show();
|
finish();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
if (loadingDialog.isShowing()) {
|
loadingDialog.dismiss();
|
}
|
}
|
});
|
}
|
|
/**
|
* 设置商品列表数据
|
*
|
* @param goodsList
|
*/
|
private void setSimpleGoodsList(List<ShareCommonGoods> goodsList) {
|
ll_imgs.removeAllViews();
|
for (int i = 0; i < goodsList.size(); i++) {
|
final int p = i;
|
final ShareCommonGoods goods = goodsList.get(i);
|
View view = LayoutInflater.from(this).inflate(R.layout.item_share_multi_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 = goodsList.get(i).getPicUrl();
|
Glide.with(this).load(imgUrl).apply(new RequestOptions().placeholder(R.drawable.ic_goods_default)).into(iv_share_select_img);
|
iv_select.setTag(goodsList.get(i));
|
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.VISIBLE);
|
}
|
iv_select.setVisibility(View.GONE);
|
// selectedImgUrl = imgUrl;
|
// Glide.with(MultiGoodsShareActivity.this).load(imgUrl).placeholder(R.drawable.ic_goods_default).into(iv_share_img);
|
getLink(goods);
|
}
|
});
|
|
iv_select.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);
|
ShareCommonGoods tempGoods = (ShareCommonGoods) view1.findViewById(R.id.iv_share_img_selected).getTag();
|
if (tempGoods.getGoodsId().equalsIgnoreCase(goods.getGoodsId()) && tempGoods.getGoodsType() == goods.getGoodsType()) {
|
deleteImgData(tempGoods);
|
ll_imgs.removeViewAt(j);
|
break;
|
}
|
}
|
}
|
});
|
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT
|
, ViewGroup.LayoutParams.WRAP_CONTENT);
|
if (i == 0) {
|
iv_select.setVisibility(View.GONE);
|
params.leftMargin = DimenUtils.dip2px(this, 15);
|
} else if (i == goodsList.size() - 1) {
|
iv_select.setVisibility(View.VISIBLE);
|
params.leftMargin = DimenUtils.dip2px(this, 10);
|
params.rightMargin = DimenUtils.dip2px(this, 15);
|
} else {
|
iv_select.setVisibility(View.VISIBLE);
|
params.leftMargin = DimenUtils.dip2px(this, 10);
|
}
|
fl_select_img.setLayoutParams(params);
|
ll_imgs.addView(view);
|
}
|
if (goodsList.size() > 0)
|
getLink(goodsList.get(0));
|
}
|
|
|
/**
|
* 请求分享链接
|
*
|
* @param goods
|
*/
|
public void getLink(ShareCommonGoods goods) {
|
if (goods == null)
|
return;
|
UserInfo user = UserUtil.getUserInfo(this);
|
if (user == null)
|
return;
|
|
String key = goods.getGoodsId() + "-" + goods.getGoodsType();
|
if (shareEntityCache.get(key) != null) {
|
ShareEntity entity = shareEntityCache.get(key);
|
initShareImageView(entity.getCommonGoods(), entity.getLinkInfo());
|
setShareExtraInfo(entity.getLinkInfo());
|
currentShare = entity;
|
return;
|
}
|
|
|
ShoppingApi.createShareLink(this, Long.parseLong(user.getId()), goods.getGoodsId(), goods.getGoodsType() + "", "multiGoodsShare", null, true, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
if (!loadingDialog.isShowing())
|
loadingDialog.show();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
super.onSuccessPerfect(statusCode, headers, jsonObject);
|
if (jsonObject.optInt("code") == 0) {
|
JSONObject data = jsonObject.optJSONObject("data");
|
Gson gson = new Gson();
|
final ShareEntity entity = new ShareEntity();
|
if (data.optJSONObject("goodsInfo") != null) {
|
ShareCommonGoods shareGoods = gson.fromJson(data.optJSONObject("goodsInfo").toString(), ShareCommonGoods.class);
|
entity.setCommonGoods(shareGoods);
|
data.remove("goodsInfo");
|
}
|
ShareGoodsLinkInfo linkInfo = gson.fromJson(data.toString(), ShareGoodsLinkInfo.class);
|
if (linkInfo != null)
|
entity.setLinkInfo(linkInfo);
|
|
if (entity.getLinkInfo() != null && entity.getCommonGoods() != null) {
|
//加入缓存
|
shareEntityCache.put(entity.getCommonGoods().getGoodsId() + "-" + entity.getCommonGoods().getGoodsType(), entity);
|
MultiGoodsShareActivity.this.runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
initShareImageView(entity.getCommonGoods(), entity.getLinkInfo());
|
setShareExtraInfo(entity.getLinkInfo());
|
currentShare = entity;
|
}
|
});
|
}
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
if (loadingDialog.isShowing())
|
loadingDialog.dismiss();
|
}
|
});
|
|
}
|
|
private String getTempFileNameByGoods(ShareCommonGoods goods) {
|
return goods.getGoodsId() + "_" + goods.getGoodsType() + ".jpg";
|
}
|
|
/**
|
* 截图单个商品
|
*
|
* @param entity
|
* @param cropImageListener
|
*/
|
private void cropSingleGoods(ShareEntity entity, final ICropImage cropImageListener) {
|
final String imgName = getTempFileNameByGoods(entity.getCommonGoods());
|
File f = new File(tempFilePath, imgName);
|
if (f.exists() && f.length() > 0) {
|
if (cropImageListener != null) {
|
cropImageListener.success(entity.getCommonGoods(), f.getPath());
|
return;
|
}
|
}
|
initShareImageViewBackground(entity.getCommonGoods(), entity.getLinkInfo(), new IImageLoadFinish() {
|
@Override
|
public void onException(ShareCommonGoods goods) {
|
//不截图
|
if (cropImageListener != null)
|
cropImageListener.fail(goods);
|
}
|
|
@Override
|
public void onSuccess(ShareCommonGoods goods) {
|
Bitmap bitMap = getViewBp(bgView.findViewById(R.id.ll_share_single_img));
|
try {
|
File f = Tools.saveBitmap(bitMap, tempFilePath, imgName);
|
if (f != null && f.exists()) {
|
if (cropImageListener != null) {
|
cropImageListener.success(goods, f.getPath());
|
return;
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if (cropImageListener != null)
|
cropImageListener.fail(goods);
|
}
|
});
|
}
|
|
|
//截图
|
public void getLinkForCrop(final ShareCommonGoods goods, final ICropImage cropImageListener) {
|
if (goods == null)
|
return;
|
UserInfo user = UserUtil.getUserInfo(this);
|
if (user == null)
|
return;
|
|
String key = goods.getGoodsId() + "-" + goods.getGoodsType();
|
if (shareEntityCache.get(key) != null) {
|
ShareEntity entity = shareEntityCache.get(key);
|
cropSingleGoods(entity, cropImageListener);
|
return;
|
}
|
ShoppingApi.createShareLink(this,Long.parseLong(user.getId()), goods.getGoodsId(), goods.getGoodsType() + "", "multiGoodsShare", null, true, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onStart() {
|
super.onStart();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
super.onSuccessPerfect(statusCode, headers, jsonObject);
|
if (jsonObject.optInt("code") == 0) {
|
JSONObject data = jsonObject.optJSONObject("data");
|
Gson gson = new Gson();
|
final ShareEntity entity = new ShareEntity();
|
if (data.optJSONObject("goodsInfo") != null) {
|
ShareCommonGoods shareGoods = gson.fromJson(data.optJSONObject("goodsInfo").toString(), ShareCommonGoods.class);
|
entity.setCommonGoods(shareGoods);
|
data.remove("goodsInfo");
|
}
|
ShareGoodsLinkInfo linkInfo = gson.fromJson(data.toString(), ShareGoodsLinkInfo.class);
|
if (linkInfo != null)
|
entity.setLinkInfo(linkInfo);
|
|
if (entity.getLinkInfo() != null && entity.getCommonGoods() != null) {
|
//加入缓存
|
shareEntityCache.put(entity.getCommonGoods().getGoodsId() + "-" + entity.getCommonGoods().getGoodsType(), entity);
|
MultiGoodsShareActivity.this.runOnUiThread(new Runnable() {
|
@Override
|
public void run() {
|
if (shareMultiGoodsCropInfo == null)
|
shareMultiGoodsCropInfo = new ShareMultiGoodsCropInfo();
|
cropSingleGoods(entity, cropImageListener);
|
}
|
});
|
} else {
|
if (cropImageListener != null)
|
cropImageListener.fail(goods);
|
}
|
} else {
|
if (cropImageListener != null)
|
cropImageListener.fail(goods);
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
|
super.onFailure(statusCode, headers, jsonObject, e);
|
if (cropImageListener != null)
|
cropImageListener.fail(goods);
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
}
|
});
|
}
|
|
|
//开始截图
|
private void startCrop(final int type) {
|
shareMultiGoodsCropInfo = new ShareMultiGoodsCropInfo();
|
downloadProgressDialogBuilder = new MultiImageDownloadDialog.Builder(this).setTotalCount(simpleGoodsList.size());
|
final MultiImageDownloadDialog progressDialog = downloadProgressDialogBuilder.create();
|
progressDialog.show();
|
int index = 0;
|
nextCrop(index, new ICropImageFinish() {
|
@Override
|
public void finish() {
|
if (progressDialog.isShowing())
|
progressDialog.dismiss();
|
//截图已经完成
|
if (shareMultiGoodsCropInfo.getSuccessCount() == 0) {
|
Toast.makeText(MultiGoodsShareActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
|
} else {
|
//成功了
|
if (type == 1) {//分享
|
ArrayList<ShareImageEntity> imageList = new ArrayList<>();
|
for (String filePath : shareMultiGoodsCropInfo.getFilePaths())
|
imageList.add(new ShareImageEntity(filePath));
|
new ShareGoodsImgNativeDialog.Builder(MultiGoodsShareActivity.this)
|
.setShareImageList(imageList)
|
.setFootMark(false)
|
.setShareType("single")
|
.setSelectAll(true)
|
.setShareId(shareId)
|
.setMarkDesc("系统默认分享全部含有二维码的分享图,如果你要分享单张或减少分享图可取消勾选,系统会记住你上一次的选择。")
|
.create().show();
|
} else if (type == 2) {//保存到相册
|
new Thread(new Runnable() {
|
@Override
|
public void run() {
|
//文件复制
|
for (String path : shareMultiGoodsCropInfo.getFilePaths()) {
|
File f = new File(path);
|
String name = "multi_" + f.getName();
|
String md5 = MD5Utils.getMD532(name.split("\\.")[0]);
|
File file = new File(saveFilePath + "/" + md5 + ".jpg");
|
if (file.exists()) {
|
file.delete();
|
} else {
|
FileUtils.copyFile(new File(path), file);
|
}
|
//通知相册更新
|
MediaScannerConnection.scanFile(getApplicationContext(), new String[]{file.toString()}, null, null);
|
}
|
tv_middle.post(new Runnable() {
|
@Override
|
public void run() {
|
Toast.makeText(MultiGoodsShareActivity.this, "图片保存成功!", Toast.LENGTH_LONG).show();
|
}
|
});
|
}
|
}).start();
|
}
|
}
|
}
|
});
|
}
|
|
|
public void nextCrop(final int index, final ICropImageFinish finishListener) {
|
if (index >= simpleGoodsList.size()) {
|
if (finishListener != null)
|
finishListener.finish();
|
return;
|
}
|
getLinkForCrop(simpleGoodsList.get(index), new ICropImage() {
|
@Override
|
public void success(ShareCommonGoods goods, String path) {
|
shareMultiGoodsCropInfo.setSuccessCount(shareMultiGoodsCropInfo.getSuccessCount() + 1);
|
if (shareMultiGoodsCropInfo.getFilePaths() == null)
|
shareMultiGoodsCropInfo.setFilePaths(new ArrayList<String>());
|
shareMultiGoodsCropInfo.getFilePaths().add(path);
|
tv_middle.post(new Runnable() {
|
@Override
|
public void run() {
|
downloadProgressDialogBuilder.setDownloadCount(index + 1);
|
}
|
});
|
|
nextCrop(index + 1, finishListener);
|
}
|
|
@Override
|
public void fail(ShareCommonGoods goods) {
|
shareMultiGoodsCropInfo.setFailCount(shareMultiGoodsCropInfo.getFailCount() + 1);
|
tv_middle.post(new Runnable() {
|
@Override
|
public void run() {
|
downloadProgressDialogBuilder.setDownloadCount(index + 1);
|
}
|
});
|
nextCrop(index + 1, finishListener);
|
}
|
});
|
}
|
|
|
/**
|
* 删除商品数据
|
*
|
* @param goods
|
*/
|
public void deleteImgData(ShareCommonGoods goods) {
|
if (goods == null)
|
return;
|
//当前选中的不能删除
|
if (currentShare != null && currentShare.getCommonGoods().getGoodsType() == goods.getGoodsType() && currentShare.getCommonGoods().getGoodsId().equalsIgnoreCase(goods.getGoodsId()))
|
return;
|
|
//删除列表
|
if (simpleGoodsList != null)
|
for (int i = 0; i < simpleGoodsList.size(); i++) {
|
if (simpleGoodsList.get(i).getGoodsType() == goods.getGoodsType() && simpleGoodsList.get(i).getGoodsId().equalsIgnoreCase(goods.getGoodsId())) {
|
simpleGoodsList.remove(i);
|
break;
|
}
|
}
|
|
//删除缓存
|
String key = goods.getGoodsId() + "-" + goods.getGoodsType();
|
shareEntityCache.remove(key);
|
|
//删除文件缓存
|
String fileName = getTempFileNameByGoods(goods);
|
File f = new File(tempFilePath, fileName);
|
if (f.exists())
|
f.delete();
|
|
}
|
|
/**
|
* 初始化分享内容视图
|
*/
|
private void initShareImageView(ShareCommonGoods goods, ShareGoodsLinkInfo linkInfo) {
|
ll_share_single_img.setVisibility(View.VISIBLE);
|
String price;
|
int startP;
|
|
Glide.with(this).load(goods.getPicUrl()).apply(new RequestOptions().placeholder(R.drawable.ic_goods_default)).into(iv_share_img);
|
tv_goods_title.setText(goods.getTitle());
|
if (goods.isHasCoupon()) {//有优惠券
|
price = "券后价 ¥ " + goods.getCouponPrice();
|
startP = 5;
|
tv_coupon_price.setText("¥ " + goods.getCouponInfo().getAmount());
|
ll_coupon.setVisibility(View.VISIBLE);
|
tv_normal_price.setVisibility(View.VISIBLE);
|
fl_single_img_coupon_ad.setVisibility(View.VISIBLE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame_no_coupon_old);
|
rl_qr.setRatio(1.313f);
|
} else {
|
price = "¥ " + goods.getZkPrice();
|
startP = 1;
|
ll_coupon.setVisibility(View.GONE);
|
tv_normal_price.setVisibility(View.INVISIBLE);
|
fl_single_img_coupon_ad.setVisibility(View.GONE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame_no_coupon);
|
rl_qr.setRatio(1.08f);
|
}
|
ImageUtil.showImageFace1(this, goods.getTitle(), goods.getShopType(), tv_goods_title);
|
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);
|
if (!StringUtils.isEmpty(linkInfo.getWxErCode()))
|
setQRCode(linkInfo.getWxErCode(), iv_qr_code);//设置二维码
|
else
|
setQRCode(linkInfo.getClickUrl(), iv_qr_code);//设置二维码
|
if (goods.getShopType() == 21) {
|
fl_free_shipping.setVisibility(View.VISIBLE);
|
tv_free_shipping.setText("自营");
|
} else {
|
if (goods.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() {
|
String portrait = getSharedPreferences("user", MODE_PRIVATE).getString("portrait", "");
|
Glide.with(MultiGoodsShareActivity.this).load(portrait).apply(new RequestOptions().transform(new GlideRoundTransform(
|
MultiGoodsShareActivity.this, 4))).into(iv_qr_code_center_img);
|
}
|
}, 200);
|
|
tv_normal_price.setText(goods.getPriceName() + " ¥" + goods.getZkPrice());
|
String saleType = goods.getSalesType() == 1 ? "月销 " : "总销量 ";
|
tv_sale_num.setText(saleType + goods.getSalesCount());
|
if (goods.getMoneyInfo() != null)
|
tv_estimate_reward.setText(goods.getMoneyInfo().getShareMoney());
|
Glide.with(this).load(linkInfo.getNotifyPicture()).into(iv_single_img_coupon_ad);
|
|
// shareHandler = new WbShareHandler(this);
|
// shareHandler.registerApp();
|
// toast_dialog = new Toast_Dialog(this);
|
}
|
|
|
/**
|
* 后台初始化分享内容视图
|
*/
|
private String tempFilePath = android.os.Environment.getExternalStorageDirectory()
|
+ "/rebateshare_multi_temp";
|
|
private String saveFilePath = android.os.Environment.getExternalStorageDirectory()
|
+ "/tejiaapp";
|
|
private View bgView;
|
|
//截图信息
|
private ShareMultiGoodsCropInfo shareMultiGoodsCropInfo;
|
|
private void initShareImageViewBackground(final ShareCommonGoods goods, ShareGoodsLinkInfo linkInfo, final IImageLoadFinish listener) {
|
ll_share_img_content_bg.removeAllViews();
|
bgView = LayoutInflater.from(this).inflate(R.layout.item_share_img_goods, null);
|
final ImageView iv_qr_code_center_img = bgView.findViewById(R.id.iv_qr_code_center_img);
|
final LinearLayout ll_share_single_img = bgView.findViewById(R.id.ll_share_single_img);
|
TextView tv_coupon_price, tv_normal_price, tv_after_coupon_price, tv_free_shipping, tv_sale_num, tv_goods_title;
|
LinearLayout ll_coupon;
|
FrameLayout fl_single_img_coupon_ad, fl_qr, fl_free_shipping;
|
ImageView iv_qr_code, iv_single_img_coupon_ad;
|
//控件初始化
|
tv_coupon_price = bgView.findViewById(R.id.tv_coupon_price);
|
tv_normal_price = bgView.findViewById(R.id.tv_normal_price);
|
tv_after_coupon_price = bgView.findViewById(R.id.tv_after_coupon_price);
|
tv_free_shipping = bgView.findViewById(R.id.tv_free_shipping);
|
tv_sale_num = bgView.findViewById(R.id.tv_sale_num);
|
tv_goods_title = bgView.findViewById(R.id.tv_goods_title);
|
|
ll_coupon = bgView.findViewById(R.id.ll_coupon);
|
fl_single_img_coupon_ad = bgView.findViewById(R.id.fl_single_img_coupon_ad);
|
fl_qr = bgView.findViewById(R.id.fl_qr);
|
fl_free_shipping = bgView.findViewById(R.id.fl_free_shipping);
|
iv_qr_code = bgView.findViewById(R.id.iv_qr_code);
|
iv_single_img_coupon_ad = bgView.findViewById(R.id.iv_single_img_coupon_ad);
|
final ImageView iv_share_img = bgView.findViewById(R.id.iv_share_img);
|
|
|
String price;
|
int startP;
|
if (goods.isHasCoupon()) {//有优惠券
|
price = "券后价 ¥ " + goods.getCouponPrice();
|
startP = 5;
|
tv_coupon_price.setText("¥ " + goods.getCouponInfo().getAmount());
|
ll_coupon.setVisibility(View.VISIBLE);
|
tv_normal_price.setVisibility(View.VISIBLE);
|
fl_single_img_coupon_ad.setVisibility(View.VISIBLE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame_no_coupon_old);
|
rl_qr.setRatio(1.313f);
|
} else {
|
price = "¥ " + goods.getZkPrice();
|
startP = 1;
|
ll_coupon.setVisibility(View.GONE);
|
tv_normal_price.setVisibility(View.INVISIBLE);
|
fl_single_img_coupon_ad.setVisibility(View.GONE);
|
fl_qr.setBackgroundResource(R.drawable.ic_qr_code_frame_no_coupon);
|
rl_qr.setRatio(1.08f);
|
}
|
|
ImageUtil.showImageFace1(this, goods.getTitle(), goods.getShopType(), tv_goods_title);
|
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);
|
if (!StringUtils.isEmpty(linkInfo.getWxErCode()))
|
setQRCode(linkInfo.getWxErCode(), iv_qr_code);//设置二维码
|
else
|
setQRCode(linkInfo.getClickUrl(), iv_qr_code);//设置二维码
|
if (goods.getShopType() == 21) {
|
fl_free_shipping.setVisibility(View.VISIBLE);
|
tv_free_shipping.setText("自营");
|
} else {
|
if (goods.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() {
|
String portrait = getSharedPreferences("user", MODE_PRIVATE).getString("portrait", "");
|
Glide.with(MultiGoodsShareActivity.this).load(portrait).apply(new RequestOptions().transform(new GlideRoundTransform(
|
MultiGoodsShareActivity.this, 4))).into(iv_qr_code_center_img);
|
// }
|
// }, 200);
|
tv_normal_price.setText(goods.getPriceName() + " ¥" + goods.getZkPrice());
|
String saleType = goods.getSalesType() == 1 ? "月销 " : "总销量 ";
|
tv_sale_num.setText(saleType + goods.getSalesCount());
|
Glide.with(this).load(linkInfo.getNotifyPicture()).into(iv_single_img_coupon_ad);
|
|
Glide.with(this).load(goods.getPicUrl()).apply(new RequestOptions().placeholder(R.drawable.ic_goods_default)).listener(new RequestListener<Drawable>() {
|
@Override
|
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
if (listener != null)
|
listener.onException(goods);
|
return false;
|
}
|
|
@Override
|
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
ll_share_single_img.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
//图片加载完成
|
if (listener != null)
|
listener.onSuccess(goods);
|
}
|
}, 500);
|
return false;
|
}
|
}).into(iv_share_img);
|
ll_share_img_content_bg.addView(bgView);
|
}
|
|
private void setShareExtraInfo(ShareGoodsLinkInfo linkInfo) {
|
//右上角帮助
|
iv_right.setVisibility(View.VISIBLE);
|
rule = linkInfo.getRule();
|
//设置特别提醒
|
tv_remind_content.setText(linkInfo.getNotifyDesc());
|
setcommentTexts(linkInfo.getCommentTexts());//设置淘口令//评论区文案
|
}
|
|
/***********动态添加 评论区文案**/
|
private void setcommentTexts(List<String> commentTexts) {
|
|
if (commentTexts == null || commentTexts.size() == 0) {
|
ll_ambushlayout.setVisibility(View.GONE);
|
return;
|
} else {
|
ll_ambushlayout.setVisibility(View.VISIBLE);
|
}
|
|
ll_ambush.removeAllViews();
|
for (int i = 0; i < commentTexts.size(); i++) {
|
View item = LayoutInflater.from(this).inflate(R.layout.item_commenttexts, null);
|
TextView tv_ambush1 = item.findViewById(R.id.tv_ambush1);
|
final TextView tv_ambush = item.findViewById(R.id.tv_ambush);
|
TextView tv_ambush_copy = item.findViewById(R.id.tv_ambush_copy);
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
int left = ScreenUtils.dp2px(this, 10);
|
int top = ScreenUtils.dp2px(this, 13);
|
params.setMargins(left, top, left, top);
|
item.setLayoutParams(params);
|
tv_ambush.setText(commentTexts.get(i).toString());
|
tv_ambush1.setText((i + 1) + "");
|
tv_ambush_copy.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
GoodsCustomEvent.goodsDetailShareCopyToken(MultiGoodsShareActivity.this);
|
ClipboardUtil.copy(getApplicationContext(), tv_ambush.getText().toString());
|
Toast.makeText(MultiGoodsShareActivity.this, "文本复制成功", Toast.LENGTH_SHORT).show();
|
}
|
});
|
ll_ambush.addView(item);
|
}
|
}
|
|
private void addListener() {
|
tv_left.setOnClickListener(this);
|
iv_right.setOnClickListener(this);
|
ll_share.setOnClickListener(this);
|
ll_save.setOnClickListener(this);
|
}
|
|
@Override
|
protected void onResume() {
|
super.onResume();
|
MobclickAgent.onResume(this);
|
}
|
|
|
@Override
|
protected void onNewIntent(Intent intent) {
|
super.onNewIntent(intent);
|
}
|
|
private PermissionHelper mPermissionsChecker; // 权限检测器
|
|
/**
|
* 权限请求码
|
*
|
* @return
|
*/
|
@Override
|
public int getPermissionsRequestCode() {
|
return 1001;
|
}
|
|
/**
|
* 请求权限
|
*
|
* @return
|
*/
|
@Override
|
public String[] getPermissions() {
|
return new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
|
Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
}
|
|
/**
|
* 权限请求成功
|
*/
|
@Override
|
public void requestPermissionsSuccess() {
|
if (isCheck == 1) {
|
ll_save.performClick();
|
} else if (isCheck == 2) {
|
ll_share.performClick();
|
}
|
isCheck = 0;
|
}
|
|
/**
|
* 权限请求失败
|
*/
|
@Override
|
public void requestPermissionsFail() {
|
// Toast.makeText(this, "你以拒绝权限", Toast.LENGTH_SHORT).show();
|
}
|
|
/**
|
* 请求权限结果
|
*
|
* @param requestCode
|
* @param permissions
|
* @param grantResults
|
*/
|
@Override
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
if (mPermissionsChecker.requestPermissionsResult(requestCode, permissions, grantResults)) {
|
//权限请求结果,并已经处理了该回调
|
return;
|
}
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
}
|
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left:
|
finish();
|
break;
|
case R.id.iv_top_bar_right:
|
Intent intent = new Intent(MultiGoodsShareActivity.this, ShareBrowserActivity.class);
|
intent.putExtra("url", rule);
|
startActivity(intent);
|
break;
|
case R.id.ll_share: {//分享图片
|
if (mPermissionsChecker.lacksPermissions(getPermissions())) { //检测权限
|
isCheck = 2;
|
mPermissionsChecker.showNormalDialog();
|
} else {
|
if (mPermissionsChecker.lacksPermissions(getPermissions())) { //检测权限
|
mPermissionsChecker.showNormalDialog();
|
} else {
|
startCrop(1);
|
}
|
}
|
}
|
break;
|
|
case R.id.ll_save://保存图片
|
if (mPermissionsChecker.lacksPermissions(getPermissions())) { //检测权限
|
isCheck = 1;
|
mPermissionsChecker.showNormalDialog();
|
} else {
|
if (mPermissionsChecker.lacksPermissions(getPermissions())) { //检测权限
|
mPermissionsChecker.showNormalDialog();
|
} else {
|
startCrop(2);
|
}
|
}
|
break;
|
case R.id.fl_single_img:
|
isSingle = true;
|
getShareMode(1);
|
break;
|
default:
|
break;
|
}
|
}
|
|
/**
|
* 分享模式 展示与隐藏相关控件
|
*
|
* @param mode
|
*/
|
private void getShareMode(int mode) {
|
ll_single_img_content.setVisibility(mode == 1 ? View.VISIBLE : View.GONE);
|
}
|
|
public 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;
|
}
|
|
/*****************设置二维码******/
|
private void setQRCode(String clickUrl, ImageView iv) {
|
//二维码
|
Bitmap QRCode = ZxingUtils.createBitmap(clickUrl, DimenUtils.dip2px(this, 85));
|
Bitmap QRCodeMul = ZxingUtils.createBitmap(clickUrl, DimenUtils.dip2px(this, 85));
|
iv.setImageBitmap(QRCode);
|
iv.setScaleType(ImageView.ScaleType.FIT_XY);
|
}
|
@Override
|
protected void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
if (toast_dialog != null)
|
toast_dialog.dialog_dismiss();
|
FileUtils.deleteFile(tempFilePath);
|
}
|
|
/**
|
* 获取分享图
|
*
|
* @return
|
*/
|
private Bitmap getShareImage() {
|
Bitmap shareBp = getViewBp(ll_share_single_img);
|
return shareBp;
|
}
|
|
interface IImageLoadFinish {
|
public void onException(ShareCommonGoods goods);//加载异常
|
|
public void onSuccess(ShareCommonGoods goods);//加载成功
|
}
|
|
interface ICropImage {
|
public void success(ShareCommonGoods goods, String path);
|
|
public void fail(ShareCommonGoods goods);
|
}
|
|
interface ICropImageFinish {
|
public void finish();
|
}
|
}
|