admin
2021-05-13 c9582e75fbdb0b6246d2758474118009400e9b7c
特价新版UI改造
9个文件已修改
13个文件已添加
2984 ■■■■■ 已修改文件
app/src/main/java/com/tejia/lijin/app/ShoppingApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/entity/goods/GoodsDetailInfo.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/ui/goods/GoodsDetailHongBaoListAdapter.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/ui/goods/GoodsDetailPreEventManager.java 353 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/ui/mine/LoginSelectActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/ui/recommend/GoodsDetailActivity.java 1254 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/util/GoodsBuyJumpUtil.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/util/SetLabels.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/util/baichuan/AlibcTradeUtil.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/util/goods/GoodsBuyUtil.java 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_goods_detail_hongbao_detail_fanli.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_goods_detail_hongbao_detail_hb.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/icon_goods_detail_back.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_fanli.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_fanli_more.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_hb.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_hb_more.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_input.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/shape_go_fanli_full.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_goods_detail_new.xml 485 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_goods_detail_hongbao.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_goods_detail_rights.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/tejia/lijin/app/ShoppingApi.java
@@ -1765,6 +1765,17 @@
        commonPostWithFailture(context, BASE_URL2 + "pdd/getAuthJumpInfo", params, handler);
    }
    //拼多多是否已经授权
    public static void isPDDAuthed(Context context, String uid, boolean buy,
                                   BasicTextHttpResponseHandler handler) {
        if (!LoginAndInviteStatusUtil.acessNext(context, uid, true))
            return;
        LinkedHashMap<String, String> params = new LinkedHashMap<>();
        params.put("uid", uid);
        params.put("type", (buy ? 1 : 2) + "");
        commonPostWithFailture(context, BASE_URL2 + "pdd/isAuth", params, handler);
    }
    /**
     * 获取详情图文信息
app/src/main/java/com/tejia/lijin/app/entity/goods/GoodsDetailInfo.java
New file
@@ -0,0 +1,89 @@
package com.tejia.lijin.app.entity.goods;
import java.util.List;
public class GoodsDetailInfo {
    public static class HongBaoInfo {
        private int type;
        private String hongBaoMoney;
        private String hongBaoDesc;
        private String desc;
        private String finalMoney;
        private List<PriceInfo> priceInfoList;
        public int getType() {
            return type;
        }
        public void setType(int type) {
            this.type = type;
        }
        public String getHongBaoMoney() {
            return hongBaoMoney;
        }
        public void setHongBaoMoney(String hongBaoMoney) {
            this.hongBaoMoney = hongBaoMoney;
        }
        public String getHongBaoDesc() {
            return hongBaoDesc;
        }
        public void setHongBaoDesc(String hongBaoDesc) {
            this.hongBaoDesc = hongBaoDesc;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
        public String getFinalMoney() {
            return finalMoney;
        }
        public void setFinalMoney(String finalMoney) {
            this.finalMoney = finalMoney;
        }
        public List<PriceInfo> getPriceInfoList() {
            return priceInfoList;
        }
        public void setPriceInfoList(List<PriceInfo> priceInfoList) {
            this.priceInfoList = priceInfoList;
        }
    }
    public static class PriceInfo {
        private String priceName;
        private String money;
        public String getPriceName() {
            return priceName;
        }
        public void setPriceName(String priceName) {
            this.priceName = priceName;
        }
        public String getMoney() {
            return money;
        }
        public void setMoney(String money) {
            this.money = money;
        }
    }
}
app/src/main/java/com/tejia/lijin/app/ui/goods/GoodsDetailHongBaoListAdapter.java
New file
@@ -0,0 +1,231 @@
package com.tejia.lijin.app.ui.goods;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannedString;
import android.text.style.RelativeSizeSpan;
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.androidquery.AQuery;
import com.tejia.lijin.app.R;
import com.tejia.lijin.app.entity.goods.GoodsDetailInfo;
import com.wpc.library.util.common.DimenUtils;
import com.wpc.library.util.common.StringUtils;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class GoodsDetailHongBaoListAdapter extends RecyclerView.Adapter {
    private Context mContext;
    private List<GoodsDetailInfo.HongBaoInfo> mList;
    private boolean simpleMode;
    public GoodsDetailHongBaoListAdapter(Context context, List<GoodsDetailInfo.HongBaoInfo> list, boolean simpleMode) {
        this.mContext = context;
        this.mList = list;
        this.simpleMode = simpleMode;
    }
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_goods_detail_hongbao, null));
    }
    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        GoodsDetailInfo.HongBaoInfo hongBaoInfo = mList.get(position);
        final ViewHolder viewHolder = (ViewHolder) holder;
        viewHolder.tv_more.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (viewHolder.ll_hongbao_detail.getVisibility() == View.VISIBLE)
                    viewHolder.ll_hongbao_detail.setVisibility(View.GONE);
                else {
                    viewHolder.ll_hongbao_detail.setVisibility(View.VISIBLE);
                    viewHolder.tv_more.setVisibility(View.GONE);
                }
            }
        });
        boolean fanli = false;
        //初始化View显示
        setShowMode(viewHolder, fanli, simpleMode);
        //设置红包详情
        setHongBaoDetailInfo(viewHolder, hongBaoInfo);
        //设置资金
        SpannableString hbMoney = new SpannableString(hongBaoInfo.getHongBaoMoney());
        hbMoney.setSpan(new RelativeSizeSpan(1.5f), 1, (hongBaoInfo.getFinalMoney().indexOf(".") > -1 ? hongBaoInfo.getFinalMoney().indexOf(".") : hongBaoInfo.getFinalMoney().length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        viewHolder.tv_sub_money.setText(hbMoney);
        viewHolder.tv_sub_money.setCompoundDrawablePadding(DimenUtils.dip2px(mContext, 8));
        if (fanli) {
            viewHolder.tv_sub_money.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_goods_detail_hongbao_fanli, 0, 0, 0);
        } else {
            viewHolder.tv_sub_money.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_goods_detail_hongbao_hb, 0, 0, 0);
        }
        SpannableString finalMoney = new SpannableString(hongBaoInfo.getFinalMoney());
        finalMoney.setSpan(new RelativeSizeSpan(1.77f), 1, (hongBaoInfo.getFinalMoney().indexOf(".") > -1 ? hongBaoInfo.getFinalMoney().indexOf(".") : hongBaoInfo.getFinalMoney().length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        viewHolder.tv_actual_money.setText(finalMoney);
        //简介
        if (StringUtils.isNullOrEmpty(hongBaoInfo.getDesc())) {
            viewHolder.tv_desc.setText("");
        } else {
            viewHolder.tv_desc.setText(hongBaoInfo.getDesc());
        }
    }
    /**
     * @param fanli  是否返利
     * @param simple 是否为简单模式
     */
    private void setShowMode(ViewHolder viewHolder, boolean fanli, boolean simple) {
        GradientDrawable moreBg = new GradientDrawable();
        moreBg.setCornerRadius(DimenUtils.dip2px(mContext, 5));
        if (fanli) {
            viewHolder.fl_main.setBackgroundResource(R.drawable.shape_goods_detail_hongbao_bg);
            viewHolder.ll_hongbao_detail.setBackgroundResource(R.drawable.ic_goods_detail_hongbao_detail_fanli);
            moreBg.setColor(Color.parseColor("#35A30E"));
            viewHolder.tv_more.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.icon_goods_detail_hongbao_fanli_more, 0, 0);
        } else {
            viewHolder.fl_main.setBackgroundResource(R.drawable.shape_goods_detail_hongbao_high_level_bg);
            viewHolder.ll_hongbao_detail.setBackgroundResource(R.drawable.ic_goods_detail_hongbao_detail_hb);
            moreBg.setColor(Color.parseColor("#EC1F3F"));
            viewHolder.tv_more.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.icon_goods_detail_hongbao_hb_more, 0, 0);
        }
        viewHolder.tv_more.setBackground(moreBg);
        if (simple) {
            viewHolder.ll_level_info.setVisibility(View.GONE);
            viewHolder.tv_more.setVisibility(View.GONE);
            viewHolder.tv_desc.setVisibility(View.GONE);
        } else {
            viewHolder.ll_level_info.setVisibility(View.VISIBLE);
            viewHolder.tv_more.setVisibility(View.VISIBLE);
            viewHolder.tv_desc.setVisibility(View.VISIBLE);
        }
    }
    private void setHongBaoDetailInfo(ViewHolder viewHolder, GoodsDetailInfo.HongBaoInfo hongBaoInfo) {
        //隐藏超出的资金项目
        for (int i = hongBaoInfo.getPriceInfoList().size(); i < 4; i++) {
            int viewId = mContext.getResources().getIdentifier(
                    "ll_money_" + i,
                    "id",
                    mContext.getPackageName());
            if (viewHolder.fl_main.findViewById(viewId) != null)
                viewHolder.fl_main.findViewById(viewId).setVisibility(View.GONE);
        }
        for (int i = hongBaoInfo.getPriceInfoList().size() - 1; i < 3; i++) {
            int viewId = mContext.getResources().getIdentifier(
                    "v_hongbao_cut_" + i,
                    "id",
                    mContext.getPackageName());
            if (viewHolder.fl_main.findViewById(viewId) != null)
                viewHolder.fl_main.findViewById(viewId).setVisibility(View.GONE);
        }
        for (int i = 0; i < hongBaoInfo.getPriceInfoList().size(); i++) {
            viewHolder.tv_money_names[i].setText(hongBaoInfo.getPriceInfoList().get(i).getPriceName());
            viewHolder.tv_moneys[i].setText(hongBaoInfo.getPriceInfoList().get(i).getMoney());
        }
    }
    @Override
    public int getItemCount() {
        return 0;
    }
    class ViewHolder extends RecyclerView.ViewHolder {
        FrameLayout fl_main;
        TextView tv_sub_money;
        TextView tv_sub_money_desc;
        TextView tv_final_money;
        TextView tv_more;
        TextView tv_desc;
        //价格详情
        LinearLayout ll_hongbao_detail;
        LinearLayout ll_money_0, ll_money_1, ll_money_2, ll_money_3;
        TextView[] tv_money_names;
        TextView[] tv_moneys;
        View v_hongbao_cut_0, v_hongbao_cut_1, v_hongbao_cut_2;
        //到手价
        TextView tv_actual_money;
        LinearLayout ll_level_info;
        ImageView iv_level;
        TextView tv_level_desc;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            fl_main = itemView.findViewById(R.id.fl_main);
            tv_sub_money = itemView.findViewById(R.id.tv_sub_money);
            tv_sub_money_desc = itemView.findViewById(R.id.tv_sub_money_desc);
            tv_final_money = itemView.findViewById(R.id.tv_final_money);
            tv_more = itemView.findViewById(R.id.tv_more);
            tv_desc = itemView.findViewById(R.id.tv_desc);
            ll_hongbao_detail = itemView.findViewById(R.id.ll_hongbao_detail);
            ll_money_0 = itemView.findViewById(R.id.ll_money_0);
            ll_money_1 = itemView.findViewById(R.id.ll_money_1);
            ll_money_2 = itemView.findViewById(R.id.ll_money_2);
            ll_money_3 = itemView.findViewById(R.id.ll_money_3);
            tv_moneys = new TextView[]{itemView.findViewById(R.id.tv_money_0),
                    itemView.findViewById(R.id.tv_money_1),
                    itemView.findViewById(R.id.tv_money_2),
                    itemView.findViewById(R.id.tv_money_3)};
            tv_money_names = new TextView[]{itemView.findViewById(R.id.tv_money_name_0),
                    itemView.findViewById(R.id.tv_money_name_1),
                    itemView.findViewById(R.id.tv_money_name_2),
                    itemView.findViewById(R.id.tv_money_name_3)};
            v_hongbao_cut_0 = itemView.findViewById(R.id.v_hongbao_cut_0);
            v_hongbao_cut_1 = itemView.findViewById(R.id.v_hongbao_cut_1);
            v_hongbao_cut_2 = itemView.findViewById(R.id.v_hongbao_cut_2);
            tv_actual_money = itemView.findViewById(R.id.tv_actual_money);
            ll_level_info = itemView.findViewById(R.id.ll_level_info);
            iv_level = itemView.findViewById(R.id.iv_level);
            tv_level_desc = itemView.findViewById(R.id.tv_level_desc);
        }
    }
}
app/src/main/java/com/tejia/lijin/app/ui/goods/GoodsDetailPreEventManager.java
New file
@@ -0,0 +1,353 @@
package com.tejia.lijin.app.ui.goods;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
import com.alibaba.baichuan.android.trade.callback.AlibcTradeCallback;
import com.alibaba.baichuan.trade.biz.context.AlibcTradeResult;
import com.alibaba.baichuan.trade.biz.login.AlibcLogin;
import com.alibaba.baichuan.trade.biz.login.AlibcLoginCallback;
import com.google.gson.Gson;
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
import com.tejia.lijin.app.ShoppingApi;
import com.tejia.lijin.app.entity.GoodsDetail;
import com.tejia.lijin.app.entity.common.GoodsConvertLinkJumpLink;
import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog;
import com.tejia.lijin.app.ui.mine.LoginSelectActivity;
import com.tejia.lijin.app.util.Constant;
import com.tejia.lijin.app.util.GoodsBuyJumpUtil;
import com.tejia.lijin.app.util.InitAlibcSdk;
import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil;
import com.tejia.lijin.app.util.user.UserUtil;
import com.wpc.library.util.common.StringUtils;
import org.apache.http.Header;
import org.json.JSONObject;
/**
 * 商品详情事件管理
 */
