pdlivexp/common/src/main/java/com/yunbao/common/dialog/GiftWallGiftInfoDialog.java

441 lines
18 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.yunbao.common.dialog;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.XPopup;
import com.makeramen.roundedimageview.RoundedImageView;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.R;
import com.yunbao.common.adapter.GiftWallGiftInfoListItemAdapter;
import com.yunbao.common.bean.GiftWallInfoBean;
import com.yunbao.common.bean.JsWishBean;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.event.ClosePopupDialogEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ScreenDimenUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.Locale;
public class GiftWallGiftInfoDialog extends AbsDialogPopupWindow {
private boolean isFullWindows;
private ImageView mIvBg;
private ImageView mIvBack;
TextView giftName;
ImageView gift;
SVGAImageView gift_bg;
TextView diamond_text;
TextView gift_tv_progress;
TextView gift_tv_max;
ProgressBar gift_progress;
Button gift_btn;
Button tab1, tab2;
ImageView tips_timer;
TextView tv_list_title;
RoundedImageView avatar;
TextView user_name;
TextView send_num;
TextView btn_one;
Button btn_one_tips;
Button btn_lighten;
View tab_layout;
View bottom_layout;
View gift_schedule;
GiftWallGiftInfoListItemAdapter adapter;
RecyclerView recyclerView;
String giftId;
String toUserId;
boolean isAnchor;
int gift_hall_type = 1;
int list_type = 2;
private boolean isLiveRoom;
String time;
private boolean isStar;
public GiftWallGiftInfoDialog(Context context, String giftId, String toUserId, boolean isAnchor) {
super(context);
this.giftId = giftId;
this.toUserId = toUserId;
this.isAnchor = isAnchor;
}
public GiftWallGiftInfoDialog setFullWindows(boolean fullWindows) {
isFullWindows = fullWindows;
return this;
}
public GiftWallGiftInfoDialog setLiveRoom(boolean isLiveRoom) {
this.isLiveRoom = isLiveRoom;
return this;
}
public GiftWallGiftInfoDialog setStar(boolean isStar) {
this.isStar = isStar;
return this;
}
@Override
protected int getPopupHeight() {
if (isFullWindows) {
return super.getPopupHeight();
}
int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight();
return (int) (screenHeight * 0.8);
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_gift_wall_gift_info;
}
@Override
protected void onCreate() {
super.onCreate();
initView();
initData();
}
void initView() {
mIvBg = findViewById(R.id.iv_root_bg);
mIvBack = findViewById(R.id.iv_back);
giftName = findViewById(R.id.gift_name);
gift = findViewById(R.id.gift);
diamond_text = findViewById(R.id.diamond_text);
gift_tv_progress = findViewById(R.id.gift_tv_progress);
gift_tv_max = findViewById(R.id.gift_tv_max);
gift_progress = findViewById(R.id.gift_progress);
gift_btn = findViewById(R.id.gift_btn);
tab1 = findViewById(R.id.tab1);
tab2 = findViewById(R.id.tab2);
tips_timer = findViewById(R.id.tips_timer);
tv_list_title = findViewById(R.id.tv_list_title);
avatar = findViewById(R.id.bottom_avatar);
user_name = findViewById(R.id.bottom_user_name);
send_num = findViewById(R.id.send_num);
btn_one = findViewById(R.id.btn_one);
btn_one_tips = findViewById(R.id.btn_one_tips);
gift_bg = findViewById(R.id.gift_bg);
btn_lighten = findViewById(R.id.btn_lighten);
recyclerView = findViewById(R.id.recyclerView);
tab_layout = findViewById(R.id.tab_layout);
bottom_layout = findViewById(R.id.bottom_layout);
gift_schedule = findViewById(R.id.gift_schedule);
adapter = new GiftWallGiftInfoListItemAdapter();
adapter.setAnchor(isAnchor);
adapter.setLiveRoom(isLiveRoom);
adapter.setStar(isStar);
recyclerView.setAdapter(adapter);
recyclerView.addItemDecoration(new ItemDecoration(mContext, 0x00000000, 0, 10));
if (isStar) {
tab2.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_star));
((TextView) findViewById(R.id.user_name)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename1));
((TextView) findViewById(R.id.tv_rename)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename_value1));
tv_list_title.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_star));
} else {
tab2.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_champion));
tv_list_title.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_title_champion));
((TextView) findViewById(R.id.user_name)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename));
((TextView) findViewById(R.id.tv_rename)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_list_header_rename_value));
}
findViewById(R.id.item_anchor_name).setVisibility(View.GONE);
ViewClicksAntiShake.clicksAntiShake(tab1, () -> {
btn_one.setVisibility(View.GONE);
btn_one_tips.setVisibility(View.GONE);
tab1.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_up);
tab1.setTextColor(Color.parseColor("#31326D"));
tab2.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_down);
tab2.setTextColor(Color.parseColor("#FFFFFF"));
list_type = 1;
((TextView) findViewById(R.id.user_name)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_assistance_user));
((TextView) findViewById(R.id.tv_rename)).setText(WordUtil.getNewString(R.string.dialog_gift_wall_assistance_star));
initData();
});
ViewClicksAntiShake.clicksAntiShake(tab2, () -> {
btn_one.setVisibility(View.VISIBLE);
btn_one_tips.setVisibility(View.VISIBLE);
tab2.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_up);
tab2.setTextColor(Color.parseColor("#31326D"));
tab1.setBackgroundResource(R.drawable.gift_wall_gift_info_list_btn_down);
tab1.setTextColor(Color.parseColor("#FFFFFF"));
list_type = 2;
initData();
});
XPopup.Builder builder = new XPopup.Builder(getContext())
.atView(tips_timer);
builder.hasShadowBg(false);
tips_timer.setTag(builder);
ViewClicksAntiShake.clicksAntiShake(tips_timer, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
XPopup.Builder b = (XPopup.Builder) tips_timer.getTag();
b.asCustom(new GiftWallMainTab1TipsDialog(mContext, new OnItemClickListener<Integer>() {
@Override
public void onItemClick(Integer bean, int position) {
}
}).setTime(time)).show();
}
});
ViewClicksAntiShake.clicksAntiShake(btn_one, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
Bus.get().post(new JsWishBean(giftId));//setUname==by
Bus.get().post(new ClosePopupDialogEvent());
}
});
ViewClicksAntiShake.clicksAntiShake(gift_btn, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
Bus.get().post(new JsWishBean(giftId));//setUname==by
Bus.get().post(new ClosePopupDialogEvent());
}
});
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mIvBack.getLayoutParams();
if (isFullWindows) {
params.width = DpUtil.dp2px(20);
mIvBack.setVisibility(View.VISIBLE);
mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
params.width = DpUtil.dp2px(20);
mIvBack.setVisibility(View.VISIBLE);
mIvBg.setScaleType(ImageView.ScaleType.FIT_XY);
}
mIvBack.setLayoutParams(params);
ViewClicksAntiShake.clicksAntiShake(mIvBack, this::dismiss);
resetWindows();
}
private void resetWindows() {
if (isFullWindows) {
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) findViewById(R.id.gift_name).getLayoutParams();
params.topMargin = DpUtil.dp2px(47);
findViewById(R.id.gift_name).setLayoutParams(params);
}
}
void initData() {
adapter.setList_type(list_type);
if (isAnchor) {
if (isStar) {
gift_hall_type = 2;
} else {
gift_hall_type = 1;
}
LiveNetManager.get(mContext)
.liveGiftHallDetail(toUserId, giftId, gift_hall_type, list_type, new HttpCallback<GiftWallInfoBean>() {
@Override
public void onSuccess(GiftWallInfoBean data) {
initData(data);
}
@Override
public void onError(String error) {
}
});
} else {
LiveNetManager.get(mContext)
.singleUserGiftHallDetail(toUserId, giftId, new HttpCallback<GiftWallInfoBean>() {
@Override
public void onSuccess(GiftWallInfoBean data) {
initData(data);
}
@Override
public void onError(String error) {
}
});
}
}
void initData(GiftWallInfoBean giftBean) {
giftName.setText(WordUtil.isNewZh() ? giftBean.getGift_info().getGiftname() : giftBean.getGift_info().getGiftname_en());
ImgLoader.display(mContext, giftBean.getGift_info().getGifticon(), gift);
diamond_text.setText(String.format(Locale.getDefault(), "%d", giftBean.getGift_info().getNeedcoin()));
gift_tv_max.setText(String.format(Locale.getDefault(), "/%s", giftBean.getGift_info().getIlluminate_num()));
gift_tv_progress.setText(String.format(Locale.getDefault(), "%s", giftBean.getGift_info().getGift_hall_send_num()));
gift_progress.setMax(Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num()));
gift_progress.setProgress(giftBean.getGift_info().getNeedcoin_total());
if (giftBean.getGift_info().getIlluminate_status() == 1) {
gift_btn.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_top_btn_continue));
btn_lighten.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up));
btn_lighten.setBackgroundResource(R.drawable.gift_wall_gift_info_lighten);
} else {
gift_btn.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_info_top_btn_to));
btn_lighten.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_down));
btn_lighten.setBackgroundResource(R.drawable.gift_wall_gift_info_un_lighten);
}
adapter.setGiftStatus(giftBean.getGift_info().getIlluminate_status());
if (isAnchor) {
tab_layout.setVisibility(View.VISIBLE);
bottom_layout.setVisibility(View.VISIBLE);
tv_list_title.setVisibility(View.GONE);
} else {
tab_layout.setVisibility(View.GONE);
bottom_layout.setVisibility(View.GONE);
tv_list_title.setVisibility(View.VISIBLE);
if (!toUserId.equals(IMLoginManager.get(mContext).getUserInfo().getId() + "")) {
gift_btn.setVisibility(View.GONE);
gift_schedule.setVisibility(View.GONE);
gift_progress.setVisibility(View.GONE);
}
}
if (!isLiveRoom || (IMLoginManager.get(mContext).getUserInfo().getId() + "").equals(toUserId) && isAnchor) {
gift_btn.setEnabled(false);
btn_one.setEnabled(false);
gift_btn.setBackgroundResource(R.drawable.gift_wall_gift_info_btn_un);
btn_one.setBackgroundResource(R.drawable.gift_wall_gift_info_btn_un);
}
adapter.setData(giftBean.getData());
time = (WordUtil.isNewZh() ? "榜單結算時間" : "Settlement time") + giftBean.getGift_info().getGift_hall_start() + " - " + giftBean.getGift_info().getGift_hall_end();
ImgLoader.display(mContext, IMLoginManager.get(mContext).getUserInfo().getAvatar(), avatar);
user_name.setText(IMLoginManager.get(mContext).getUserInfo().getUserNicename());
send_num.setText(String.format(Locale.getDefault(), "%s", giftBean.getGift_info().getUser_gift_hall_send_num()));
String tmp = "";
if (giftBean.getGift_info().getIlluminate_status() == 0) {//未點亮
btn_one.setText(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_light);
tmp = String.format(Locale.getDefault(), "%s", (giftBean.getGift_info().getIlluminate_num() - Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num())));
setTips(tmp);
} else {//冠名/摘星
if (isStar) {
loadStar(giftBean);
} else {
loadChampion(giftBean);
}
}
initAnim();
}
private void setTips(String tmp) {
btn_one_tips.setText(String.format(Locale.getDefault(), "%s%s%s"
, WordUtil.isNewZh() ? "" : "Need ",
tmp,
WordUtil.isNewZh() ? "" : ""));
}
private void loadChampion(GiftWallInfoBean giftBean) {
int tmp = 0;
int mySend = Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num());
if (giftBean.getData() != null && !giftBean.getData().isEmpty()) {
tmp = giftBean.getData().get(0).getGift_hall_send_num() - Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num()) + 1;
}
if (mySend > tmp) {
btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion_get));
btn_one_tips.setVisibility(View.GONE);
} else {
btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_champion));
setTips(String.valueOf(tmp + 1));
}
}
private void loadStar(GiftWallInfoBean giftBean) {
int tmp = 0;
int mySend = Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num());
if (giftBean.getData() != null && !giftBean.getData().isEmpty()) {
tmp = giftBean.getData().get(0).getGift_hall_send_num() - Integer.parseInt(giftBean.getGift_info().getGift_hall_send_num()) + 1;
}
if (mySend > tmp) {
btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_star_get));
btn_one_tips.setVisibility(View.GONE);
} else {
btn_one.setText(WordUtil.getNewString(R.string.dialog_gift_wall_gfit_info_list_bottom_btn_one_star));
setTips(String.valueOf(tmp + 1));
}
}
void initAnim() {
if (gift.getTag() != null) {
return;
}
// 创建一个向上移动的动画
ObjectAnimator upAnimator = ObjectAnimator.ofFloat(gift, "translationY", 0f, -10f); // 假设 10f 是你想要移动的距离(注意:这里使用的是像素值,而不是 dp
upAnimator.setDuration(1000); // 设置动画时长为 1000 毫秒(即 1 秒)
// 创建一个向下移动的动画
ObjectAnimator downAnimator = ObjectAnimator.ofFloat(gift, "translationY", -10f, 0f);
downAnimator.setDuration(1000); // 同样设置动画时长为 1 秒
// 设置动画监听器以在向上动画结束后开始向下动画(如果需要的话)
upAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
// 在这里开始向下动画
downAnimator.start();
}
});
downAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
gift.postDelayed(upAnimator::start, 1000);
}
});
// 开始向上动画
upAnimator.start();
gift.setTag("start");
new SVGAParser(getContext()).decodeFromAssets("gift_wall_gift_info_light.svga", new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NonNull SVGAVideoEntity videoItem) {
gift_bg.setImageDrawable(new SVGADrawable(videoItem));
gift_bg.setLoops(0);
gift_bg.startAnimation();
}
@Override
public void onError() {
System.err.println("-------------SVGA报错了");
}
}, null);
}
}