红包打开创建领取的样式逻辑构建
This commit is contained in:
@@ -1,13 +1,8 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -20,7 +15,10 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.Constants;
|
||||
import com.yunbao.common.bean.LiveGiftBean;
|
||||
@@ -31,9 +29,10 @@ import com.yunbao.common.interfaces.CommonCallback;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.GiftCacheUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.custom.GiftMarkView;
|
||||
import com.yunbao.live.dialog.SendRendPacketPopup;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@@ -54,7 +53,7 @@ public class LiveGiftAdapter extends RecyclerView.Adapter<LiveGiftAdapter.Vh> {
|
||||
private ScaleAnimation mAnimation;
|
||||
private View mAnimView;
|
||||
private String mName1, mName2;
|
||||
boolean isTouch=true;
|
||||
boolean isTouch = true;
|
||||
|
||||
public void setTouch(boolean touch) {
|
||||
isTouch = touch;
|
||||
@@ -70,14 +69,14 @@ public class LiveGiftAdapter extends RecyclerView.Adapter<LiveGiftAdapter.Vh> {
|
||||
mOnClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if(!isTouch){
|
||||
if (!isTouch) {
|
||||
return;
|
||||
}
|
||||
Object tag = v.getTag();
|
||||
if (tag != null) {
|
||||
int position = (int) tag;
|
||||
LiveGiftBean bean = mList.get(position);
|
||||
if (!bean.isChecked()) {
|
||||
if (!bean.isChecked() && bean.getType() != 9999999) {
|
||||
if (!cancelChecked()) {
|
||||
if (mActionListener != null) {
|
||||
mActionListener.onCancel();
|
||||
@@ -196,7 +195,7 @@ public class LiveGiftAdapter extends RecyclerView.Adapter<LiveGiftAdapter.Vh> {
|
||||
tvRedpoint = (TextView) itemView.findViewById(R.id.tvRedpoint);
|
||||
mPayico = (ImageView) itemView.findViewById(R.id.pay_ico);
|
||||
expire = (TextView) itemView.findViewById(R.id.expire);
|
||||
mRadioButton.setOnClickListener(mOnClickListener);
|
||||
|
||||
mLoading = itemView.findViewById(R.id.gift_loading);
|
||||
mLoadingLayout = itemView.findViewById(R.id.gift_loading_layout);
|
||||
mLoadingLayout.setOnClickListener(v -> {
|
||||
@@ -208,20 +207,20 @@ public class LiveGiftAdapter extends RecyclerView.Adapter<LiveGiftAdapter.Vh> {
|
||||
mLoading.startAnimation(animation);
|
||||
LiveGiftBean bean = mList.get((Integer) v.getTag());
|
||||
GiftCacheUtil.getInstance().pause();
|
||||
GiftCacheUtil.getInstance().downloadGiftForId(mContext,bean, new CommonCallback<File>() {
|
||||
GiftCacheUtil.getInstance().downloadGiftForId(mContext, bean, new CommonCallback<File>() {
|
||||
@Override
|
||||
public void callback(File bean) {
|
||||
if(bean==null){
|
||||
if (bean == null) {
|
||||
ToastUtil.show(mContext.getString(R.string.load_failure_2));
|
||||
mLoading.setImageResource(R.mipmap.icon_download_gift);
|
||||
animation.setRepeatCount(0);
|
||||
animation.setDuration(0);
|
||||
animation.cancel();
|
||||
mLoading.setAnimation(animation);
|
||||
}else {
|
||||
} else {
|
||||
mLoadingLayout.setVisibility(View.GONE);
|
||||
}
|
||||
GiftCacheUtil.getInstance().restart();
|
||||
GiftCacheUtil.getInstance().restart();
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -235,16 +234,33 @@ public class LiveGiftAdapter extends RecyclerView.Adapter<LiveGiftAdapter.Vh> {
|
||||
}
|
||||
if (payload == null) {
|
||||
ImgLoader.display(mContext, bean.getIcon(), mIcon);
|
||||
bean.setView(mIcon);
|
||||
mName.setText(bean.getName());
|
||||
if (bean.getSendType() != null && bean.getSendType().equals("1")) {
|
||||
// mCoinName = mName2;
|
||||
mPayico.setImageResource(R.mipmap.gold_coin);
|
||||
if (bean.getType() == 9999999) {
|
||||
mPayico.setVisibility(View.GONE);
|
||||
mPrice.setText(mContext.getString(R.string.build_up_popularity));
|
||||
mPrice.setTextColor(Color.parseColor("#db8c4a"));
|
||||
ViewClicksAntiShake.clicksAntiShake(mRadioButton, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
new XPopup.Builder(mContext)
|
||||
.asCustom(new SendRendPacketPopup(mContext))
|
||||
.show();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
mRadioButton.setOnClickListener(mOnClickListener);
|
||||
mPrice.setTextColor(Color.parseColor("#c8c8c8"));
|
||||
mPayico.setVisibility(View.VISIBLE);
|
||||
bean.setView(mIcon);
|
||||
if (bean.getSendType() != null && bean.getSendType().equals("1")) {
|
||||
// mCoinName = mName2;
|
||||
mPayico.setImageResource(R.mipmap.gold_coin);
|
||||
} else {
|
||||
// mCoinName = mName1;
|
||||
mPayico.setImageResource(R.mipmap.diamond);
|
||||
mPayico.setImageResource(R.mipmap.diamond);
|
||||
}
|
||||
mPrice.setText(bean.getPrice());
|
||||
}
|
||||
mPrice.setText(bean.getPrice());
|
||||
|
||||
if (IMLoginManager.get(mContext).isNewUserGif() && position == 0 && bean.getTag() != null) {
|
||||
mPayico.setVisibility(View.GONE);
|
||||
@@ -295,10 +311,11 @@ public class LiveGiftAdapter extends RecyclerView.Adapter<LiveGiftAdapter.Vh> {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
mRadioButton.setTag(position);
|
||||
mRadioButton.doChecked(bean.isChecked());
|
||||
if (bean.getSwf()!=null&&bean.getSwf().isEmpty()) {
|
||||
if (bean.getSwf() != null && bean.getSwf().isEmpty()) {
|
||||
mLoadingLayout.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.opensource.svgaplayer.SVGACallback;
|
||||
import com.opensource.svgaplayer.SVGADrawable;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
@@ -728,8 +729,10 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
|
||||
}
|
||||
mBeanFromWish = null;
|
||||
}
|
||||
if (bean.getType() != 9999999) {
|
||||
itemCheckOp(bean);
|
||||
|
||||
itemCheckOp(bean);
|
||||
}
|
||||
}
|
||||
|
||||
private void itemCheckOp(LiveGiftBean bean) {
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.yunbao.live.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.core.CenterPopupView;
|
||||
import com.yunbao.common.views.weight.CircleProgress;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
|
||||
public class ReceiveRendPacketPopup extends CenterPopupView {
|
||||
private CircleProgress circleProgress;
|
||||
private int time = 10;
|
||||
private Button redPacketOpen;
|
||||
private TextView redPacketTimeText;
|
||||
private FrameLayout redPacketTimeLayout;
|
||||
|
||||
public ReceiveRendPacketPopup(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
// 返回自定义弹窗的布局离开
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.view_receive_red_packet;
|
||||
}
|
||||
|
||||
// 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
initView();
|
||||
}
|
||||
|
||||
private Handler timeHandler = new Handler();
|
||||
|
||||
private Runnable timeRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (time > 0) {
|
||||
circleProgress.setCurrent(time--);
|
||||
timeHandler.postDelayed(timeRunnable, 1000);
|
||||
redPacketTimeText.setText(String.valueOf(time));
|
||||
} else {
|
||||
redPacketTimeLayout.setVisibility(GONE);
|
||||
redPacketOpen.setVisibility(VISIBLE);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
private void initView() {
|
||||
circleProgress = findViewById(R.id.circleProgress);
|
||||
redPacketOpen = findViewById(R.id.red_packet_open);
|
||||
redPacketTimeText = findViewById(R.id.red_packet_time_text);
|
||||
redPacketTimeLayout = findViewById(R.id.red_packet_time_layout);
|
||||
circleProgress.setMax(time);
|
||||
circleProgress.setCurrent(time);
|
||||
redPacketTimeText.setText(String.valueOf(time));
|
||||
timeHandler.postDelayed(timeRunnable, 1000);
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.red_packet_open), () -> {
|
||||
dismiss();
|
||||
new XPopup.Builder(getContext())
|
||||
.asCustom(new ResultRendPacketPopup(getContext()))
|
||||
.show();
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.yunbao.live.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.lxj.xpopup.core.CenterPopupView;
|
||||
import com.yunbao.common.Constants;
|
||||
import com.yunbao.common.utils.Bus;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.activity.LiveAudienceActivity;
|
||||
import com.yunbao.live.event.LiveAudienceEvent;
|
||||
|
||||
public class ResultRendPacketPopup extends CenterPopupView {
|
||||
|
||||
|
||||
public ResultRendPacketPopup(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
// 返回自定义弹窗的布局离开
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.view_result_red_packet;
|
||||
}
|
||||
|
||||
// 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
initView();
|
||||
}
|
||||
|
||||
|
||||
private void initView() {
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.illustrate_close), () -> dismiss());
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.anchor_his_heart), () -> {
|
||||
dismiss();
|
||||
Bus.get().post(new LiveAudienceEvent()
|
||||
.setType(LiveAudienceEvent.LiveAudienceType.GIFT_POPUP));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +1,21 @@
|
||||
package com.yunbao.live.dialog;
|
||||
|
||||
import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.text.Editable;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.lxj.xpopup.core.CenterPopupView;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
@@ -19,6 +25,8 @@ public class SendRendPacketPopup extends CenterPopupView {
|
||||
private Button thereIsNo, followingAnchor;
|
||||
private TextView redEnvelopeRill, totalConsumptionOfDrill;
|
||||
private TextView rill, total;
|
||||
private FrameLayout redPacketIllustrate;
|
||||
private ImageView iconInstructions, illustrateClose;
|
||||
|
||||
public SendRendPacketPopup(@NonNull Context context) {
|
||||
super(context);
|
||||
@@ -42,6 +50,9 @@ public class SendRendPacketPopup extends CenterPopupView {
|
||||
followingAnchor = findViewById(R.id.following_anchor);
|
||||
redEnvelopeRill = findViewById(R.id.red_envelope_rill);
|
||||
totalConsumptionOfDrill = findViewById(R.id.total_consumption_of_drill);
|
||||
redPacketIllustrate = findViewById(R.id.red_packet_illustrate);
|
||||
illustrateClose = findViewById(R.id.illustrate_close);
|
||||
iconInstructions = findViewById(R.id.icon_instructions);
|
||||
rill = findViewById(R.id.rill);
|
||||
total = findViewById(R.id.total);
|
||||
selectText(thereIsNo, true);
|
||||
@@ -132,6 +143,12 @@ public class SendRendPacketPopup extends CenterPopupView {
|
||||
//红包初始数量
|
||||
rill.setText("200");
|
||||
total.setText("10");
|
||||
ViewClicksAntiShake.clicksAntiShake(iconInstructions, () -> redPacketIllustrate.setVisibility(VISIBLE));
|
||||
ViewClicksAntiShake.clicksAntiShake(illustrateClose, () -> redPacketIllustrate.setVisibility(GONE));
|
||||
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.top_up_now), () -> {
|
||||
//我们的
|
||||
ARouter.getInstance().build(PATH_COIN).withInt("p", 0).navigation();
|
||||
});
|
||||
}
|
||||
|
||||
private void selectText(TextView textView, boolean select) {
|
||||
|
||||
@@ -152,7 +152,7 @@ import com.yunbao.live.dialog.LiveHDDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveUserAnchorMailBoxWebInfoPopDialog;
|
||||
import com.yunbao.live.dialog.LiveUserDialogFragment;
|
||||
import com.yunbao.live.dialog.LiveWishListDialogFragment4Audience;
|
||||
import com.yunbao.live.dialog.SendRendPacketPopup;
|
||||
import com.yunbao.live.dialog.ReceiveRendPacketPopup;
|
||||
import com.yunbao.live.event.LiveAnchorEvent;
|
||||
import com.yunbao.live.event.LiveAudienceEvent;
|
||||
import com.yunbao.live.event.LiveRoomChangeEvent;
|
||||
@@ -1414,7 +1414,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
new XPopup.Builder(mContext)
|
||||
.asCustom(new SendRendPacketPopup(mContext))
|
||||
.asCustom(new ReceiveRendPacketPopup(mContext))
|
||||
.show();
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user