public class GoodsDetailPreEventManager {
    private final static int ACTION_LOGIN = 1000;
    private final static int ACTION_TB_AUTH = 2000;
    private final static int ACTION_PDD_AUTH = 2001;
    private int action;
    private ShapeLoadingDialog pd;
    private IPreEventListener preEventListener;
    private Activity mActivity;
    private Context mContext;
    private int type;
    private GoodsDetail goodsDetail;
    //淘宝是否授权成功
    private boolean taoBaoAuthSuccess = false;
    private boolean pddAuthSuccess = false;
    public GoodsDetailPreEventManager(Activity activity, GoodsDetail goodsDetail) {
        this.mActivity = activity;
        this.mContext = mActivity.getApplicationContext();
        this.goodsDetail = goodsDetail;
    }
    private String getSource() {
        if (type == 0 || type == 1) {
            return "zigou";
        } else {
            return "share";
        }
    }
    public void onResume() {
        switch (action) {
            case ACTION_LOGIN:
                //判断是否登录
                action = 0;
                if (!UserUtil.isLogin(mContext)) {
                    return;
                }
                //继续下一步
                click(preEventListener);
                break;
            case ACTION_TB_AUTH:
                action = 0;
                //检查授权是否成功
                getTaoBaoH5AuthInfo(getSource(), goodsDetail.getGoods().getGoodsId(), false, new IAuthResult() {
                    @Override
                    public void onSuccess() {
                        //授权成功,继续下一步
                        taoBaoAuthSuccess = true;
                        click(preEventListener);
                    }
                });
                break;
            case ACTION_PDD_AUTH:
                action = 0;
                //检查拼多多授权是否成功
                isPDDAuthed(false, new IAuthResult() {
                    @Override
                    public void onSuccess() {
                        //授权成功,继续下一步
                        pddAuthSuccess = true;
                        click(preEventListener);
                    }
                });
                break;
        }
    }
    public void click(IPreEventListener preEventListener) {
        action = 0;
        this.preEventListener = preEventListener;
        //用户是否登录
        if (!UserUtil.isLogin(mActivity)) {
            //去登录
            Intent intent = new Intent(mContext, LoginSelectActivity.class);
            intent.putExtra("from", "淘宝");
            mContext.startActivity(intent);
            action = ACTION_LOGIN;
            return;
        }
        int goodsType = 0;
        switch (goodsType) {
            case Constant.GOODS_TYPE_TB:
                //判断是否授权成功
                if (!taoBaoAuthSuccess) {
                    getTaoBaoH5AuthInfo(getSource(), goodsDetail.getGoods().getGoodsId(), true, new IAuthResult() {
                        @Override
                        public void onSuccess() {
                            //授权成功,继续下一步
                            taoBaoAuthSuccess = true;
                            tbAuthSuccess();
                        }
                    });
                } else {
                    tbAuthSuccess();
                }
                return;
            case Constant.GOODS_TYPE_PDD:
                if (!pddAuthSuccess) {
                    //检查拼多多授权是否成功
                    isPDDAuthed(true, new IAuthResult() {
                        @Override
                        public void onSuccess() {
                            //授权成功,继续下一步
                            pddAuthSuccess = true;
                            pddAuthSuccess();
                        }
                    });
                } else {
                    pddAuthSuccess();
                }
                return;
            default:
                return;
        }
        //用户是否
    }
    public void startClick(int type, IPreEventListener preEventListener) {
        action = 0;
        taoBaoAuthSuccess = false;
        this.type = type;
        click(preEventListener);
    }
    private void getTaoBaoH5AuthInfo(final String source, String goodsId, final boolean needJumpAuth, final IAuthResult authResultListener) {
        if (pd == null)
            pd = new ShapeLoadingDialog.Builder(mContext).build();
        if (!pd.isShowing())
            pd.show();
        Log.e("detail", "getTaoBaoH5AuthInfo--" + source);
        String uid = UserUtil.getUid(mContext) + "";
        ShoppingApi.getTaoBaoAuthInfo(mContext, uid, goodsId, source, true, new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optInt("code") == 0) {
                    final String authLink = jsonObject.optJSONObject("data").getString("authLink");
                    Log.e("detail", "authLink--" + authLink);
                    pd.dismiss();
                    if (!StringUtils.isEmpty(authLink)) {
                        if (!needJumpAuth) {
                            return;
                        }
                        if (AlibcLogin.getInstance().isLogin()) {
                            //去会员授权
                            AlibcTradeUtil.openAuthLink(mActivity, authLink, new AlibcTradeCallback() {
                                @Override
                                public void onTradeSuccess(AlibcTradeResult alibcTradeResult) {
                                    //打开淘宝成功
                                    action = ACTION_TB_AUTH;
                                }
                                @Override
                                public void onFailure(int i, String s) {
                                    action = 0;
                                }
                            });
                        } else {
                            final AlibcLogin alibcLogin = AlibcLogin.getInstance();
                            alibcLogin.showLogin(new AlibcLoginCallback() {
                                @Override
                                public void onSuccess(int i, String s, String s1) {
                                    //淘宝登录成功
                                    //去会员授权
                                    AlibcTradeUtil.openAuthLink(mActivity, authLink, new AlibcTradeCallback() {
                                        @Override
                                        public void onTradeSuccess(AlibcTradeResult alibcTradeResult) {
                                            //打开淘宝成功
                                            action = ACTION_TB_AUTH;
                                        }
                                        @Override
                                        public void onFailure(int i, String s) {
                                            action = 0;
                                        }
                                    });
                                }
                                @Override
                                public void onFailure(int code, String msg) {
                                    InitAlibcSdk.init();
                                    Toast.makeText(mContext, "淘宝授权失败,请稍候再试",
                                            Toast.LENGTH_LONG).show();
                                }
                            });
                        }
                    }
                } else if (jsonObject.optInt("code") == 1) {
                    authResultListener.onSuccess();
                } else {
                    pd.dismiss();
                }
            }
            @Override
            public void onFinish() {
                super.onFinish();
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                super.onFailure(statusCode, headers, responseString, throwable);
                pd.dismiss();
                Toast.makeText(mContext, "网络请求失败", Toast.LENGTH_SHORT).show();
            }
        });
    }
    public void isPDDAuthed(final boolean jumpAuth, final IAuthResult authResult) {
        ShoppingApi.isPDDAuthed(mContext, UserUtil.getUid(mContext) + "", true, new BasicTextHttpResponseHandler() {
            @Override
            public void onStart() {
                super.onStart();
                if (pd != null && !pd.isShowing())
                    pd.show();
            }
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                super.onSuccessPerfect(statusCode, headers, jsonObject);
                if (jsonObject.optInt("code") == 0) {
                    authResult.onSuccess();
                } else {
                    //去授权
                    if (jumpAuth)
                        getPDDAuthInfo();
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
            }
            @Override
            public void onFinish() {
                super.onFinish();
                if (pd != null && pd.isShowing())
                    pd.dismiss();
            }
        });
    }
    public void getPDDAuthInfo() {
        ShoppingApi.getPDDAuthInfo(mContext, UserUtil.getUid(mContext) + "", true, new BasicTextHttpResponseHandler() {
            @Override
            public void onStart() {
                super.onStart();
                if (pd != null && !pd.isShowing())
                    pd.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");
                    GoodsConvertLinkJumpLink pddJumpLink = new Gson().fromJson(data.toString(), GoodsConvertLinkJumpLink.class);
                    GoodsBuyJumpUtil.jumpPDD(mContext, pddJumpLink);
                } else {
                    Toast.makeText(mContext, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show();
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
            }
            @Override
            public void onFinish() {
                super.onFinish();
                if (pd != null && pd.isShowing())
                    pd.dismiss();
            }
        });
    }
    private void tbAuthSuccess() {
        preEventListener.onPreSuccess();
    }
    private void pddAuthSuccess() {
        preEventListener.onPreSuccess();
    }
    public static interface IPreEventListener {
        //准备工作已经做好
        public void onPreSuccess();
    }
    static interface IAuthResult {
        //准备工作已经做好
        public void onSuccess();
    }
}
app/src/main/java/com/tejia/lijin/app/ui/mine/LoginSelectActivity.java
@@ -313,7 +313,7 @@
            case R.id.tv_login_onekey:
                //TODO 一键登录
                openOneKeyLogin(true)
                openOneKeyLogin(true);
                break;
        }
    }
app/src/main/java/com/tejia/lijin/app/ui/recommend/GoodsDetailActivity.java
@@ -8,20 +8,20 @@
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.text.SpannableStringBuilder;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.SpannedString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
@@ -30,14 +30,10 @@
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
@@ -52,31 +48,21 @@
import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams;
import com.alibaba.baichuan.trade.biz.login.AlibcLogin;
import com.alibaba.baichuan.trade.biz.login.AlibcLoginCallback;
import com.androidquery.AQuery;
import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.sina.weibo.sdk.share.WbShareCallback;
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
import com.tejia.lijin.app.BuXinConstant;
import com.tejia.lijin.app.R;
import com.tejia.lijin.app.ShoppingApi;
import com.tejia.lijin.app.callBack.DragFloatActionInterface;
import com.tejia.lijin.app.callBack.LonginTaobaoCallback;
import com.tejia.lijin.app.callBack.MiDuoTradeCallback;
import com.tejia.lijin.app.entity.CouponInfo;
import com.tejia.lijin.app.entity.CouponUser;
import com.tejia.lijin.app.entity.FreeSingleTicket;
import com.tejia.lijin.app.entity.GoodsDetail;
import com.tejia.lijin.app.entity.PushEventData;
import com.tejia.lijin.app.entity.ShareUser;
import com.tejia.lijin.app.entity.TaoBaoGoodsBrief;
import com.tejia.lijin.app.entity.TbPidInfo;
import com.tejia.lijin.app.entity.TopMenuRightPopContent;
import com.tejia.lijin.app.entity.UserInfo;
import com.tejia.lijin.app.entity.common.ImageShowEntity;
import com.tejia.lijin.app.entity.share.SingleGoodsShareInfo;
@@ -84,41 +70,35 @@
import com.tejia.lijin.app.ui.dialog.JumpTaoBaoDialog;
import com.tejia.lijin.app.ui.dialog.ReceiveCouponHintDialog;
import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog;
import com.tejia.lijin.app.ui.goods.GoodsDetailPreEventManager;
import com.tejia.lijin.app.ui.invite.ShareBrowserActivity;
import com.tejia.lijin.app.ui.mine.Collect28Activity;
import com.tejia.lijin.app.ui.mine.FreeSingleTicketAdapter;
import com.tejia.lijin.app.ui.mine.LoginSelectActivity;
import com.tejia.lijin.app.ui.mine.MyFootmarkActivity;
import com.tejia.lijin.app.ui.mine.ShoppingTrolleyActivity;
import com.tejia.lijin.app.ui.trends.BigImageActivity;
import com.tejia.lijin.app.util.ApkUtil;
import com.tejia.lijin.app.util.Constant;
import com.tejia.lijin.app.util.DragFloatActionButton;
import com.tejia.lijin.app.util.FlowLayout;
import com.tejia.lijin.app.util.GlideCircleTransform;
import com.tejia.lijin.app.util.GlideRoundTransform;
import com.tejia.lijin.app.util.ImageUtil;
import com.tejia.lijin.app.util.InitAlibcSdk;
import com.tejia.lijin.app.util.KeFuUtil;
import com.tejia.lijin.app.util.LoginTaobao;
import com.tejia.lijin.app.util.RecordImageTextVideo;
import com.tejia.lijin.app.util.SetLabels;
import com.tejia.lijin.app.util.Toast_Dialog;
import com.tejia.lijin.app.util.TopStatusSettings;
import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil;
import com.tejia.lijin.app.util.clipboard.ClipboardUtil;
import com.tejia.lijin.app.util.ui.GoodsDetailUtil;
import com.tejia.lijin.app.util.umengCustomEvent.GoodsCustomEvent;
import com.tejia.lijin.app.util.umengCustomEvent.SearchCustomEvent;
import com.tejia.lijin.app.util.user.LoginAndInviteStatusUtil;
import com.tejia.lijin.app.util.user.UserUtil;
import com.umeng.analytics.MobclickAgent;
import com.wang.avi.AVLoadingIndicatorView;
import com.wpc.library.content.ConnectivityChangeHelper;
import com.wpc.library.recyclerviewhelper.DividerItemDecoration;
import com.wpc.library.util.NetUtils;
import com.wpc.library.util.SystemCommon;
import com.wpc.library.util.common.DimenUtils;
import com.wpc.library.util.common.StringUtils;
import com.wpc.library.widget.MyGridView;
import com.wpc.library.widget.MyListView;
import com.wpc.library.widget.MyScrollView;
import org.apache.http.Header;
@@ -130,9 +110,7 @@
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
@@ -142,174 +120,89 @@
 * 商品详情过渡页--可跳转手淘原生,自我网页
 */
