红包打开创建领取的样式逻辑构建

This commit is contained in:
18401019693
2023-06-29 10:15:24 +08:00
parent 279575d80b
commit 40455fffc9
17 changed files with 598 additions and 30 deletions

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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();
});
}
}

View File

@@ -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));
});
}
}

View File

@@ -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) {

View File

@@ -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();
}
});