441 lines
18 KiB
Java
441 lines
18 KiB
Java
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);
|
||
}
|
||
|
||
}
|