public class GoodsDetailActivity extends BaseActivity implements View.OnClickListener, WbShareCallback, DragFloatActionInterface {
    private ImageView iv_top_left, iv_back, iv_shop_img, iv_shop_type, iv_notif_portrait,
            iv_imgtext_status, iv_share, iv_top_right, iv_like_state, iv_loading, iv_footermark, iv_rate;
    private TextView tv_top_title1, tv_top_title2, tv_top_title3, tv_top_title4, tv_shop_name,
            tv_shop_des, tv_shop_service, tv_shop_logistics, tv_shop_des_grade, tv_shop_logistics_grade,
            tv_shop_service_grade, tv_notif_name, tv_notif_des, tv_shop_see, tv_goods_des,
            tv_currunt_page, tv_goods_price_before, tv_sales_num, tv_coupon_show, tv_goods_price_coupon,
            tv_rebate_num, tv_coupon_num, tv_command_num, tv_coupon_date, tv_loading,
            tv_share_money_num, tv_buy, tv_rate, tv_like;
    private FrameLayout fl_back_face, fl_content, fl_receive_coupon,
            fl_command_copy;
    private LinearLayout fl_buy, ll_share_gain, ll_goods_detail_transition_top, ll_guess_like,
            ll_send_order, ll_add_collect, ll_labels, ll_no_net, ll_no_data, ll_request_failture,
            ll_notification, ll_loading, ll_coupon, ll_top_title, ll_command_copy;
    //发货地,相似搜索
    private LinearLayout ll_address, ll_same;
    private TextView tv_address;
public class GoodsDetailActivity extends BaseActivity implements View.OnClickListener {
    //佣金构成信息
    TextView tv_fanli_composition;
    LinearLayout ll_fanli_composition;
    private View v_1, v_2, v_3, v_4, v_cover, v_cover1, v_cover2;
    private MyGridView gv_guess, gv_relative;
    /**************************控件定义开始**************************/
    private MyScrollView lv_goods_pic;
    private WebView webView;
    private LinearLayout ll_content;
    //顶部导航栏
    private ImageView iv_back, iv_top_left;
    private LinearLayout ll_top_title;
    private TextView tv_top_title1, tv_top_title2, tv_top_title3, tv_top_title4;
    private View v_1, v_2, v_3, v_4, v_cover, v_cover1, v_cover2;
    //商品基础信息
    private ViewPager vp_goods_detail;
    private ConnectivityChangeHelper mChangeHelper;
    private ImageAdapter bannerAdapter;
    private List<String> mBanners = new ArrayList<>();
    private TextView tv_currunt_page;
    private LinearLayout ll_labels;
    private TextView tv_name;
    private TextView tv_sales_num;
    private int picNum = 1;
    String goodsId;
    String goodsTaoBaoId;
    private DisplayImageOptions options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.ic_goods_default)
            .showImageOnFail(R.drawable.ic_goods_default)
            .showImageOnLoading(R.drawable.ic_goods_default)
            .resetViewBeforeLoading(true).cacheInMemory(true)
            .cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
            .considerExifParams(true)
            .displayer(new FadeInBitmapDisplayer(300)).build();
    private Map<String, String> exParams;//yhhpass参数
    AlibcShowParams alibcShowParams;
    AlibcTaokeParams alibcTaokeParams;
    //小黄条
    private String TYPE = "goodsDetail";
    private TextView tv_notice_content;
    private LinearLayout ll_notice;
    private ImageView iv_close;
    AVLoadingIndicatorView avLoadingIndicatorView;
    //推荐语
    private LinearLayout ll_recommend;
    private TextView tv_recommend;
    //发货地
    private LinearLayout ll_address;
    private TextView tv_address;
    //口令复制
    private TextView tv_copy_link;
    //商品店铺信息
    private LinearLayout ll_shop;
    private ImageView iv_shop_img, iv_shop_type;
    private TextView tv_shop_name;
    private TextView tv_shop_des, tv_shop_service, tv_shop_logistics, tv_shop_des_grade, tv_shop_logistics_grade,
            tv_shop_service_grade;
    Animation inAnima;
    Animation outAnima;
    //权益类型
    private LinearLayout ll_rights_type;
    private FlowLayout fl_rights_type;
    int index = 1;
    ListView lv_share_des;
    //价格信息/红包
    private LinearLayout ll_price;
    private RecyclerView rv_price_info;
    PopupWindow mTopRightPopupWindow;
    private List<TopMenuRightPopContent> mulList = new ArrayList<>();
    TopMenuRightPopContentAdapter shareFromAdapter;
    private Toast_Dialog toast_dialog;
    //图文详情
    private ImageView iv_imgtext_status;
    private WebView webView;
    private LinearLayout ll_loading;
    private ImageView iv_loading;
    private TextView tv_loading;
    boolean isScroll = false;
    boolean isVisible = false;
    long inputTime = 0;
    //猜你喜欢
    private LinearLayout ll_guess_like;
    private MyGridView gv_guess;
    //底部按钮
    private LinearLayout ll_coupon_container;
    /**
     * 免单开始
     */
    //免单
    private TextView tv_coupon_date_miandan, tv_coupon_num_miandan;
    private FrameLayout fl_coupon_miandan;
    private TextView tv_big_btn;
    private LinearLayout ll_bottom;
    /*
    商品详情免单券弹框接口
 */
    private void getGoodsMianDanCouponList() {
        if (pd == null)
            pd = new ShapeLoadingDialog.Builder(this).build();
        if (!pd.isShowing())
            pd.show();
        String uid = getSharedPreferences("user", MODE_PRIVATE)
                .getString("uid", "");
        ShoppingApi.getGoodsCouponList(this, uid, Constant.GOODS_TYPE_TB, goodsId, new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    initPopubWindow(jsonObject.optJSONObject("data"));
                } else {
                    Toast.makeText(GoodsDetailActivity.this,
                            jsonObject.optString("msg"), Toast.LENGTH_LONG).show();
                }
            }
            @Override
            public void onFinish() {
                super.onFinish();
                pd.dismiss();
            }
        });
    }
    private View view_share_buy_divider;
    private void initShareAndBuyBtn(boolean shareValid, boolean fanliValid) {
        if (view_share_buy_divider == null)
            view_share_buy_divider = findViewById(R.id.view_share_buy_divider);
        if (shareValid && fanliValid) {
            fl_buy.setVisibility(View.VISIBLE);
            ll_share_gain.setVisibility(View.VISIBLE);
            view_share_buy_divider.setVisibility(View.GONE);
        } else if (shareValid) {
            ll_share_gain.setVisibility(View.VISIBLE);
            ll_share_gain.setBackgroundResource(R.drawable.shape_go_share_full);
            fl_buy.setVisibility(View.GONE);
            view_share_buy_divider.setVisibility(View.VISIBLE);
        } else if (fanliValid) {
            fl_buy.setVisibility(View.VISIBLE);
            fl_buy.setBackgroundResource(R.drawable.shape_go_fanli_full);
            ll_share_gain.setVisibility(View.GONE);
            view_share_buy_divider.setVisibility(View.VISIBLE);
        } else {
            fl_buy.setVisibility(View.GONE);
            ll_share_gain.setVisibility(View.GONE);
        }
    }
    /**
     * 免单结束
     */
    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.activity_goods_detail_transition);
        TopStatusSettings.setStatusViewAndDeepColor2(this);
        from = getIntent().getStringExtra("from");
        if (StringUtils.isEmpty(from))
            from = "";
        GoodsCustomEvent.goodsDetail(this, from);
        inputTime = System.currentTimeMillis();
        //推荐语
        ll_recommend = findViewById(R.id.ll_recommend);
        tv_recommend = findViewById(R.id.tv_recommend);
        //复制链接
        findViewById(R.id.ll_copy_link).setOnClickListener(this);
        tv_copy_link = findViewById(R.id.tv_copy_link);
        tv_copy_link.setText("复制口令");
        ll_coupon_container = findViewById(R.id.ll_coupon_container);
    //底部操作栏
    private LinearLayout ll_bottom, ll_add_collect;
    private ImageView iv_like_state;
    private TextView tv_like;
    private LinearLayout ll_fanli, ll_buy;
    private TextView tv_fanli_money_num, tv_buy;
    //用户领取数据
    private LinearLayout ll_notification;
    private ImageView iv_notif_portrait;
    private TextView tv_notif_name, tv_notif_des;
    //状态数据
    private FrameLayout fl_face, fl_back_face;
    private LinearLayout ll_goods_nothing;
    private ImageView iv_back_face;
    private AVLoadingIndicatorView avLoadingIndicatorView;
    private LinearLayout ll_no_net, ll_no_data, ll_request_failture;
    /**************************控件定义结束**************************/
    private GoodsDetailPreEventManager goodsDetailPreEventManager;
    private void initView() {
        ll_content = findViewById(R.id.ll_content);
        lv_goods_pic = findViewById(R.id.lv_goods_pic);
        tv_top_title1 = findViewById(R.id.tv_top_title1);
        tv_top_title2 = findViewById(R.id.tv_top_title2);
@@ -319,13 +212,10 @@
        tv_like = findViewById(R.id.tv_like);
        ll_add_collect = findViewById(R.id.ll_add_collect);
        ll_labels = findViewById(R.id.ll_labels);
        ll_send_order = findViewById(R.id.ll_send_order);
        tv_share_money_num = findViewById(R.id.tv_share_money_num);
        tv_buy = findViewById(R.id.tv_buy);
        ll_top_title = findViewById(R.id.ll_top_title);
        iv_shop_img = findViewById(R.id.iv_shop_img);
        iv_shop_type = findViewById(R.id.iv_shop_type);
        tv_shop_see = findViewById(R.id.tv_shop_see);
        tv_shop_name = findViewById(R.id.tv_shop_name);
        tv_shop_des = findViewById(R.id.tv_shop_des);
        tv_shop_service = findViewById(R.id.tv_shop_service);
@@ -333,33 +223,75 @@
        tv_shop_des_grade = findViewById(R.id.tv_shop_des_grade);
        tv_shop_logistics_grade = findViewById(R.id.tv_shop_logistics_grade);
        tv_shop_service_grade = findViewById(R.id.tv_shop_service_grade);
        iv_footermark = findViewById(R.id.iv_footermark);
//        iv_like = findViewById(R.id.iv_like);
        v_cover = findViewById(R.id.v_cover);
        v_cover1 = findViewById(R.id.v_cover1);
        v_cover2 = findViewById(R.id.v_cover2);
        ll_goods_detail_transition_top = findViewById(R.id.ll_goods_detail_transition_top);
        v_1 = findViewById(R.id.v_1);
        v_2 = findViewById(R.id.v_2);
        v_3 = findViewById(R.id.v_3);
        v_4 = findViewById(R.id.v_4);
        avLoadingIndicatorView = findViewById(R.id.avi);
        ll_share_gain = findViewById(R.id.ll_share_gain);
        ll_guess_like = findViewById(R.id.ll_guess_like);
        fl_buy = findViewById(R.id.fl_buy);
        iv_imgtext_status = findViewById(R.id.iv_imgtext_status);
        iv_share = findViewById(R.id.iv_share);
        iv_top_right = findViewById(R.id.iv_top_bar_right);
        ll_loading = findViewById(R.id.ll_loading);
        tv_loading = findViewById(R.id.tv_loading);
        iv_loading = findViewById(R.id.iv_loading);
        webView = findViewById(R.id.webView);
        vp_goods_detail = findViewById(R.id.vp_goods_img);
        tv_currunt_page = findViewById(R.id.tv_page_num);
        tv_sales_num = findViewById(R.id.tv_sales_num);
        //发货地,相似搜索
        ll_address = findViewById(R.id.ll_address);
        tv_address = findViewById(R.id.tv_address);
        gv_guess = findViewById(R.id.gv_guess_like);
        fl_back_face = findViewById(R.id.fl_back_face);
        iv_notif_portrait = findViewById(R.id.iv_notif_portrait);
        tv_notif_name = findViewById(R.id.tv_notif_name);
        tv_notif_des = findViewById(R.id.tv_notif_des);
        iv_top_left = findViewById(R.id.iv_top_bar_left1);
        iv_back = findViewById(R.id.iv_back);
        ll_bottom = findViewById(R.id.ll_bottom);
        ll_notification = findViewById(R.id.ll_notification);
        tv_notice_content = findViewById(R.id.tv_notice_content);
        ll_notice = findViewById(R.id.ll_notice);
        iv_close = findViewById(R.id.iv_close);
        ll_no_net = findViewById(R.id.ll_no_net);
        ll_no_data = findViewById(R.id.ll_no_data);
        ll_request_failture = findViewById(R.id.ll_request_failture);
        tv_name = findViewById(R.id.tv_name);
        ll_shop = findViewById(R.id.ll_shop);
        ll_rights_type = findViewById(R.id.ll_rights_type);
        fl_rights_type = findViewById(R.id.fl_rights_type);
        //价格信息/红包
        ll_price = findViewById(R.id.ll_price);
        rv_price_info = findViewById(R.id.rv_price_info);
        ll_fanli = findViewById(R.id.ll_fanli);
        ll_buy = findViewById(R.id.ll_buy);
        tv_fanli_money_num = findViewById(R.id.tv_fanli_money_num);
    }
    private void initData() {
        //umeng统计
        GoodsCustomEvent.goodsDetail(this, from);
        inputTime = System.currentTimeMillis();
        goodsId = getIntent().getExtras().getString("id");
        tv_loading.setText("宝贝详情页加载中...");
        AnimationDrawable animationDrawable = (AnimationDrawable) getResources().getDrawable(
                R.drawable.anim_list_loading);
        iv_loading.setImageDrawable(animationDrawable);
        animationDrawable.start();
        webView = findViewById(R.id.webView);
        webView.setWebViewClient(new MWebviewClient());
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
@@ -369,68 +301,17 @@
        avLoadingIndicatorView.setVisibility(View.VISIBLE);
        Animation ani = AnimationUtils.loadAnimation(this, R.anim.touming); //申明一个动画
        avLoadingIndicatorView.setAnimation(ani);//为图片绑定动画
        vp_goods_detail = findViewById(R.id.vp_goods_img);
        tv_currunt_page = findViewById(R.id.tv_page_num);
        tv_goods_price_before = findViewById(R.id.tv_goods_price_before);
        tv_sales_num = findViewById(R.id.tv_sales_num);
        tv_coupon_show = findViewById(R.id.tv_coupon_show);
        tv_goods_price_coupon = findViewById(R.id.tv_goods_price_coupon);
        tv_rebate_num = findViewById(R.id.tv_rebate_num);
        tv_coupon_num = findViewById(R.id.tv_coupon_num);
        tv_command_num = findViewById(R.id.tv_command_num);
        tv_coupon_date = findViewById(R.id.tv_coupon_date);
        fl_receive_coupon = findViewById(R.id.fl_receive_coupon);
        fl_command_copy = findViewById(R.id.fl_command_copy);
        ll_coupon = findViewById(R.id.ll_coupon);
        //发货地,相似搜索
        ll_same = findViewById(R.id.ll_same);
        ll_address = findViewById(R.id.ll_address);
        tv_address = findViewById(R.id.tv_address);
        ll_command_copy = findViewById(R.id.ll_command_copy);
        gv_relative = findViewById(R.id.gv_relative);
        gv_guess = findViewById(R.id.gv_guess_like);
        fl_back_face = findViewById(R.id.fl_back_face);
        findViewById(R.id.fl_face).setVisibility(View.VISIBLE);
        iv_notif_portrait = findViewById(R.id.iv_notif_portrait);
        tv_notif_name = findViewById(R.id.tv_notif_name);
        tv_notif_des = findViewById(R.id.tv_notif_des);
        lv_share_des = findViewById(R.id.lv_share_des);
        lv_share_des.setClickable(false);
        //返利比例信息
        tv_rate = findViewById(R.id.tv_rate);
        iv_rate = findViewById(R.id.iv_rate);
        ll_fanli_composition = findViewById(R.id.ll_fanli_composition);
        tv_fanli_composition = findViewById(R.id.tv_fanli_composition);
        bannerAdapter = new ImageAdapter(mBanners, this);
        vp_goods_detail.setAdapter(bannerAdapter);
        vp_goods_detail.setCurrentItem(0, true);
        iv_top_left = findViewById(R.id.iv_top_bar_left1);
        iv_back = findViewById(R.id.iv_back);
        tv_goods_des = findViewById(R.id.tv_goods_des);
        ll_bottom = findViewById(R.id.ll_bottom);
        tv_big_btn = findViewById(R.id.tv_big_btn);
        goodsId = getIntent().getExtras().getString("id");
        rAdapter = new RelativeGoodsAdapter(this, rList, "相关推荐");
        gv_relative.setAdapter(rAdapter);
        gAdapter = new RelativeGoodsAdapter(this, gList, "猜你喜欢");
        gv_guess.setAdapter(gAdapter);
        ll_notification = findViewById(R.id.ll_notification);
        inAnima = AnimationUtils.loadAnimation(this, R.anim.goods_detail_notify_input);
        outAnima = AnimationUtils
                .loadAnimation(this, R.anim.goods_detail_notify_out);
//        ll_notification.startAnimation(inAnima);
//        inAnima.start();
        inAnima.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
@@ -489,53 +370,6 @@
            }
        });
        tv_notice_content = findViewById(R.id.tv_notice_content);
        ll_notice = findViewById(R.id.ll_notice);
        iv_close = findViewById(R.id.iv_close);
        getAppPageNotification();
        fl_content = findViewById(R.id.fl_content);
        ll_no_net = findViewById(R.id.ll_no_net);
        ll_no_data = findViewById(R.id.ll_no_data);
        ll_request_failture = findViewById(R.id.ll_request_failture);
        findViewById(R.id.tv_net_setting).setOnClickListener(this);
        findViewById(R.id.tv_refresh).setOnClickListener(this);
        findViewById(R.id.fl_goods_detail).setOnClickListener(this);
        iv_top_left.setOnClickListener(this);
        iv_back.setOnClickListener(this);
        tv_top_title1.setOnClickListener(this);
        tv_top_title2.setOnClickListener(this);
        tv_top_title3.setOnClickListener(this);
        tv_top_title4.setOnClickListener(this);
        ll_add_collect.setOnClickListener(this);
        ll_send_order.setOnClickListener(this);
        ll_share_gain.setOnClickListener(this);
        fl_receive_coupon.setOnClickListener(this);
        fl_back_face.setOnClickListener(this);
        fl_buy.setOnClickListener(this);
        iv_footermark.setOnClickListener(this);
//        iv_like.setOnClickListener(this);
        ll_top_title.setVisibility(View.GONE);
        iv_share.setOnClickListener(this);
        iv_top_right.setOnClickListener(this);
        tv_shop_see.setOnClickListener(this);
        fl_command_copy.setOnClickListener(this);
        v_cover2.setOnClickListener(this);
        //相似搜索点击
        ll_same.setOnClickListener(this);
        iv_rate.setOnClickListener(this);
        tv_big_btn.setOnClickListener(this);
        if (getSharedPreferences("user", MODE_PRIVATE).getString("is_goods_web_detail", "0").equalsIgnoreCase("1")) {
            Intent intent = new Intent(GoodsDetailActivity.this, GoodsDetailBrowerActivity.class);
            intent.putExtra("id", goodsId);
            startActivity(intent);
            finish();
        }
        vp_goods_detail.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@@ -558,25 +392,24 @@
            public void onScroll(int scrollY) {
                int titleHeight = DimenUtils.dip2px(GoodsDetailActivity.this, 48);
                int marginTopHeight = DimenUtils.dip2px(GoodsDetailActivity.this, 8);
                if (scrollY < (ll_goods_detail_transition_top.getHeight() - titleHeight * 2)) {//头部
                if (scrollY < (vp_goods_detail.getHeight() - titleHeight * 2)) {//头部
                    setPosition(1);
                } else if (scrollY >= ll_goods_detail_transition_top.getHeight() - titleHeight * 2
                        && scrollY < (ll_goods_detail_transition_top.getHeight() + webView.getHeight() - titleHeight)
                } else if (scrollY >= vp_goods_detail.getHeight() - titleHeight * 2
                        && scrollY < (vp_goods_detail.getHeight() + webView.getHeight() - titleHeight)
                        && webView.getVisibility() != View.GONE) {//详情图片
                    setPosition(2);
                } else if (scrollY >= (ll_goods_detail_transition_top.getHeight()
                        + webView.getHeight() - titleHeight + marginTopHeight) && scrollY < (ll_goods_detail_transition_top.getHeight()
                } else if (scrollY >= (vp_goods_detail.getHeight()
                        + webView.getHeight() - titleHeight + marginTopHeight) && scrollY < (vp_goods_detail.getHeight()
                        + webView.getHeight() + ll_guess_like.getHeight() - titleHeight + marginTopHeight)
                        && webView.getVisibility() != View.GONE) {//猜你喜欢
                    setPosition(3);
                } else if (scrollY >= (ll_goods_detail_transition_top.getHeight() + webView.getHeight()
                } else if (scrollY >= (vp_goods_detail.getHeight() + webView.getHeight()
                        + ll_guess_like.getHeight() - titleHeight + marginTopHeight)) {//推荐
                    setPosition(4);
                } else {
                    setPosition(4);
                }
                float baseHeight = ll_goods_detail_transition_top.getHeight() / 4;
                float baseHeight = vp_goods_detail.getHeight() / 4;
                if (scrollY >= 1
                        && scrollY < baseHeight) {
                    if (scrollY / baseHeight < 0.1) {
@@ -607,14 +440,29 @@
            }
        });
        gv_relative.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                TaoBaoGoodsBrief info = (TaoBaoGoodsBrief) adapterView.getAdapter().getItem(position);
                goodsId = info.getGoodsId();
                getGoodsDetail();
        ll_top_title.setVisibility(View.GONE);
        findViewById(R.id.tv_net_setting).setOnClickListener(this);
        findViewById(R.id.tv_refresh).setOnClickListener(this);
        findViewById(R.id.fl_goods_detail).setOnClickListener(this);
        iv_top_left.setOnClickListener(this);
        iv_back.setOnClickListener(this);
        tv_top_title1.setOnClickListener(this);
        tv_top_title2.setOnClickListener(this);
        tv_top_title3.setOnClickListener(this);
        tv_top_title4.setOnClickListener(this);
        ll_add_collect.setOnClickListener(this);
        fl_back_face.setOnClickListener(this);
        v_cover2.setOnClickListener(this);
        if (getSharedPreferences("user", MODE_PRIVATE).getString("is_goods_web_detail", "0").equalsIgnoreCase("1")) {
            Intent intent = new Intent(GoodsDetailActivity.this, GoodsDetailBrowerActivity.class);
            intent.putExtra("id", goodsId);
            startActivity(intent);
            finish();
            }
        });
        gv_guess.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
@@ -624,70 +472,21 @@
            }
        });
        initMianDanView();
        initTopRightPopupWindow();
        toast_dialog = new Toast_Dialog(this);
        tv_goods_des.setOnLongClickListener(new View.OnLongClickListener() {
        tv_name.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if (tv_goods_des.getText() != null && !StringUtils.isEmpty(tv_goods_des.getText().toString())) {
                    String str1 = tv_goods_des.getText().toString();
                if (tv_name.getText() != null && !StringUtils.isEmpty(tv_name.getText().toString())) {
                    String str1 = tv_name.getText().toString();
                    String substr1 = str1.replaceFirst("## ", "");
                    ClipboardUtil.copy(getApplicationContext(), substr1);
//                    SingleToast.showToast(ll_novice.getContext(), "复制成功");
                    toast_dialog.MyDialog("标题复制成功", false);
                }
                return false;
            }
        });
        acbutton = findViewById(R.id.actionButton);
        acbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //登陆
                if (getSharedPreferences("user", MODE_PRIVATE).getBoolean("isLogin", false)) {
                    LoginTaobao.getLoginTaobao(GoodsDetailActivity.this, new LonginTaobaoCallback() {
                        @Override
                        public void onSuccess() {
                            startActivity(new Intent(GoodsDetailActivity.this, ShoppingTrolleyActivity.class));
                        }
                        @Override
                        public void onError() {
                            Toast.makeText(GoodsDetailActivity.this, "登陆淘宝失败", Toast.LENGTH_SHORT).show();
                        }
                    });
                } else {
                    Intent intent = new Intent(GoodsDetailActivity.this, LoginSelectActivity.class);
                    intent.putExtra("from", "淘宝");
                    startActivity(intent);
                }
            }
        });
        img = findViewById(R.id.actionButton_img);
        //获取 取消悬浮控件的宽高
        ViewTreeObserver vto2 = img.getViewTreeObserver();
        vto2.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                img.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                //传入 主界面 指定控件的宽高
                if (acbutton != null) {
                    acbutton.setWidthHeight((int) (img.getWidth() * 0.77), (int) (img.getHeight() * 0.77));
                }
                img.setVisibility(View.GONE);//隐藏
            }
        });
        //  购物车显示
        RecordImageTextVideo textVideo = new RecordImageTextVideo(this);
        //服务器让显示 购物车&&本地也让显示
        if (textVideo.getCart_float().equals("1") && textVideo.getLocalCart_float() != 1 && getSharedPreferences("user", MODE_PRIVATE).getBoolean("isLogin", false)) {
            acbutton.setVisibility(View.VISIBLE);
        } else {//隐藏购物车
            acbutton.setVisibility(View.GONE);
        }
        mChangeHelper = new ConnectivityChangeHelper(this,
                new ConnectivityChangeHelper.OnConnectivityChangeListener() {
@@ -705,89 +504,74 @@
                        }
                    }
                });
        tv_buy.postDelayed(new Runnable() {
            @Override
            public void run() {
                if ((!isDestroyed()) && isVisible && isScroll) {
                    PushEventData info = new PushEventData();
                    info.setGoodsId(goodsId);
                    info.setGoodsType("2");
                    Gson gson = new GsonBuilder().serializeNulls().create();
                    String data = gson.toJson(info);
                    GoldPushEventRequest.request(GoodsDetailActivity.this, "scanGoods", data);
                }
            }
        }, 15 * 1000);
    }
    private ImageView img;
    private DragFloatActionButton acbutton;
    /**
     * 初始化右上角提示
     */
    private void initTopRightPopupWindow() {
        View view = getLayoutInflater().inflate(R.layout.item_share_from_filter,
                null, false);
        // 创建PopupWindow实例,200,150分别是宽度和高度
        mTopRightPopupWindow = new PopupWindow(view, (int) (SystemCommon.getScreenWidth(this) / 2), ViewGroup.LayoutParams.WRAP_CONTENT, true);
        // 设置动画效果 [R.style.AnimationFade 是自己事先定义好的]
//        pw_filter.setAnimationStyle(R.style.pop_multiple);
        mTopRightPopupWindow.setTouchable(true);
        mTopRightPopupWindow.setOutsideTouchable(false);
        mTopRightPopupWindow.setFocusable(false);
        ListView lv = view.findViewById(R.id.lv_filter_pw);
//        mulList.add(new TopMenuRightPopContent("复制链接", R.drawable.ic_goods_detail_copy_link));
        mulList.add(new TopMenuRightPopContent("帮助中心", R.drawable.ic_goods_detail_help_center));
        mulList.add(new TopMenuRightPopContent("新手攻略", R.drawable.ic_goods_detail_novice));
        mulList.add(new TopMenuRightPopContent("联系客服", R.drawable.ic_goods_detail_contact_kefu));
        mulList.add(new TopMenuRightPopContent("我要吐槽", R.drawable.ic_goods_detail_criticism));
        shareFromAdapter = new TopMenuRightPopContentAdapter(this, mulList);
        lv.setAdapter(shareFromAdapter);
    private ConnectivityChangeHelper mChangeHelper;
    private ImageAdapter bannerAdapter;
    private List<String> mBanners = new ArrayList<>();
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    private int picNum = 1;
    String goodsId;
    String goodsTaoBaoId;
    private Map<String, String> exParams;//yhhpass参数
    AlibcShowParams alibcShowParams;
    AlibcTaokeParams alibcTaokeParams;
    Animation inAnima;
    Animation outAnima;
    int index = 1;
    private Toast_Dialog toast_dialog;
    boolean isScroll = false;
    boolean isVisible = false;
    long inputTime = 0;
    private View view_share_buy_divider;
    private void initFanliAndBuyBtn(boolean buyValid, boolean fanliValid) {
        if (view_share_buy_divider == null)
            view_share_buy_divider = findViewById(R.id.view_share_buy_divider);
        if (buyValid && fanliValid) {
            ll_buy.setVisibility(View.VISIBLE);
            ll_fanli.setVisibility(View.VISIBLE);
            view_share_buy_divider.setVisibility(View.GONE);
        } else if (fanliValid) {
            ll_fanli.setVisibility(View.VISIBLE);
            ll_fanli.setBackgroundResource(R.drawable.shape_go_fanli_full);
            ll_buy.setVisibility(View.GONE);
            view_share_buy_divider.setVisibility(View.VISIBLE);
        } else if (buyValid) {
            ll_buy.setVisibility(View.VISIBLE);
            ll_buy.setBackgroundResource(R.drawable.shape_go_share_full);
            ll_fanli.setVisibility(View.GONE);
            view_share_buy_divider.setVisibility(View.VISIBLE);
        } else {
            ll_buy.setVisibility(View.GONE);
            ll_fanli.setVisibility(View.GONE);
        }
    }
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                mTopRightPopupWindow.dismiss();
                v_cover.setVisibility(View.GONE);
                GoodsCustomEvent
                        .goodsDetailMoreBtn(GoodsDetailActivity.this, mulList.get(position).getName());
                SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
//                if (position == 0) {
//                    ClipboardManager manager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
//                    ClipData myClip = ClipData.newPlainText("text", h5Url);
//                    manager.setPrimaryClip(myClip);
//                    Toast.makeText(GoodsDetailActivity.this, "链接复制成功", Toast.LENGTH_LONG).show();
//                } else
                if (position == 0) {
                    Intent intent1 = new Intent(GoodsDetailActivity.this, ShareBrowserActivity.class);
                    intent1.putExtra("title", "帮助中心");
                    intent1.putExtra("url", sp.getString("help", ""));
                    startActivity(intent1);
                } else if (position == 1) {
                    RecordImageTextVideo textVideo = new RecordImageTextVideo(GoodsDetailActivity.this);
                    String url = textVideo.getvideoMoreUrl();
                    if (StringUtils.isEmpty(url)) {
                        url = textVideo.gettxtImgUtl();
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.activity_goods_detail_transition);
        TopStatusSettings.setStatusViewAndDeepColor2(this);
        from = getIntent().getStringExtra("from");
        if (StringUtils.isEmpty(from))
            from = "";
        initView();
        initData();
        getAppPageNotification();
                    }
                    Intent intent = new Intent(GoodsDetailActivity.this, ShareBrowserActivity.class);
                    intent.putExtra("url", url);
                    startActivity(intent);
                } else if (position == 2) {
//                    startActivity(new Intent(GoodsDetailActivity.this, ContactUsActivity.class));
                    KeFuUtil.jumpKeFu(GoodsDetailActivity.this, "商品详情");
                } else if (position == 3) {
                    startActivity(new Intent(GoodsDetailActivity.this, GoComplainActivity.class));
                }
            }
        });
        mTopRightPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss() {
                v_cover2.setVisibility(View.GONE);
            }
        });
    }
    Handler handler = new Handler() {
        @Override
@@ -802,8 +586,6 @@
                ll_notification.setAnimation(inAnima);
                ll_notification.startAnimation(inAnima);
//                inAnima.start();
            } else if (msg.what == 2) {
                lv_share_des.setSelection(0);
            } else if (msg.what == 3) {//关闭弹窗
                if (dialog != null && dialog.isShowing())
                    dialog.dismiss();
@@ -895,9 +677,6 @@
    boolean isNative = true;
    TbPidInfo tInfo;
    List<CouponUser> couponUsers;
    List<ShareUser> sList;
    ShareExampleAdapter shareAdapter;
    //    ProgressDialog pd;
    String from;
    String noRebateHelpLink;
    boolean isQuestDetail;
@@ -909,9 +688,6 @@
        ShoppingApi.getGoodsInfoTB(this, goodsId, uid, from, new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
//                findViewById(R.id.fl_face).setVisibility(View.GONE);
//                findViewById(R.id.ll_goods_nothing).setVisibility(View.GONE);
//                fl_content.setVisibility(View.VISIBLE);
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
                    params.bottomMargin = DimenUtils.dip2px(GoodsDetailActivity.this, 50);
@@ -919,11 +695,11 @@
                    Gson gson = new GsonBuilder().serializeNulls().create();
                    mInfo = gson.fromJson(jsonObject.optJSONObject("data").toString(), GoodsDetail.class);
                    getGoodsRecommend();
                    goodsDetailPreEventManager = new GoodsDetailPreEventManager(GoodsDetailActivity.this, mInfo);
                    h5Url = mInfo.getExtra().getH5Url();//产品h5 链接
                    couponUsers = mInfo.getExtra().getListCouponUser();
                    sList = mInfo.getExtra().getListShareUser();
                    noRebateHelpLink = mInfo.getExtra().getShare().getHelpLink();
                    if (mInfo.getGoods() != null && mInfo.getGoods().getLabels() != null && mInfo.getGoods().getLabels().size() > 0) {
@@ -932,19 +708,12 @@
                    } else {
                        ll_labels.setVisibility(View.GONE);
                    }
                    if (sList.size() <= 0) {
                        lv_share_des.setVisibility(View.GONE);
                    } else {
                        lv_share_des.setVisibility(View.VISIBLE);
                    }
                    shareAdapter = new ShareExampleAdapter(sList);
                    lv_share_des.setAdapter(shareAdapter);
                    if (timer != null) {
                        timer.cancel();
                        timer = null;
                        index = 1;
                    }
                    startTimer(sList.size());
                    goodsTaoBaoId = mInfo.getGoods().getGoodsId();
                    isCollect = mInfo.getExtra().isCollected();
@@ -954,40 +723,9 @@
                        ll_notification.setAnimation(inAnima);
                        ll_notification.startAnimation(inAnima);
                    }
                    ImageUtil.showImageFace(GoodsDetailActivity.this, mInfo.getGoods().getTitle(), mInfo.getGoods().getShopType(), tv_goods_des);
                    tv_goods_price_before.setText(mInfo.getGoods().getPriceName() + "  ¥" + mInfo.getGoods().getZkPrice());
                    ImageUtil.showImageFace(GoodsDetailActivity.this, mInfo.getGoods().getTitle(), mInfo.getGoods().getShopType(), tv_name);
                    webView.loadUrl(mInfo.getExtra().getDetailUrl());
                    tv_sales_num.setText("月销 " + mInfo.getGoods().getSalesCount());
                    tv_rebate_num.setText(" 返" + mInfo.getGoods().getMoneyInfo().getFanliMoney());
                    tv_share_money_num.setText(mInfo.getGoods().getMoneyInfo().getShareMoney());
                    //设置比例信息
                    if (!StringUtils.isEmpty(mInfo.getGoods().getMoneyInfo().getRateInfo())) {
                        tv_rate.setVisibility(View.VISIBLE);
                        tv_rate.setText(mInfo.getGoods().getMoneyInfo().getRateInfo());
                    } else {
                        tv_rate.setVisibility(View.GONE);
                    }
                    if (!StringUtils.isEmpty(mInfo.getGoods().getMoneyInfo().getRateInfoHelpUrl())) {
                        iv_rate.setVisibility(View.VISIBLE);
                    } else {
                        iv_rate.setVisibility(View.GONE);
                    }
                    //设置推荐信息
                    if (StringUtils.isEmpty(mInfo.getGoods().getDescription())) {
                        ll_recommend.setVisibility(View.GONE);
                    } else {
                        ll_recommend.setVisibility(View.VISIBLE);
                        tv_recommend.setText(mInfo.getGoods().getDescription());
                    }
                    //设置补贴信息
                    if (!StringUtils.isBlank(mInfo.getGoods().getMoneyInfo().getCompositionInfo())) {
                        tv_fanli_composition.setText(mInfo.getGoods().getMoneyInfo().getCompositionInfo());
                    }
                    Glide.with(GoodsDetailActivity.this).load(mInfo.getGoods().getShopInfo().getShopIcon())
@@ -1008,10 +746,6 @@
                            mInfo.getGoods().getShopInfo().getScoreSellerD() == 1 ? "高" : "低");
                    tv_shop_logistics_grade.setText(mInfo.getGoods().getShopInfo().getScoreLogisticsD() == 0 ? "平" :
                            mInfo.getGoods().getShopInfo().getScoreLogisticsD() == 1 ? "高" : "低");
                    if (mInfo.getGoods().getOtherInfo().getRewardCoupon() != null) {
                        tv_reward_money.setText(mInfo.getGoods().getOtherInfo().getRewardCoupon().getMaxMoney());
                        tv_reward_hint.setText(mInfo.getGoods().getOtherInfo().getRewardCoupon().getDesc());
                    }
                    if (mInfo.getExtra().isCollected()) {
                        setCollectionData(true);
@@ -1019,60 +753,11 @@
                        setCollectionData(false);
                    }
                    if (mInfo.getGoods().isHasCoupon()) {
                        if (mInfo.getGoods().getCouponInfoList() == null) {
                            List<CouponInfo> couponInfoList = new ArrayList<>();
                            couponInfoList.add(mInfo.getGoods().getCouponInfo());
                            mInfo.getGoods().setCouponInfoList(couponInfoList);
                        }
                        if (mInfo.getGoods().getCouponInfoList().size() > 3)
                            initCouponInfo(mInfo.getGoods().getCouponInfoList().subList(0, 3));
                        else
                            initCouponInfo(mInfo.getGoods().getCouponInfoList());
                        if (StringUtils.isEmpty(mInfo.getGoods().getCouponInfo().getToken())) {
                            ll_command_copy.setVisibility(View.GONE);
                        } else {
                            ll_command_copy.setVisibility(View.VISIBLE);
                            tv_command_num.setText(mInfo.getGoods().getCouponInfo().getToken());
                        }
                        tv_buy.setText(mInfo.getGoods().getMoneyInfo().getFanliMoney());
                        tv_coupon_num.setText("¥ " + mInfo.getGoods().getCouponInfo().getAmount());
                        String couponDate = StringUtils.isEmpty(mInfo.getGoods().getCouponInfo().getStartTime()) ? "" :
                                mInfo.getGoods().getCouponInfo().getStartTime() + "-" + mInfo.getGoods().getCouponInfo().getEndTime();
                        tv_coupon_date.setText("使用期限:" + couponDate);
                        tv_goods_price_coupon.setText(mInfo.getGoods().getCouponPrice());
//                        NewbieGuide.with(GoodsDetailActivity.this)
//                                .setLabel("guideDetail")
////                                .alwaysShow(true)//总是显示,调试时可以打开
//                                .addGuidePage(GuidePage.newInstance()
//                                        .addHighLight(fl_buy, HighLight.Shape.ROUND_RECTANGLE,
//                                                20, 20, null)
//                                        .setLayoutRes(R.layout.item_guide_detail2, R.id.iv_next)
//                                        .setEverywhereCancelable(false)
//                                ).show();
                    } else {
                        ll_command_copy.setVisibility(View.GONE);
                        tv_buy.setText(mInfo.getGoods().getMoneyInfo().getFanliMoney());
                        tv_coupon_show.setVisibility(View.GONE);
                        ll_coupon.setVisibility(View.GONE);
                        tv_goods_price_coupon.setText(mInfo.getGoods().getZkPrice());
                    }
                    //发货地设置
                    if (!StringUtils.isBlank(mInfo.getGoods().getProvCity())) {
                        ll_address.setVisibility(View.VISIBLE);
                        tv_address.setText(mInfo.getGoods().getProvCity());
                    }
                    //一键发单设置
                    GoodsDetailUtil.initSendOrderView(GoodsDetailActivity.this, mInfo.getExtra());
                    fl_buy.setVisibility(mInfo.getExtra().isFanliValid() ? View.VISIBLE : View.GONE);
                    tv_rebate_num.setVisibility(mInfo.getExtra().isFanliValid() ? View.VISIBLE : View.GONE);
                    Log.i("mResult", "isLike的值为" + mInfo.getGoods().getGoodsId());
@@ -1083,11 +768,10 @@
                    bannerAdapter.notifyDataSetChanged();
                    vp_goods_detail.setCurrentItem(0);
                    isNative = mInfo.getExtra().isNative();
                    setMianDanData();
                    initShareAndBuyBtn(mInfo.getExtra().isShareValid(), mInfo.getExtra().isFanliValid());
                    initFanliAndBuyBtn(mInfo.getExtra().isShareValid(), mInfo.getExtra().isFanliValid());
                    requestState(0);
                } else if (jsonObject.optString("code").equalsIgnoreCase("2")) {
                    fl_content.setVisibility(View.GONE);
                    ll_content.setVisibility(View.GONE);
                    findViewById(R.id.ll_goods_nothing).setVisibility(View.VISIBLE);
                    findViewById(R.id.fl_face).setVisibility(View.VISIBLE);
                }
@@ -1115,149 +799,29 @@
                lv_goods_pic.scrollTo(0, 0);
                avLoadingIndicatorView.hide();
                findViewById(R.id.fl_face).setVisibility(View.GONE);
                fl_content.setVisibility(View.VISIBLE);
                ll_content.setVisibility(View.VISIBLE);
            }
        });
    }
    Timer timer;
    /**
     * 启动分享提示栏timer
     */
    private void startTimer(final int length) {
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (index <= length) {
                    lv_share_des.smoothScrollBy(DimenUtils.dip2px(GoodsDetailActivity.this, 62), 1000);
                    index++;
                } else {
                    index = 1;
                    handler.sendEmptyMessage(2);
                }
            }
        }, 2000, 3000);
    }
    private void getGoodsRecommend() {
        ShoppingApi.getGuessAndRecommend(this, goodsId, mInfo.getGoods().getGoodsType() + "", new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    gList.clear();
                    Gson gson = new GsonBuilder().serializeNulls().create();
                    List<TaoBaoGoodsBrief> list1 = gson.fromJson(
                            jsonObject.optJSONObject("data").optJSONArray("listGuess").toString(),
                            new TypeToken<List<TaoBaoGoodsBrief>>() {
                            }.getType());
                    List<TaoBaoGoodsBrief> list2 = gson.fromJson(
                            jsonObject.optJSONObject("data").optJSONArray("listQuality").toString(),
                            new TypeToken<List<TaoBaoGoodsBrief>>() {
                            }.getType());
                    if (list1 != null && list1.size() > 0) {
                        gList.addAll(list1);
                        gAdapter.notifyDataSetChanged();
                    }
                    if (list2 != null && list2.size() > 0) {
                        rList.addAll(list2);
                        rAdapter.notifyDataSetChanged();
                    }
                    if (gList.size() == 0) {
                        findViewById(R.id.fl_top_title3).setVisibility(View.GONE);
                        ll_guess_like.setVisibility(View.GONE);
                    }
                    if (rList.size() == 0) {
                        findViewById(R.id.fl_top_title4).setVisibility(View.GONE);
                        findViewById(R.id.ll_relative_goods).setVisibility(View.GONE);
                    }
                }
            }
        });
    }
    JumpTaoBaoDialog dialog;
    boolean isFirst = true;
    List<CouponInfo> couponInfoList = new ArrayList<>();
    GoodsDetailCouponAdapter couponAdapter = null;
    CouponInfo tempCouponInfo;
    MyListView couponListView;
    private void initCouponInfo(List<CouponInfo> couponList) {
        if (couponList != null && couponList.size() > 0) {
            couponInfoList.clear();
            couponInfoList.addAll(couponList);
            if (couponAdapter == null) {
                couponAdapter = new GoodsDetailCouponAdapter(this, couponInfoList, new GoodsDetailCouponAdapter.IRecieveCoupon() {
                    @Override
                    public void recieve(CouponInfo info) {
                        tempCouponInfo = info;
                        recieveCoupon(info);
                    }
                });
            }
            if (couponListView == null) {
                couponListView = new MyListView(this);
                couponListView.setDivider(null);
                couponListView.setDividerHeight(DimenUtils.dip2px(this, 3));
                ll_coupon_container.removeAllViews();
                ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                couponListView.setLayoutParams(params);
                ll_coupon_container.addView(couponListView, params);
                final LinearLayout footerView = new LinearLayout(this);
                footerView.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
                footerView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
                TextView textView = new TextView(this);
                textView.setText("点击查看更多 ");
                textView.setTextSize(11);
                textView.setTextColor(Color.rgb(102, 102, 102));
                footerView.addView(textView);
                footerView.setBackground(null);
                ImageView imageView = new ImageView(this);
                imageView.setImageResource(R.drawable.ic_arrow_down);
                footerView.addView(imageView);
                footerView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        initCouponInfo(mInfo.getGoods().getCouponInfoList());
                        couponListView.removeFooterView(footerView);
                    }
                });
                if (mInfo.getGoods().getCouponInfoList() != null && mInfo.getGoods().getCouponInfoList().size() > 3)
                    couponListView.addFooterView(footerView);
                couponListView.setAdapter(couponAdapter);
            }
            couponAdapter.notifyDataSetChanged();
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        if (goodsDetailPreEventManager != null)
            goodsDetailPreEventManager.onResume();
        isVisible = true;
        mChangeHelper.registerReceiver();
//        vp_goods_detail.postDelayed(mAutoScroller, 5000);
        SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
        boolean isLogin = sp.getBoolean("isLogin", false);
        //VIP不在展示超级会员
        UserInfo user = UserUtil.getUserInfo(this);
        if (user != null && user.isVip()) {
            ll_reward_coupon.setVisibility(View.GONE);
        } else
            ll_reward_coupon.setVisibility(View.VISIBLE);
        setMianDanData();
        if (isLogin) {
            if (isClick == 1 && !isTBStartBind) {
@@ -1290,14 +854,10 @@
                    isClick = 0;
                    startActivity(new Intent(GoodsDetailActivity.this, ShoppingTrolleyActivity.class));
                }
//            else {
//                tbLogin();
//            }
            } else if (isClick == 5) {
                isClick = 0;
                startActivity(new Intent(GoodsDetailActivity.this, Collect28Activity.class));
            } else if (isClick == 7) {
                sendOrder();
                isClick = 0;
            } else if (isClick == 8) {//复制淘口令
                commandCopy();
@@ -1346,12 +906,8 @@
                        couponUrl = object.optString("couponUrl");
                    }
                    Log.e("mResult", "getTBLinkInfo():type---" + type + "---isLogin---" + AlibcLogin.getInstance().isLogin());
                    if ((!StringUtils.isEmpty(from)) && from.equalsIgnoreCase("miandan")) {
                        getGoodsMianDanCouponList();
                    } else {
                        goBuy();
                        pd.dismiss();
                    }
                }
            }
@@ -1369,8 +925,6 @@
    List<TaoBaoGoodsBrief> gList = new ArrayList<>();
    RelativeGoodsAdapter gAdapter;
    List<TaoBaoGoodsBrief> rList = new ArrayList<>();
    RelativeGoodsAdapter rAdapter;
    long lastShareTimeClick = 0;
    long lastBuyTimeClick = 0;
@@ -1416,32 +970,20 @@
            case R.id.iv_top_bar_left1:
                finish();
                break;
            case R.id.iv_share:
            case R.id.iv_top_bar_right:
                if (mTopRightPopupWindow.isShowing()) {
                    mTopRightPopupWindow.dismiss();
                } else {
                    v_cover2.setVisibility(View.VISIBLE);
                    mTopRightPopupWindow.showAsDropDown(iv_share);
                }
                break;
            case R.id.v_cover2:
                mTopRightPopupWindow.dismiss();
                break;
            case R.id.tv_top_title1:
                lv_goods_pic.scrollTo(0, 0);
                setPosition(1);
                break;
            case R.id.tv_top_title2:
                lv_goods_pic.scrollTo(0, ll_goods_detail_transition_top.getHeight() - titleHeight * 2);
                lv_goods_pic.scrollTo(0, vp_goods_detail.getHeight() - titleHeight * 2);
                setPosition(2);
                break;
            case R.id.tv_top_title3:
                lv_goods_pic.scrollTo(0, ll_goods_detail_transition_top.getHeight() + webView.getHeight() - titleHeight + marginTopHeight);
                lv_goods_pic.scrollTo(0, vp_goods_detail.getHeight() + webView.getHeight() - titleHeight + marginTopHeight);
                setPosition(3);
                break;
            case R.id.tv_top_title4:
                lv_goods_pic.scrollTo(0, ll_goods_detail_transition_top.getHeight() + webView.getHeight() + ll_guess_like.getHeight() - titleHeight + marginTopHeight);
                lv_goods_pic.scrollTo(0, vp_goods_detail.getHeight() + webView.getHeight() + ll_guess_like.getHeight() - titleHeight + marginTopHeight);
                setPosition(4);
                break;
@@ -1450,7 +992,6 @@
                    return;
                ll_add_collect.setEnabled(false);
                if (mInfo == null) {
//                    SingleToast.showToast(GoodsDetailActivity.this, "没有获取到商品收藏状态,请稍等!");
                    Toast.makeText(GoodsDetailActivity.this, "没有获取到商品收藏状态,请稍等", Toast.LENGTH_SHORT).show();
                    ll_add_collect.setEnabled(true);
                    break;
@@ -1547,7 +1088,6 @@
                info.setShopUrl(mInfo.getGoods().getShopInfo().getShopLink());
                Gson gson = new GsonBuilder().serializeNulls().create();
                String data = gson.toJson(info);
                GoldPushEventRequest.request(GoodsDetailActivity.this, "inShop", data);
                break;
            case R.id.fl_command_copy:
                if (isLogin)
@@ -1768,18 +1308,6 @@
//        getTBLinkInfo(getSharedPreferences("user", MODE_PRIVATE).getString("uid", ""));
    }
    private void goBuy() {
        Log.e("mResult", "goBuy():type---" + type);
        Log.e("mResult", "isNative:" + isNative);
        isClick = 0;
        if (mInfo != null && mInfo.getGoods() != null) {
            GoodsCustomEvent.goodsDetailBuyToTaobao(GoodsDetailActivity.this, mInfo.getGoods().getCouponInfo() == null ? "无券" : "有券");
            if (mInfo.getGoods().isHasCoupon()) {
                mInfo.getGoods().getCouponInfo().setToken(couponUrl);
            }
            showGoods();
        }
    }
    /**
     * 打开指定链接
@@ -1934,10 +1462,8 @@
                                GoodsCustomEvent.goodsDetailCollectCancel(GoodsDetailActivity.this);
                                setCollectionData(false);
                            }
//                    SingleToast.showToast(GoodsDetailActivity.this, jsonObject.optString("data"));
                            Toast.makeText(GoodsDetailActivity.this, jsonObject.optString("data"), Toast.LENGTH_SHORT).show();
                        } else {
//                    SingleToast.showToast(GoodsDetailActivity.this, jsonObject.optString("msg"));
                            Toast.makeText(GoodsDetailActivity.this, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show();
                        }
                    }
@@ -1950,19 +1476,11 @@
                });
    }
    /**
     * 一键发单
     */
    private void sendOrder() {
        GoodsDetailUtil.sendOrder(this, mInfo, goodsId, ll_send_order);
    }
    private boolean isFirstLogin = true;
    private void tbLogin() {
        final AlibcLogin alibcLogin = AlibcLogin.getInstance();
        Log.e("detail", "tbLogin--" + alibcLogin.isLogin());
//        if (!alnibcLogin.isLogin()) {
        isTBStartBind = true;
        alibcLogin.showLogin(new AlibcLoginCallback() {
@@ -1972,13 +1490,8 @@
                SharedPreferences.Editor editor = sp.edit();
                editor.putString("TrolleyTransformationLink", "");
                editor.commit();
//                boolean isLogin = sp.getBoolean("isLogin", false);
//                if (isLogin) {
//                    if (AlibcLogin.getInstance().isLogin()) {
//                        TrolleyTransformationLink transformationLink = new TrolleyTransformationLink(GoodsDetailActivity.this);
//                        transformationLink.getTaoBaoCartConfig("login");
//                    }
//                }
                if (isClick == 4) {
                    startActivity(new Intent(GoodsDetailActivity.this, ShoppingTrolleyActivity.class));
                    isClick = 0;
@@ -2000,7 +1513,6 @@
                MobclickAgent.reportError(GoodsDetailActivity.this, "GoodsDetailActivity---code:" + code + "---msg:" + msg);
            }
        });
//        }
    }
    /**
@@ -2015,12 +1527,7 @@
            Log.e("detail", authLink);
            if (!StringUtils.isEmpty(authLink)) {
                GoodsCustomEvent.goodsDetailTaobaoAuth(GoodsDetailActivity.this, isClick == 1 ? "购买" : "分享");
//                AlibcTrade.openByUrl(GoodsDetailActivity.this, "", authLink, null, new WebViewClient(),
//                        new WebChromeClient(), alibcShowParams, null, null,
//                        new MiDuoTradeCallback(""));
//                AlibcTradeUtil.openByUrl(GoodsDetailActivity.this, authLink, null, new WebViewClient(),
//                        new WebChromeClient(), alibcShowParams, null, null);
                AlibcTradeUtil.openAuthLink(GoodsDetailActivity.this, authLink);
            }
            isFirst = false;
@@ -2145,7 +1652,6 @@
    private void tbBuyLogin() {
        isTBStartBind = true;
//        Log.e("mResult", "开始登录");
        AlibcLogin.getInstance().showLogin(new AlibcLoginCallback() {
            @Override
@@ -2156,7 +1662,6 @@
            @Override
            public void onFailure(int i, String s) {
                isClick = 0;
//                Log.e("mResult", "登录失败");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
@@ -2187,8 +1692,7 @@
            View view = LayoutInflater.from(GoodsDetailActivity.this)
                    .inflate(R.layout.item_goods_detail_top_img, null);
            ImageView iv = view.findViewById(R.id.iv_goods_img);
//            Glide.with(mContext).load(cList.get(position)).error(R.drawable.ic_goods_default).placeholder(R.drawable.ic_goods_default).into(iv);
            ImageLoader.getInstance().displayImage(cList.get(position), iv, options);//暂时注释
            Glide.with(getApplicationContext()).load(cList.get(position)).error(R.drawable.ic_goods_default).placeholder(R.drawable.ic_goods_default).into(iv);
            iv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
@@ -2221,19 +1725,6 @@
            intent.putExtra("position", position);
            intent.putExtra("imgList", new Gson().toJson(ImageShowEntity.create(cList)));
            startActivityForResult(intent, 0);
//            v_cover.setVisibility(View.VISIBLE);
//            //透明动画
//            ObjectAnimator animator = ObjectAnimator.ofFloat(v_cover, "alpha", 0F, 1F);
//            animator.setDuration(150);//400
//            //为动画设置监听
//            animator.addListener(new AnimatorListenerAdapter() {
//                @Override
//                public void onAnimationEnd(Animator animation) {
//                    super.onAnimationEnd(animation);
//                    v_cover.setVisibility(View.GONE);
//                }
//            });
//            animator.start();
        }
    }
@@ -2241,7 +1732,6 @@
        if (collected) {
            iv_like_state.setImageResource(R.drawable.icon_collected);
            tv_like.setText("收藏");
//            tv_like.setTextColor(Color.parseColor("#E5005C"));
        } else {
            iv_like_state.setImageResource(R.drawable.icon_un_collected);
            tv_like.setText("收藏");
@@ -2255,160 +1745,11 @@
     * @param state
     */
    private void requestState(int state) {
        fl_content.setVisibility(state == 0 ? View.VISIBLE : View.GONE);
        ll_content.setVisibility(state == 0 ? View.VISIBLE : View.GONE);
        ll_no_data.setVisibility(state == 1 ? View.VISIBLE : View.GONE);
        ll_request_failture.setVisibility(state == 2 ? View.VISIBLE : View.GONE);
        ll_no_net.setVisibility(state == 3 ? View.VISIBLE : View.GONE);
    }
    class ShareExampleAdapter extends BaseAdapter {
        List<ShareUser> mList;
        public ShareExampleAdapter(List<ShareUser> list) {
            mList = list;
        }
        @Override
        public int getCount() {
            return mList == null ? 0 : mList.size();
        }
        @Override
        public Object getItem(int position) {
            return mList.get(position);
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View view, ViewGroup parent) {
            Holder holder = null;
            if (view == null) {
                holder = new Holder();
                view = LayoutInflater.from(GoodsDetailActivity.this).inflate(R.layout.item_share_example, null);
                holder.iv_portrait = view.findViewById(R.id.iv_portrait);
                holder.tv_name = view.findViewById(R.id.tv_name);
                holder.tv_des = view.findViewById(R.id.tv_des);
                holder.iv_gift_img = view.findViewById(R.id.iv_gift_img);
                view.setTag(holder);
            } else {
                holder = (Holder) view.getTag();
            }
            Glide.with(GoodsDetailActivity.this).load(mList.get(position).getPicUrl()).placeholder(R.drawable.ic_default_portrait_light)
                    .error(R.drawable.ic_default_portrait_light)
                    .transform(new GlideCircleTransform(GoodsDetailActivity.this)).into(holder.iv_portrait);
            Glide.with(GoodsDetailActivity.this).load(mList.get(position).getShareBonusPic()).into(holder.iv_gift_img);
            holder.tv_name.setText(mList.get(position).getName());
            String str = mList.get(position).getMsg();
            int count = str.indexOf("奖金");
            SpannableStringBuilder builder = new SpannableStringBuilder(str);
            builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.detail_sharelist_reward_num))
                    , count, str.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
            holder.tv_des.setText(builder);
            return view;
        }
        class Holder {
            ImageView iv_portrait;
            TextView tv_name;
            TextView tv_des;
            ImageView iv_gift_img;
        }
    }
    private void initPopubWindow(JSONObject jsonObject) {
        final String helpLink = jsonObject.optString("helpLink");
        View customView = getLayoutInflater().inflate(R.layout.item_show_free_single_coupon,
                null, false);
        // 创建PopupWindow实例,200,150分别是宽度和高度
        float height = SystemCommon.getScreenHeight(this);
        final PopupWindow pw_free_single_ticket = new PopupWindow(customView, ViewGroup.LayoutParams.MATCH_PARENT, (int) (height * 0.75), true);
        // 设置动画效果 [R.style.AnimationFade 是自己事先定义好的]
//        pw_filter.setAnimationStyle(R.style.pop_multiple);
        pw_free_single_ticket.setTouchable(true);
        pw_free_single_ticket.setOutsideTouchable(true);
        pw_free_single_ticket.setFocusable(false);
        pw_free_single_ticket.setAnimationStyle(R.style.bottomstyle);
        TextView tv_free_single_coupon_num = customView.findViewById(R.id.tv_free_single_ticket_num);
        LinearLayout ll_no_ticket = customView.findViewById(R.id.ll_no_ticket);
        TextView tv_confirm = customView.findViewById(R.id.tv_confirm);
        RecyclerView rv_free_single_ticket = customView.findViewById(R.id.rv_free_single_ticket);
        TextView tv_limit = new TextView(this);
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
                FrameLayout.LayoutParams.WRAP_CONTENT);
        tv_limit.setLayoutParams(params);
        tv_limit.setTextColor(Color.parseColor(jsonObject.optJSONObject("tip").optString("fontColor")));
        tv_limit.setTextSize(14);
        tv_limit.setGravity(Gravity.CENTER);
        tv_limit.setText(jsonObject.optJSONObject("tip").optString("content"));
        tv_limit.setPadding(0, DimenUtils.dip2px(this, 16), 0, 0);
        tv_free_single_coupon_num.setText("剩余" + jsonObject.optString("count") + "张免单券");
        LinearLayoutManager manager = new LinearLayoutManager(this);
        rv_free_single_ticket.setLayoutManager(manager);
        DividerItemDecoration decoration = new DividerItemDecoration();
        decoration.setSize(DimenUtils.dip2px(this, 8));
        rv_free_single_ticket.addItemDecoration(decoration);
        Gson gson = new GsonBuilder().serializeNulls().create();
        final List<FreeSingleTicket> fList = gson.fromJson(jsonObject.optJSONArray(
                "list").toString(),
                new TypeToken<List<FreeSingleTicket>>() {
                }.getType());
        if (fList == null || fList.size() == 0) {
            rv_free_single_ticket.setVisibility(View.GONE);
            ll_no_ticket.setVisibility(View.VISIBLE);
        } else {
            rv_free_single_ticket.setVisibility(View.VISIBLE);
            ll_no_ticket.setVisibility(View.GONE);
        }
        final FreeSingleTicketAdapter adapter = new FreeSingleTicketAdapter(this, fList, helpLink);
        rv_free_single_ticket.setAdapter(adapter);
        adapter.addHeaderView(tv_limit);
        tv_confirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                pw_free_single_ticket.dismiss();
                v_cover1.setVisibility(View.GONE);
                FreeSingleTicket info = null;//选中的免单券
                for (int i = 0; i < adapter.mCBFlag.size(); i++) {
                    if (adapter.mCBFlag.get(i)) {
                        info = fList.get(i);
                    }
                }
                if (info != null) {
                    useFreeSingleTicket(info);
                }
            }
        });
        pw_free_single_ticket.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss() {
                v_cover1.setVisibility(View.GONE);
            }
        });
        v_cover1.setOnClickListener(new View.OnClickListener() {//设置背景空点击事件
            @Override
            public void onClick(View v) {
                v_cover1.setVisibility(View.GONE);
            }
        });
        pw_free_single_ticket.showAtLocation(getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
        v_cover1.setVisibility(View.VISIBLE);
        isClick = 0;
    }
    @Override
    protected void onDestroy() {
@@ -2424,78 +1765,14 @@
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
    }
    @Override
    public void onWbShareCancel() {
        Toast.makeText(this, "分享取消", Toast.LENGTH_LONG).show();
    }
    @Override
    public void onWbShareFail() {
        Toast.makeText(this, "分享失败", Toast.LENGTH_LONG).show();
    }
    @Override
    public void onWbShareSuccess() {
        Toast.makeText(this, "分享成功", Toast.LENGTH_LONG).show();
    }
    /**
     * 返回 是否进入 删除区域
     *
     * @param Width 宽度距离判断(购物车到达指定宽度 true,否则false)
     * @param Heigh 高度距离判断(购物车到达指定高度 true,否则false)
     */
    @Override
    public void isReturn(boolean Width, boolean Heigh) {
        if (Width && Heigh) {
            acbutton.setVisibility(View.GONE);
//            img.setVisibility(View.GONE);
            if (acbutton.getVisibility() == View.GONE) {
                acbutton.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        img.setVisibility(View.GONE);
                        //  购物车隐藏
                        RecordImageTextVideo textVideo = new RecordImageTextVideo(GoodsDetailActivity.this);
                        textVideo.setLocalCart_float(1);//不在显示购物车
                    }
                }, 200);
            }
        }
    }
    /**
     * 显示状态
     *
     * @param isDrag  移动状态(购物车移动true,停止false)
     * @param display 是否显示(购物车显示true,隐藏 false)
     */
    @Override
    public void isDrag(boolean isDrag, boolean display) {
        //移动中
        if (isDrag) {
            img.setVisibility(View.VISIBLE);
        } else {//停止移动
            if (display) {//显示
                img.setVisibility(View.VISIBLE);
            } else {//隐藏
                img.setVisibility(View.GONE);
            }
        }
    }
    /**
     * 百川详情页跳转网页
     */
    private void jumpWeb(String url) {
        alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpBROWER);
//        AlibcTrade.openByUrl(GoodsDetailActivity.this, "",
//                url, null, new WebViewClient(), new WebChromeClient(),
//                alibcShowParams, alibcTaokeParams, exParams, new MiDuoTradeCallback(""));
        AlibcTradeSDK.setTaokeParams(alibcTaokeParams);
        AlibcTradeUtil.openByUrl(GoodsDetailActivity.this,
                url, null, new WebViewClient(), new WebChromeClient(),
@@ -2510,4 +1787,61 @@
                new WebViewClient(), new WebChromeClient(), "", alibcShowParams,
                alibcTaokeParams, exParams, new MiDuoTradeCallback(""));
    }
    private void goFanli() {
        goodsDetailPreEventManager.startClick(0, new GoodsDetailPreEventManager.IPreEventListener() {
            @Override
            public void onPreSuccess() {
            }
        });
        //判断是否有多张券情况
    }
    private void goBuy() {
        goodsDetailPreEventManager.startClick(1, new GoodsDetailPreEventManager.IPreEventListener() {
            @Override
            public void onPreSuccess() {
                showGoods();
            }
        });
    }
    private void setRightsData(boolean coupon, String money, String desc, String link) {
        LayoutInflater inflater = LayoutInflater.from(this);
        View root = inflater.inflate(R.layout.item_goods_detail_rights, null);
        AQuery query = new AQuery(root);
        GradientDrawable gd = new GradientDrawable();
        gd.setCornerRadius(DimenUtils.dip2px(getApplicationContext(), 10));
        TextView tv_money = query.id(R.id.tv_money).getTextView();
        TextView tv_desc = query.id(R.id.tv_desc).getTextView();
        if (coupon) {
            gd.setColors(new int[]{Color.parseColor("#FFEF9A"), Color.parseColor("#FFFFFF")});
            tv_money.setTextColor(Color.parseColor("#FFB218"));
            tv_desc.setTextColor(Color.parseColor("#FFB218"));
        } else {
            gd.setColors(new int[]{Color.parseColor("#FFE4E8"), Color.parseColor("#FFFFFF")});
            tv_money.setTextColor(Color.parseColor("#FF2B4B"));
            tv_desc.setTextColor(Color.parseColor("#FF2B4B"));
        }
        ((LinearLayout) query.id(R.id.ll_content).getView()).setBackground(gd);
        if (!StringUtils.isNullOrEmpty(link)) {
            tv_desc.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
        }
        SpannableString moneyString = new SpannableString(money);
        moneyString.setSpan(new RelativeSizeSpan(1.5f), 1, (money.indexOf(".") > -1 ? money.indexOf(".") : money.length()), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv_money.setText(moneyString);
        tv_desc.setText(desc);
    }
}
app/src/main/java/com/tejia/lijin/app/util/GoodsBuyJumpUtil.java
@@ -1,5 +1,6 @@
package com.tejia.lijin.app.util;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
@@ -121,6 +122,75 @@
    }
    public static void jumpJD(final Activity activity, GoodsConvertLinkJumpLink link, final IJumpResult jumpResult) {
        if (link == null)
            return;
        if (activity == null) {
            return;
        }
        OpenAppAction mOpenAppAction = new OpenAppAction() {
            @Override
            public void onStatus(final int status, final String url) {
                if (activity != null)
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if (status == OpenAppAction.OpenAppAction_result_APP) {
                                //呼京东成功
                                Log.e("mResult", "呼京东成功");
                                jumpResult.onSuccess();
                            } else if (status == OpenAppAction.OpenAppAction_start) {
                                //开始状态未必一定执行,
                                Log.e("mResult", "开始呼起京东");
                            } else {
                                //唤起京东失败
                                Log.e("mResult", "唤起京东失败" + status);
                                Intent intent = new Intent(activity, ShareBrowserActivity.class);
                                intent.putExtra("url", url);
                                intent.putExtra("interceptGoodsDetail", false);
                                activity.startActivity(intent);
                                jumpResult.onFail("唤起京东失败");
                            }
                        }
                    });
            }
        };
        try {
            if (link.is_native() && !StringUtils.isNullOrEmpty(link.getNativeJumpLink()) && ApkUtil.checkAPP(activity, "com.jingdong.app.mall")) {
                KeplerApiManager.getWebViewService().openAppWebViewPage(activity, link.getNativeJumpLink(), new KeplerAttachParameter(), mOpenAppAction);
                return;
            }
            if (link.getWxxcxJumpInfo() != null) {
                try {
                    WXUtil.jumpWXXCX(activity, link.getWxxcxJumpInfo().getUserName(), link.getWxxcxJumpInfo().getPath());
                    return;
                } catch (Exception e) {
                    //最后跳转网页
                    Intent intent = new Intent(activity, ShareBrowserActivity.class);
                    intent.putExtra("url", link.getJumpLink());
                    intent.putExtra("interceptGoodsDetail", false);
                    activity.startActivity(intent);
                }
            }
            Intent intent = new Intent(activity, ShareBrowserActivity.class);
            intent.putExtra("url", link.getJumpLink());
            intent.putExtra("interceptGoodsDetail", false);
            activity.startActivity(intent);
        } finally {
            jumpResult.onSuccess();
        }
    }
    public static void jumpVIPShop(Context context, GoodsConvertLinkJumpLink link) {
        if (context == null)
            return;
@@ -153,7 +223,6 @@
        intent.putExtra("interceptGoodsDetail", false);
        context.startActivity(intent);
    }
    public static void jumpSuning(Context context, GoodsConvertLinkJumpLink link) {
@@ -190,4 +259,11 @@
    }
    public static interface IJumpResult {
        public void onSuccess();
        public void onFail(String msg);
    }
}
app/src/main/java/com/tejia/lijin/app/util/SetLabels.java
@@ -34,7 +34,33 @@
            gradientDrawable.setStroke(DimenUtils.dip2px(mContext, 0.5f),
                    Color.parseColor(list.get(i).getColor()));
            gradientDrawable.setColor(mContext.getResources().getColor(R.color.white));
            tv_label.setBackgroundDrawable(gradientDrawable);
            tv_label.setBackground(gradientDrawable);
            tv_label.setPadding(DimenUtils.dip2px(mContext, 5), 2,
                    DimenUtils.dip2px(mContext, 5), 3);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            if (i != 0)
                params.leftMargin = DimenUtils.dip2px(mContext, 5);
            tv_label.setLayoutParams(params);
            tv_label.setEllipsize(TextUtils.TruncateAt.END);
            tv_label.setTextSize(fontSizeSP);
            tv_label.setTextColor(Color.parseColor(list.get(i).getColor()));
            tv_label.setText(list.get(i).getContent());
            ll_content.addView(tv_label);
        }
    }
    public static void addGoodsTypeLabel(Context mContext, LinearLayout ll_content, List<Label> list,int fontSizeSP) {
        for (int i = 0; i < list.size(); i++) {
            TextView tv_label = new TextView(mContext);
            tv_label.setSingleLine(true);
            GradientDrawable gradientDrawable = new GradientDrawable();
            gradientDrawable.setCornerRadius(DimenUtils.dip2px(mContext, 8));
            gradientDrawable.setStroke(DimenUtils.dip2px(mContext, 1),
                    Color.parseColor(list.get(i).getColor()));
            gradientDrawable.setColor(mContext.getResources().getColor(R.color.white));
            tv_label.setBackground(gradientDrawable);
            tv_label.setPadding(DimenUtils.dip2px(mContext, 5), 2,
                    DimenUtils.dip2px(mContext, 5), 3);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
app/src/main/java/com/tejia/lijin/app/util/baichuan/AlibcTradeUtil.java
@@ -126,4 +126,32 @@
    }
    public static void openAuthLink(Activity activity, String authUrl,AlibcTradeCallback alibcTradeCallback) {
        AlibcShowParams showParams = new AlibcShowParams();
        showParams.setOpenType(OpenType.Auto);
        showParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpDOWNLOAD);
        //设置返回小把手
        showParams.setBackUrl("alisdk://");
        Log.i(TAG, "openAuthLink-start");
        WebViewClient client = new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                Log.i(TAG, "shouldOverrideUrlLoading");
                return super.shouldOverrideUrlLoading(view, request);
            }
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.i(TAG, url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        };
        AlibcTrade.openByUrl(activity, "", authUrl, null,
                client, null, showParams,
                null, null, alibcTradeCallback);
    }
}
app/src/main/java/com/tejia/lijin/app/util/goods/GoodsBuyUtil.java
New file
@@ -0,0 +1,374 @@
package com.tejia.lijin.app.util.goods;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebViewClient;
import android.widget.Toast;
import com.alibaba.baichuan.android.trade.AlibcTradeSDK;
import com.alibaba.baichuan.android.trade.model.AlibcShowParams;
import com.alibaba.baichuan.android.trade.model.OpenType;
import com.alibaba.baichuan.android.trade.page.AlibcDetailPage;
import com.alibaba.baichuan.trade.biz.AlibcConstants;
import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType;
import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams;
import com.alibaba.baichuan.trade.biz.login.AlibcLogin;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
import com.tejia.lijin.app.ShoppingApi;
import com.tejia.lijin.app.entity.TbPidInfo;
import com.tejia.lijin.app.entity.common.GoodsConvertLinkJumpLink;
import com.tejia.lijin.app.ui.recommend.GoodsDetailActivityJD;
import com.tejia.lijin.app.ui.recommend.GoodsDetailActivityPDD;
import com.tejia.lijin.app.ui.recommend.GoodsDetailActivitySuning;
import com.tejia.lijin.app.ui.recommend.GoodsDetailActivityTB;
import com.tejia.lijin.app.ui.recommend.GoodsDetailActivityVIP;
import com.tejia.lijin.app.util.Constant;
import com.tejia.lijin.app.util.GoodsBuyJumpUtil;
import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil;
import com.tejia.lijin.app.util.user.UserUtil;
import com.wpc.library.util.common.StringUtils;
import org.apache.http.Header;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class GoodsBuyUtil {
    /**
     * 商品购买
     * @param activity
     * @param context
     * @param requestInfo
     * @param resultListener
     */
    public static void buy(Activity activity, Context context, GoodsBuyRequestInfo requestInfo, IBuyGoodsResultListener resultListener) {
        switch (requestInfo.getGoodsType()) {
            case Constant.GOODS_TYPE_TB:
                buyTB(activity, context, requestInfo, resultListener);
                break;
            case Constant.GOODS_TYPE_JD:
                buyJD(activity, requestInfo, resultListener);
                break;
            case Constant.GOODS_TYPE_PDD:
                buyPDD(context, requestInfo, resultListener);
                break;
            case Constant.GOODS_TYPE_VIP:
                buyVIP(context, requestInfo, resultListener);
                break;
            case Constant.GOODS_TYPE_SUNING:
                buySuning(context, requestInfo, resultListener);
                break;
        }
    }
    /**
     * 打开指定链接
     */
    private static void jumpTB(Activity activity, TbPidInfo tInfo, String clickUrl, String couponUrl, final IBuyGoodsResultListener buyGoodsResultListener) {
        AlibcShowParams alibcShowParams = new AlibcShowParams();
        alibcShowParams.setOpenType(OpenType.Auto);
        alibcShowParams.setBackUrl("alisdk://");
        alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpBROWER);
        AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams("", "", "");
        if (tInfo != null) {
            alibcTaokeParams = new AlibcTaokeParams("", "", "");
            alibcTaokeParams.setPid(tInfo.getPid());
            alibcTaokeParams.setAdzoneid(tInfo.getAdZoneId());
            alibcTaokeParams.pid = tInfo.getPid();
            alibcTaokeParams.adzoneid = tInfo.getAdZoneId();
            alibcTaokeParams.extraParams = new HashMap<>();
            alibcTaokeParams.extraParams.put("taokeAppkey", tInfo.getAppKey());
        }
        Map<String, String> exParams = new HashMap<>();
        exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
        exParams.put("alibaba", "阿里巴巴");//自定义参数部分,可任意增删改
        if (!StringUtils.isEmpty(clickUrl) || !StringUtils.isEmpty(couponUrl)) {
            String url = (!StringUtils.isEmpty(couponUrl)) ? couponUrl : clickUrl;
            AlibcTradeSDK.setTaokeParams(alibcTaokeParams);
            buyGoodsResultListener.onJumpThirdAppStart();
            AlibcTradeUtil.openByUrl(activity,
                    url, null, new WebViewClient(), new WebChromeClient(),
                    alibcShowParams, alibcTaokeParams, null);
        }
    }
    private static void buyTB(final Activity activity, final Context context, GoodsBuyRequestInfo requestInfo, final IBuyGoodsResultListener buyGoodsResultListener) {
        ShoppingApi.getTBLinkInfo(context, requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    Gson gson = new GsonBuilder().serializeNulls().create();
                    TbPidInfo tInfo = null;
                    String clickUrl = null;
                    String couponUrl = null;
                    if (jsonObject.optJSONObject("data").optJSONObject("tbPidInfo") != null)
                        tInfo = gson.fromJson(jsonObject.optJSONObject("data").optJSONObject("tbPidInfo").toString(), TbPidInfo.class);
                    JSONObject object = jsonObject.optJSONObject("data").optJSONObject("link");
                    if (object != null) {
                        clickUrl = object.optString("clickUrl");
                        couponUrl = object.optString("couponUrl");
                    }
                    buyGoodsResultListener.onConvertLinkSuccess();
                    jumpTB(activity, tInfo, clickUrl, couponUrl, buyGoodsResultListener);
                } else {
                    buyGoodsResultListener.onConvertLinkFail(jsonObject.optString("msg"));
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
                buyGoodsResultListener.onConvertLinkFail("请求网络出错");
            }
            @Override
            public void onStart() {
                super.onStart();
                buyGoodsResultListener.onConvertLinkStart();
            }
            @Override
            public void onFinish() {
                super.onFinish();
                buyGoodsResultListener.onConvertLinkComplete();
            }
        });
    }
    private static void buyJD(final Activity activity, GoodsBuyRequestInfo requestInfo, final IBuyGoodsResultListener buyGoodsResultListener) {
        ShoppingApi.getJDLinkInfo(activity, requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", requestInfo.getCouponLink(), new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    GoodsConvertLinkJumpLink jumpLink = new Gson().fromJson(jsonObject.optJSONObject("data").toString(), GoodsConvertLinkJumpLink.class);
                    buyGoodsResultListener.onJumpThirdAppStart();
                    GoodsBuyJumpUtil.jumpJD(activity, jumpLink, new GoodsBuyJumpUtil.IJumpResult() {
                        @Override
                        public void onSuccess() {
                            buyGoodsResultListener.onJumpThirdAppSuccess();
                        }
                        @Override
                        public void onFail(String msg) {
                            buyGoodsResultListener.onJumpThirdAppFail();
                        }
                    });
                } else {
                    buyGoodsResultListener.onConvertLinkFail(jsonObject.optString("msg"));
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
                buyGoodsResultListener.onConvertLinkFail("请求网络出错");
            }
            @Override
            public void onStart() {
                super.onStart();
                buyGoodsResultListener.onConvertLinkStart();
            }
            @Override
            public void onFinish() {
                super.onFinish();
                buyGoodsResultListener.onConvertLinkComplete();
            }
        });
    }
    private static void buyPDD(final Context context, GoodsBuyRequestInfo requestInfo, final IBuyGoodsResultListener buyGoodsResultListener) {
        ShoppingApi.getPDDLinkInfo(context, requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    GoodsConvertLinkJumpLink pddJumpLink = new Gson().fromJson(jsonObject.optJSONObject("data").toString(), GoodsConvertLinkJumpLink.class);
                    buyGoodsResultListener.onJumpThirdAppStart();
                    GoodsBuyJumpUtil.jumpPDD(context, pddJumpLink);
                } else {
                    buyGoodsResultListener.onConvertLinkFail(jsonObject.optString("msg"));
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
                buyGoodsResultListener.onConvertLinkFail("请求网络出错");
            }
            @Override
            public void onStart() {
                super.onStart();
                buyGoodsResultListener.onConvertLinkStart();
            }
            @Override
            public void onFinish() {
                super.onFinish();
                buyGoodsResultListener.onConvertLinkComplete();
            }
        });
    }
    private static void buyVIP(final Context context, GoodsBuyRequestInfo requestInfo, final IBuyGoodsResultListener buyGoodsResultListener) {
        ShoppingApi.getVIPLinkInfo(context, requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    GoodsConvertLinkJumpLink jumpLink = new Gson().fromJson(jsonObject.optJSONObject("data").toString(), GoodsConvertLinkJumpLink.class);
                    buyGoodsResultListener.onJumpThirdAppStart();
                    GoodsBuyJumpUtil.jumpVIPShop(context, jumpLink);
                } else {
                    buyGoodsResultListener.onConvertLinkFail(jsonObject.optString("msg"));
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
                buyGoodsResultListener.onConvertLinkFail("请求网络出错");
            }
            @Override
            public void onStart() {
                super.onStart();
                buyGoodsResultListener.onConvertLinkStart();
            }
            @Override
            public void onFinish() {
                super.onFinish();
                buyGoodsResultListener.onConvertLinkComplete();
            }
        });
    }
    private static void buySuning(final Context context, GoodsBuyRequestInfo requestInfo, final IBuyGoodsResultListener buyGoodsResultListener) {
        ShoppingApi.getSuningLinkInfo(context, requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", new BasicTextHttpResponseHandler() {
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optString("code").equalsIgnoreCase("0")) {
                    GoodsConvertLinkJumpLink jumpLink = new Gson().fromJson(jsonObject.optJSONObject("data").toString(), GoodsConvertLinkJumpLink.class);
                    buyGoodsResultListener.onJumpThirdAppStart();
                    GoodsBuyJumpUtil.jumpSuning(context, jumpLink);
                } else {
                    buyGoodsResultListener.onConvertLinkFail(jsonObject.optString("msg"));
                }
            }
            @Override
            public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) {
                super.onFailure(statusCode, headers, jsonObject, e);
                buyGoodsResultListener.onConvertLinkFail("请求网络出错");
            }
            @Override
            public void onStart() {
                super.onStart();
                buyGoodsResultListener.onConvertLinkStart();
            }
            @Override
            public void onFinish() {
                super.onFinish();
                buyGoodsResultListener.onConvertLinkComplete();
            }
        });
    }
    /**
     * 商品购买请求参数
     */
    static class GoodsBuyRequestInfo {
        private int goodsType;
        private String goodsId;
        private String couponLink;
        private String uid;
        private String from;
        public int getGoodsType() {
            return goodsType;
        }
        public void setGoodsType(int goodsType) {
            this.goodsType = goodsType;
        }
        public String getGoodsId() {
            return goodsId;
        }
        public void setGoodsId(String goodsId) {
            this.goodsId = goodsId;
        }
        public String getCouponLink() {
            return couponLink;
        }
        public void setCouponLink(String couponLink) {
            this.couponLink = couponLink;
        }
        public String getUid() {
            return uid;
        }
        public void setUid(String uid) {
            this.uid = uid;
        }
        public String getFrom() {
            return from;
        }
        public void setFrom(String from) {
            this.from = from;
        }
    }
    public static interface IBuyGoodsResultListener {
        public void onConvertLinkStart();
        public void onConvertLinkSuccess();
        public void onConvertLinkFail(String msg);
        public void onConvertLinkComplete();
        public void onJumpThirdAppStart();
        public void onJumpThirdAppSuccess();
        public void onJumpThirdAppFail();
    }
}
app/src/main/res/drawable-xhdpi/ic_goods_detail_hongbao_detail_fanli.png
app/src/main/res/drawable-xhdpi/ic_goods_detail_hongbao_detail_hb.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_back.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_fanli.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_fanli_more.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_hb.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_hb_more.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_hongbao_input.png
app/src/main/res/drawable/shape_go_fanli_full.xml
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="40dp" />
    <corners
        android:radius="40dp" />
    <padding
        android:bottom="2dp"
        android:top="2dp"></padding>
    <solid android:color="@color/theme" />
    <solid android:color="#55B00B" />
</shape>
app/src/main/res/layout/activity_goods_detail_new.xml
@@ -1,9 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/page_bg_color"
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/ll_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    android:orientation="vertical">
    <FrameLayout
@@ -11,10 +17,10 @@
        android:layout_height="0dp"
        android:layout_weight="1">
        <ScrollView
            <com.wpc.library.widget.MyScrollView
                android:id="@+id/lv_goods_pic"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <LinearLayout
                android:layout_width="match_parent"
@@ -25,7 +31,6 @@
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <com.wpc.library.widget.RatioLayout
@@ -75,12 +80,14 @@
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">
                        <ImageView
                            android:id="@+id/iv_goods_type"
                            <LinearLayout
                                android:id="@+id/ll_labels"
                            android:layout_width="wrap_content"
                            android:layout_height="15dp"
                                android:layout_height="wrap_content"
                            android:layout_gravity="left|center_vertical"
                            android:src="@drawable/ic_tmall"></ImageView>
                                android:orientation="vertical">
                            </LinearLayout>
                        <TextView
@@ -145,13 +152,10 @@
                    android:layout_marginRight="10dp"
                    android:background="@drawable/shape_goods_detail_item_bg">
                    <com.wpc.library.widget.MyGridView
                        android:id="@+id/gv_rights_type"
                        <com.tejia.lijin.app.util.FlowLayout
                            android:id="@+id/fl_rights_type"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:horizontalSpacing="10dp"
                        android:numColumns="3"
                        android:verticalSpacing="10dp"></com.wpc.library.widget.MyGridView>
                            android:layout_height="wrap_content"></com.tejia.lijin.app.util.FlowLayout>
                </LinearLayout>
@@ -166,290 +170,10 @@
                    android:layout_marginRight="10dp"
                    android:background="@drawable/shape_goods_detail_item_bg">
                    <FrameLayout
                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/rv_price_info"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@drawable/shape_goods_detail_hongbao_high_level_bg">
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="vertical">
                            <FrameLayout
                                android:layout_width="match_parent"
                                android:layout_height="64dp">
                                <LinearLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content"
                                    android:layout_gravity="center_vertical"
                                    android:paddingLeft="12dp"
                                    android:paddingRight="12dp">
                                    <TextView
                                        android:id="@+id/tv_sub_money"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_marginLeft="19dp"
                                        android:text="¥8.88"
                                        android:textColor="#ffffffff"
                                        android:textSize="12sp" />
                                    <View
                                        android:layout_width="0dp"
                                        android:layout_height="1px"
                                        android:layout_weight="1"></View>
                                    <TextView
                                        android:id="@+id/tv_final_money"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text="¥28.9"
                                        android:textColor="#ffffffff"
                                        android:textSize="12sp" />
                                </LinearLayout>
                                <TextView
                                    android:id="@+id/tv_more"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_gravity="bottom|center_horizontal"
                                    android:layout_marginBottom="3dp"
                                    android:text="更多">
                                </TextView>
                            </FrameLayout>
                            <LinearLayout
                                android:id="@+id/ll_hongbao_detail"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_marginLeft="3.5dp"
                                android:layout_marginRight="3.5dp"
                                android:layout_marginBottom="3.5dp"
                                android:paddingLeft="20dp"
                                android:paddingRight="20dp">
                                <LinearLayout
                                    android:layout_width="0dp"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1">
                                    <LinearLayout
                                        android:id="@+id/ll_money_0"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:gravity="center_horizontal"
                                        android:orientation="vertical">
                                        <TextView
                                            android:id="@+id/tv_money_name_0"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="到手价"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                        <TextView
                                            android:id="@+id/tv_money_0"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginTop="8dp"
                                            android:text="¥28.9"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                    </LinearLayout>
                                    <View
                                        android:id="@+id/v_hongbao_cut_0"
                                        android:layout_width="0dp"
                                        android:layout_height="1px"
                                        android:layout_weight="1"></View>
                                    <LinearLayout
                                        android:id="@+id/ll_money_1"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:gravity="center_horizontal"
                                        android:orientation="vertical">
                                        <TextView
                                            android:id="@+id/tv_money_name_1"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="到手价"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                        <TextView
                                            android:id="@+id/tv_money_1"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginTop="8dp"
                                            android:text="¥28.9"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                    </LinearLayout>
                                    <View
                                        android:id="@+id/v_hongbao_cut_1"
                                        android:layout_width="0dp"
                                        android:layout_height="1px"
                                        android:layout_weight="1"></View>
                                    <LinearLayout
                                        android:id="@+id/ll_money_2"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:gravity="center_horizontal"
                                        android:orientation="vertical">
                                        <TextView
                                            android:id="@+id/tv_money_name_2"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="到手价"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                        <TextView
                                            android:id="@+id/tv_money_2"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginTop="8dp"
                                            android:text="¥28.9"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                    </LinearLayout>
                                    <View
                                        android:id="@+id/v_hongbao_cut_2"
                                        android:layout_width="0dp"
                                        android:layout_height="1px"
                                        android:layout_weight="1"></View>
                                    <LinearLayout
                                        android:id="@+id/ll_money_3"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:gravity="center_horizontal"
                                        android:orientation="vertical">
                                        <TextView
                                            android:id="@+id/tv_money_name_3"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="到手价"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                        <TextView
                                            android:id="@+id/tv_money_3"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginTop="8dp"
                                            android:text="¥28.9"
                                            android:textColor="#FFFFFF"
                                            android:textSize="9sp" />
                                    </LinearLayout>
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginLeft="20dp"
                                    android:layout_marginRight="20dp"
                                    android:gravity="center_horizontal"
                                    android:orientation="vertical">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text=""
                                        android:textColor="#FFFFFF"
                                        android:textSize="9sp" />
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_marginTop="8dp"
                                        android:text="="
                                        android:textColor="#FFFFFF"
                                        android:textSize="9sp" />
                                </LinearLayout>
                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:gravity="center_horizontal"
                                    android:orientation="vertical">
                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text="到手价"
                                        android:textColor="#FFFFFF"
                                        android:textSize="9sp" />
                                    <TextView
                                        android:id="@+id/tv_actual_money"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:layout_marginTop="8dp"
                                        android:text="¥28.9"
                                        android:textColor="#FFFFFF"
                                        android:textSize="9sp" />
                                </LinearLayout>
                            </LinearLayout>
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_gravity="left|top"
                            android:gravity="center_vertical">
                            <ImageView
                                android:id="@+id/iv_level"
                                android:layout_width="wrap_content"
                                android:layout_height="12.5dp"></ImageView>
                            <TextView
                                android:id="@+id/tv_level_desc"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginLeft="5dp"
                                android:text="升级为铂金会员红包可提高100%"
                                android:textColor="#ffffffff"
                                android:textSize="8sp" />
                        </LinearLayout>
                    </FrameLayout>
                            android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView>
                </LinearLayout>
@@ -702,7 +426,7 @@
                </LinearLayout>
            </LinearLayout>
        </ScrollView>
            </com.wpc.library.widget.MyScrollView>
        <!--状态栏1-->
        <LinearLayout
@@ -722,7 +446,7 @@
                    android:layout_height="30dp"
                    android:layout_gravity="center_vertical|left"
                    android:layout_marginLeft="10dp"
                    android:src="@drawable/ic_back2" />
                        android:src="@drawable/icon_goods_detail_back" />
            </FrameLayout>
@@ -731,19 +455,7 @@
                android:layout_height="1dp"
                android:layout_weight="3" />
            <FrameLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1">
                <ImageView
                    android:id="@+id/iv_share"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_gravity="center_vertical|right"
                    android:layout_marginRight="10dp"
                    android:src="@drawable/ic_des_share" />
            </FrameLayout>
        </LinearLayout>
        <!--状态栏2-->
@@ -893,6 +605,62 @@
            </FrameLayout>
        </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_marginTop="57dp"
                android:orientation="horizontal">
                <LinearLayout
                    android:id="@+id/ll_notification"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="15dp"
                    android:background="@drawable/shape_detail_notification"
                    android:orientation="horizontal"
                    android:paddingRight="10dp"
                    android:visibility="gone">
                    <ImageView
                        android:id="@+id/iv_notif_portrait"
                        android:layout_width="25dp"
                        android:layout_height="25dp"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="3dp"
                        android:src="@drawable/ic_launcher" />
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10dp"
                        android:orientation="horizontal">
                        <TextView
                            android:id="@+id/tv_notif_name"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textColor="@color/white"
                            android:textSize="11sp" />
                        <TextView
                            android:id="@+id/tv_notif_des"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="10dp"
                            android:ellipsize="end"
                            android:maxLines="1"
                            android:textColor="@color/white"
                            android:textSize="11sp" />
                    </LinearLayout>
                </LinearLayout>
                <View
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_weight="1" />
            </LinearLayout>
    </FrameLayout>
@@ -995,11 +763,10 @@
                android:visibility="gone"></View>
            <LinearLayout
                android:id="@+id/ll_fanli_gain"
                android:layout_width="0dp"
                    android:id="@+id/ll_fanli"
                    android:layout_width="130dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:background="@drawable/shape_go_fanli"
                android:gravity="center"
                android:orientation="vertical">
@@ -1008,7 +775,7 @@
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="分享奖"
                        android:text="下单返利"
                    android:textColor="@color/white"
                    android:textSize="15sp" />
@@ -1024,11 +791,10 @@
            <LinearLayout
                android:id="@+id/fl_buy"
                android:layout_width="0dp"
                    android:id="@+id/ll_buy"
                    android:layout_width="130dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:background="@drawable/shape_go_buy"
                android:orientation="vertical">
@@ -1037,7 +803,7 @@
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="下单返"
                        android:text="下单立减"
                    android:textColor="@color/white"
                    android:textSize="15sp" />
@@ -1057,24 +823,73 @@
                android:layout_height="wrap_content"></View>
        </LinearLayout>
        <TextView
            android:id="@+id/tv_big_btn"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:layout_marginLeft="38dp"
            android:layout_marginRight="38dp"
            android:background="@drawable/shape_go_search"
            android:gravity="center"
            android:textColor="@color/white"
            android:textSize="18sp"
            android:textStyle="bold"
            android:visibility="gone">
        </TextView>
    </FrameLayout>
</LinearLayout>
    <FrameLayout
        android:id="@+id/fl_face"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:visibility="gone">
        <include layout="@layout/item_no_net" />
        <include layout="@layout/item_error_net" />
        <include layout="@layout/item_no_data" />
        <LinearLayout
            android:id="@+id/ll_goods_nothing"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="vertical"
            android:visibility="gone">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_goods_nothing" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="该商品已经下架了~"
                android:textColor="@color/text_black_1"
                android:textSize="15sp" />
        </LinearLayout>
        <FrameLayout
            android:id="@+id/fl_back_face"
            android:layout_width="60dp"
            android:layout_height="48dp">
            <ImageView
                android:id="@+id/iv_back_face"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center|left"
                android:layout_marginLeft="10dp"
                android:src="@drawable/icon_goods_detail_back" />
        </FrameLayout>
        <com.wang.avi.AVLoadingIndicatorView
            android:id="@+id/avi"
            style="@style/AVLoadingIndicatorView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:visibility="gone"
            app:indicatorColor="@color/theme"
            app:indicatorName="BallPulseIndicator" />
    </FrameLayout>
</FrameLayout>
app/src/main/res/layout/item_goods_detail_hongbao.xml
@@ -34,6 +34,15 @@
                    android:textColor="#ffffffff"
                    android:textSize="12sp" />
                <TextView
                    android:id="@+id/tv_sub_money_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text=""
                    android:textColor="#ffffffff"
                    android:textSize="9sp" />
                <View
                    android:layout_width="0dp"
                    android:layout_height="1px"
@@ -44,6 +53,8 @@
                    android:id="@+id/tv_final_money"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:drawableRight="@drawable/icon_goods_detail_hongbao_input"
                    android:drawablePadding="4dp"
                    android:text="¥28.9"
                    android:textColor="#ffffffff"
                    android:textSize="12sp" />
@@ -54,11 +65,10 @@
            <TextView
                android:id="@+id/tv_more"
                android:layout_width="wrap_content"
                android:layout_width="56dp"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center_horizontal"
                android:layout_marginBottom="3dp"
                android:text="更多">
                android:layout_marginBottom="3dp">
            </TextView>
@@ -275,6 +285,7 @@
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ll_level_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|top"
app/src/main/res/layout/item_goods_detail_rights.xml
New file
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_content"
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingLeft="7.5dp">
    <TextView
        android:id="@+id/tv_money"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawablePadding="3.5dp"
        android:text="¥50"
        android:textColor="#ffffac00"
        android:textSize="8sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="4.5dp"
        android:drawablePadding="3.5dp"
        android:text="无门槛领取"
        android:textColor="#ffffb218"
        android:textSize="9sp" />
</LinearLayout>