新增礼物墙相关内容

This commit is contained in:
2024-07-13 09:28:02 +08:00
parent 9c38f40098
commit 845b217c4d
153 changed files with 17835 additions and 29 deletions

View File

@@ -20,6 +20,7 @@ public class Constants {
public static final String AVATAR = "avatar";
public static final String SIGN = "sign";
public static final String TO_UID = "toUid";
public static final String TO_UNAME = "toUserName";
public static final String INTOINDEX = "intoIndex";
public static final String FROM_LIVE_ROOM = "fromLiveRoom";
public static final String TO_NAME = "toName";

View File

@@ -0,0 +1,77 @@
package com.yunbao.common.adapter;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.makeramen.roundedimageview.RoundedImageView;
import com.yunbao.common.R;
import com.yunbao.common.bean.GiftWallInfoBean;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.WordUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class GiftWallGiftInfoListItemAdapter extends RecyclerView.Adapter<GiftWallGiftInfoListItemAdapter.VH> {
List<GiftWallInfoBean.Data> data = new ArrayList<>();
public void setData(List<GiftWallInfoBean.Data> data) {
if (data == null) {
data = new ArrayList<>();
}
this.data = data;
notifyDataSetChanged();
}
@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new VH(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dialog_gift_wall_gift_info, parent, false));
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
holder.setData(data.get(position), position);
}
@Override
public int getItemCount() {
return data.size();
}
public class VH extends RecyclerView.ViewHolder {
TextView tv_rank, user_name, tv_rename;
RoundedImageView avatar;
public VH(@NonNull View itemView) {
super(itemView);
tv_rank = itemView.findViewById(R.id.tv_rank);
user_name = itemView.findViewById(R.id.user_name);
tv_rename = itemView.findViewById(R.id.tv_rename);
avatar = itemView.findViewById(R.id.avatar);
}
public void setData(GiftWallInfoBean.Data data, int position) {
tv_rank.setText(String.format(Locale.getDefault(), "%d", (position + 1)));
tv_rank.setTextColor(Color.parseColor("#FCC755"));
tv_rank.setTextSize(20);
tv_rename.setText(String.format(Locale.getDefault(), "%d", (data.getGift_hall_send_num())));
avatar.setVisibility(View.VISIBLE);
if (data.getActive_rank_hide() == 1) {
user_name.setText(WordUtil.getNewString(R.string.mystery_man));
avatar.setImageResource(R.mipmap.hide);
} else {
user_name.setText(data.getUser_name());
ImgLoader.display(itemView.getContext(), data.getAvatar(), avatar);
}
}
}
}

View File

@@ -0,0 +1,180 @@
package com.yunbao.common.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowInsets;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.opensource.svgaplayer.SVGACallback;
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.bean.GiftWallBean;
import com.yunbao.common.dialog.GiftWallGiftInfoDialog;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.manager.base.ACache;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.ArrayList;
import java.util.List;
public class GiftWallMainTab1List2Adapter extends RecyclerView.Adapter<GiftWallMainTab1List2Adapter.VH> {
Context mContext;
List<GiftWallBean.Gift> list;
boolean isStar;
SVGAVideoEntity drawable;
String toUid;
boolean isAnchor;
private boolean isLiveRoom;
public GiftWallMainTab1List2Adapter(Context mContext) {
this.mContext = mContext;
list = new ArrayList<>();
}
public void setToUid(String toUid) {
this.toUid = toUid;
}
public void setAnchor(boolean anchor) {
isAnchor = anchor;
}
public void setList(List<GiftWallBean.Gift> list) {
if (list == null) {
list = new ArrayList<>();
}
this.list = list;
notifyDataSetChanged();
}
public void setDrawable(SVGAVideoEntity drawable) {
this.drawable = drawable;
}
public void setStar(boolean star) {
isStar = star;
}
@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new VH(LayoutInflater.from(mContext).inflate(R.layout.item_gift_wall_man_tab1_list_2, parent, false));
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
holder.setData(list.get(position), position);
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onViewAttachedToWindow(@NonNull VH holder) {
super.onViewAttachedToWindow(holder);
holder.giftBg.startAnimation();
}
@Override
public void onViewDetachedFromWindow(@NonNull VH holder) {
super.onViewDetachedFromWindow(holder);
holder.giftBg.stopAnimation();
}
public void setLiveRoom(boolean isLiveRoom) {
this.isLiveRoom = isLiveRoom;
}
public class VH extends RecyclerView.ViewHolder {
SVGAImageView giftBg;
ImageView gift_soles;
ImageView giftImage;
TextView gift_name;
TextView gift_status;
ProgressBar progressBar;
public VH(View itemView) {
super(itemView);
giftBg = itemView.findViewById(R.id.gift_bg);
gift_soles = itemView.findViewById(R.id.gift_soles);
giftImage = itemView.findViewById(R.id.gift);
gift_name = itemView.findViewById(R.id.gift_name);
gift_status = itemView.findViewById(R.id.gift_status);
progressBar = itemView.findViewById(R.id.progressBar);
}
@SuppressLint("DefaultLocale")
public void setData(GiftWallBean.Gift gift, int position) {
gift_name.setText(WordUtil.isNewZh() ? gift.getGift_name() : gift.getGift_name_en());
ImgLoader.display(itemView.getContext(), gift.getGift_icon(), giftImage, 40, 40);
giftBg.setClearsAfterDetached(false);
giftBg.setClearsAfterStop(false);
if (gift.getIlluminate_status() == 1) {
gift_status.setText(String.format("%s%d", WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up), gift.getGift_hall_send_num()));
gift_status.setTextColor(Color.parseColor("#FFFFFF"));
gift_soles.setImageResource(getSolesrRes());
if (drawable != null) {
giftBg.post(() -> {
giftBg.setImageDrawable(new SVGADrawable(drawable));
giftBg.setLoops(0);
giftBg.startAnimation();
});
}
progressBar.setMax(gift.getIlluminate_num());
progressBar.setProgress(gift.getGift_hall_send_num());
} else {
gift_status.setText(WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_down));
gift_status.setTextColor(Color.parseColor("#01071A"));
gift_soles.setImageResource(getUnSolesrRes());
giftBg.setImageResource(R.mipmap.gift_wall_main_item_bg1);
}
ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
new GiftWallGiftInfoDialog(mContext, gift.getGift_id() + "", toUid, isAnchor)
.setFullWindows(!isLiveRoom)
.setLiveRoom(isLiveRoom)
.setStar(isStar)
.showDialog();
}
});
}
private int getSolesrRes() {
return isStar ? R.mipmap.gift_wall_main_item_select : R.mipmap.gift_wall_main_item_select1;
}
private int getUnSolesrRes() {
return isStar ? R.mipmap.gift_wall_main_item_unselect : R.mipmap.gift_wall_main_item_unselect1;
}
}
}

View File

@@ -0,0 +1,169 @@
package com.yunbao.common.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.makeramen.roundedimageview.RoundedImageView;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.R;
import com.yunbao.common.bean.GiftWallBean;
import com.yunbao.common.bean.GiftWallTab2Bean;
import com.yunbao.common.dialog.GiftWallGiftInfoDialog;
import com.yunbao.common.dialog.GiftWallMainTab2ClassicInfoDialog;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class GiftWallMainTab2ListAdapter extends RecyclerView.Adapter<GiftWallMainTab2ListAdapter.VH> {
Context mContext;
List<GiftWallTab2Bean.Gift> list;
boolean isStar;
String toUid;
boolean isAnchor;
private boolean isLiveRoom;
public GiftWallMainTab2ListAdapter(Context mContext) {
this.mContext = mContext;
list = new ArrayList<>();
}
public void setToUid(String toUid) {
this.toUid = toUid;
}
public void setAnchor(boolean anchor) {
isAnchor = anchor;
}
public void setList(List<GiftWallTab2Bean.Gift> list) {
if (list == null) {
list = new ArrayList<>();
}
this.list = list;
notifyDataSetChanged();
}
public void setStar(boolean star) {
isStar = star;
}
@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (isStar) {
return new VH(LayoutInflater.from(mContext).inflate(R.layout.item_gift_wall_man_tab2_list_1, parent, false));
}
return new VH(LayoutInflater.from(mContext).inflate(R.layout.item_gift_wall_man_tab2_list_2, parent, false));
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
holder.setData(list.get(position), position);
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onViewAttachedToWindow(@NonNull VH holder) {
super.onViewAttachedToWindow(holder);
}
@Override
public void onViewDetachedFromWindow(@NonNull VH holder) {
super.onViewDetachedFromWindow(holder);
}
public void setLiveRoom(boolean isLiveRoom) {
this.isLiveRoom = isLiveRoom;
}
public class VH extends RecyclerView.ViewHolder {
ImageView gift;
TextView gift_name;
TextView gift_number;
RoundedImageView user1Avatar, user2Avatar;
TextView anchor_nickname;
TextView user_nickname;
TextView tv_wait;
View imageView8;
public VH(View itemView) {
super(itemView);
gift = itemView.findViewById(R.id.gift);
gift_name = itemView.findViewById(R.id.gift_name);
gift_number = itemView.findViewById(R.id.gift_number);
user1Avatar = itemView.findViewById(R.id.user1_avatar);
user2Avatar = itemView.findViewById(R.id.user2_avatar);
anchor_nickname = itemView.findViewById(R.id.anchor_nickname);
user_nickname = itemView.findViewById(R.id.user_nickname);
tv_wait = itemView.findViewById(R.id.tv_wait);
imageView8 = itemView.findViewById(R.id.imageView8);
}
@SuppressLint("DefaultLocale")
public void setData(GiftWallTab2Bean.Gift giftData, int position) {
gift_name.setText(WordUtil.isNewZh() ? giftData.getGiftName() : giftData.getGiftNameEn());
ImgLoader.display(itemView.getContext(), giftData.getGiftIcon(), gift, 60, 60);
if (!StringUtil.isEmpty(giftData.getNamingLiveNicename(), giftData.getNamingUserNicename())) {
anchor_nickname.setVisibility(View.VISIBLE);
user_nickname.setVisibility(View.VISIBLE);
gift_number.setVisibility(View.VISIBLE);
user1Avatar.setVisibility(View.VISIBLE);
user2Avatar.setVisibility(View.VISIBLE);
imageView8.setVisibility(View.VISIBLE);
tv_wait.setVisibility(View.GONE);
gift_number.setText(String.format(Locale.getDefault(), "%d", giftData.getNeedCoinTotal()));
ImgLoader.display(mContext, giftData.getNamingLiveAvatar(), user1Avatar, 35, 35);
ImgLoader.display(mContext, giftData.getNamingUserAvatar(), user2Avatar, 35, 35);
anchor_nickname.setText(giftData.getNamingLiveNicename());
user_nickname.setText(giftData.getNamingUserNicename());
} else {
user1Avatar.setVisibility(View.GONE);
user2Avatar.setVisibility(View.GONE);
anchor_nickname.setVisibility(View.GONE);
user_nickname.setVisibility(View.GONE);
gift_number.setVisibility(View.GONE);
imageView8.setVisibility(View.GONE);
tv_wait.setVisibility(View.VISIBLE);
}
ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
new GiftWallMainTab2ClassicInfoDialog(mContext, giftData, isAnchor).setFullWindows(!isLiveRoom).show();
}
});
}
private int getSolesrRes() {
return isStar ? R.mipmap.gift_wall_main_item_select : R.mipmap.gift_wall_main_item_select1;
}
private int getUnSolesrRes() {
return isStar ? R.mipmap.gift_wall_main_item_unselect : R.mipmap.gift_wall_main_item_unselect1;
}
}
}

View File

@@ -0,0 +1,253 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.utils.StringUtil;
import java.util.List;
public class GiftWallBean extends BaseModel {
private IlluminateData illuminate_data;
private int active_rank_hide;
public GiftWallBean() {
}
public IlluminateData getIlluminate_data() {
return illuminate_data;
}
public void setIlluminate_data(IlluminateData illuminate_data) {
this.illuminate_data = illuminate_data;
}
public int getActive_rank_hide() {
return active_rank_hide;
}
public void setActive_rank_hide(int active_rank_hide) {
this.active_rank_hide = active_rank_hide;
}
public static class IlluminateData {
private List<Gift> week_star_data;
private List<Gift> gift_data;
private int week_gift_illuminate_num;
private int week_star_gift_num;
private int gift_illuminate_num;
private int gift_num;
private String gift_hall_start_date;
private String gift_hall_end_date;
public IlluminateData() {
}
public String getGift_hall_start_date() {
if(!StringUtil.isEmpty("gift_hall_start_date")){
gift_hall_start_date=gift_hall_start_date.replace("-","/");
}
return gift_hall_start_date;
}
public void setGift_hall_start_date(String gift_hall_start_date) {
this.gift_hall_start_date = gift_hall_start_date;
}
public String getGift_hall_end_date() {
if(!StringUtil.isEmpty("gift_hall_end_date")){
gift_hall_end_date=gift_hall_end_date.replace("-","/");
}
return gift_hall_end_date;
}
public void setGift_hall_end_date(String gift_hall_end_date) {
this.gift_hall_end_date = gift_hall_end_date;
}
public List<Gift> getWeek_star_data() {
return week_star_data;
}
public void setWeek_star_data(List<Gift> week_star_data) {
this.week_star_data = week_star_data;
}
public List<Gift> getGift_data() {
return gift_data;
}
public void setGift_data(List<Gift> gift_data) {
this.gift_data = gift_data;
}
public int getWeek_gift_illuminate_num() {
return week_gift_illuminate_num;
}
public void setWeek_gift_illuminate_num(int week_gift_illuminate_num) {
this.week_gift_illuminate_num = week_gift_illuminate_num;
}
public int getWeek_star_gift_num() {
return week_star_gift_num;
}
public void setWeek_star_gift_num(int week_star_gift_num) {
this.week_star_gift_num = week_star_gift_num;
}
public int getGift_illuminate_num() {
return gift_illuminate_num;
}
public void setGift_illuminate_num(int gift_illuminate_num) {
this.gift_illuminate_num = gift_illuminate_num;
}
public int getGift_num() {
return gift_num;
}
public void setGift_num(int gift_num) {
this.gift_num = gift_num;
}
}
public static class Gift {
private int gift_id;
private int sendtype;
private String gift_name;
private long need_coin; // 注意这里可能需要更改为long类型因为666666超过了int的最大值
private String gift_icon;
private int week_start_level;
private int illuminate_num;
private int gift_hall_type;
private String gift_name_en;
private String gift_hall_start; // 使用Java 8的LocalDate来处理日期
private String gift_hall_end;
private int gift_hall_send_num;
private int illuminate_status;
private long needcoin_total;
public Gift() {
}
public String getGift_hall_start() {
if(!StringUtil.isEmpty(gift_hall_start)){
gift_hall_start=gift_hall_start.replace("-","/");
}
return gift_hall_start;
}
public String getGift_hall_end() {
if(!StringUtil.isEmpty(gift_hall_end)){
gift_hall_end=gift_hall_end.replace("-","/");
}
return gift_hall_end;
}
public int getGift_id() {
return gift_id;
}
public void setGift_id(int gift_id) {
this.gift_id = gift_id;
}
public int getSendtype() {
return sendtype;
}
public void setSendtype(int sendtype) {
this.sendtype = sendtype;
}
public String getGift_name() {
return gift_name;
}
public void setGift_name(String gift_name) {
this.gift_name = gift_name;
}
public long getNeed_coin() {
return need_coin;
}
public void setNeed_coin(long need_coin) {
this.need_coin = need_coin;
}
public String getGift_icon() {
return gift_icon;
}
public void setGift_icon(String gift_icon) {
this.gift_icon = gift_icon;
}
public int getWeek_start_level() {
return week_start_level;
}
public void setWeek_start_level(int week_start_level) {
this.week_start_level = week_start_level;
}
public int getIlluminate_num() {
return illuminate_num;
}
public void setIlluminate_num(int illuminate_num) {
this.illuminate_num = illuminate_num;
}
public int getGift_hall_type() {
return gift_hall_type;
}
public void setGift_hall_type(int gift_hall_type) {
this.gift_hall_type = gift_hall_type;
}
public String getGift_name_en() {
return gift_name_en;
}
public void setGift_name_en(String gift_name_en) {
this.gift_name_en = gift_name_en;
}
public void setGift_hall_start(String gift_hall_start) {
this.gift_hall_start = gift_hall_start;
}
public void setGift_hall_end(String gift_hall_end) {
this.gift_hall_end = gift_hall_end;
}
public int getGift_hall_send_num() {
return gift_hall_send_num;
}
public void setGift_hall_send_num(int gift_hall_send_num) {
this.gift_hall_send_num = gift_hall_send_num;
}
public int getIlluminate_status() {
return illuminate_status;
}
public void setIlluminate_status(int illuminate_status) {
this.illuminate_status = illuminate_status;
}
public long getNeedcoin_total() {
return needcoin_total;
}
public void setNeedcoin_total(long needcoin_total) {
this.needcoin_total = needcoin_total;
}
}
}

View File

@@ -0,0 +1,114 @@
package com.yunbao.common.bean;
import java.util.List;
public class GiftWallForUserBean extends BaseModel {
private List<Gift> illuminate_data;
private int active_rank_hide;
public GiftWallForUserBean() {
}
public List<Gift> getIlluminate_data() {
return illuminate_data;
}
public void setIlluminate_data(List<Gift> illuminate_data) {
this.illuminate_data = illuminate_data;
}
public int getActive_rank_hide() {
return active_rank_hide;
}
public void setActive_rank_hide(int active_rank_hide) {
this.active_rank_hide = active_rank_hide;
}
public static class Gift {
private String giftname;
private String giftname_en;
private String gifticon;
private int needcoin;
private int needcoin_total;
private int gift_hall_send_num;
private int illuminate_status;
private int gift_id;
private int id;
public Gift() {
}
public String getGiftname() {
return giftname;
}
public void setGiftname(String giftname) {
this.giftname = giftname;
}
public String getGiftname_en() {
return giftname_en;
}
public void setGiftname_en(String giftname_en) {
this.giftname_en = giftname_en;
}
public String getGifticon() {
return gifticon;
}
public void setGifticon(String gifticon) {
this.gifticon = gifticon;
}
public int getNeedcoin() {
return needcoin;
}
public void setNeedcoin(int needcoin) {
this.needcoin = needcoin;
}
public int getNeedcoin_total() {
return needcoin_total;
}
public void setNeedcoin_total(int needcoin_total) {
this.needcoin_total = needcoin_total;
}
public int getGift_hall_send_num() {
return gift_hall_send_num;
}
public void setGift_hall_send_num(int gift_hall_send_num) {
this.gift_hall_send_num = gift_hall_send_num;
}
public int getIlluminate_status() {
return illuminate_status;
}
public void setIlluminate_status(int illuminate_status) {
this.illuminate_status = illuminate_status;
}
public int getGift_id() {
return gift_id;
}
public void setGift_id(int gift_id) {
this.gift_id = gift_id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
}

View File

@@ -0,0 +1,258 @@
package com.yunbao.common.bean;
import com.alibaba.fastjson.annotation.JSONField;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.utils.RandomUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.WordUtil;
import java.util.ArrayList;
import java.util.List;
public class GiftWallInfoBean extends BaseModel {
@SerializedName("gift_info")
private GiftInfo gift_info;
@SerializedName("data")
private List<Data> data;
@SerializedName("is_me")
private int is_me;
// 一般情况下我们会添加getter和setter方法但根据你的要求这里省略
@JSONField(name = "gift_info")
public GiftInfo getGift_info() {
return gift_info;
}
@JSONField(name = "gift_info")
public void setGift_info(GiftInfo gift_info) {
this.gift_info = gift_info;
}
@JSONField(name = "data")
public List<Data> getData() {
/* if (data == null || data.isEmpty()) {
data = new ArrayList<>();
for (int i = 0; i < 20; i++) {
Data item = new Data();
item.setId(i);
item.setActive_rank_hide(i % 4 == 0 ? 0 : 1);
item.setUser_name("用户:" + i);
item.setGift_hall_send_num(RandomUtil.nextInt(100000));
item.setAvatar("https://downs.yaoulive.com/manfive.png");
data.add(item);
}
}*/
return data;
}
@JSONField(name = "data")
public void setData(List<Data> data) {
this.data = data;
}
public int getIs_me() {
return is_me;
}
public void setIs_me(int is_me) {
this.is_me = is_me;
}
// 嵌套类GiftInfo
public static class GiftInfo {
@SerializedName("gift_name")
private String giftname;
@SerializedName("gift_name_en")
private String giftname_en;
@SerializedName("gift_icon")
private String gifticon;
@SerializedName("need_coin")
private int needcoin;
@SerializedName("needcoin_total")
private int needcoin_total;
@SerializedName("gift_hall_send_num")
private String gift_hall_send_num;
@SerializedName("illuminate_num")
private int illuminate_num;
@SerializedName("illuminate_status")
private int illuminate_status;
@SerializedName("gift_id")
private int gift_id;
@SerializedName("id")
private int id;
@SerializedName("gift_hall_start_date")
private String gift_hall_start; // 使用Java 8的LocalDate来处理日期
@SerializedName("gift_hall_end_date")
private String gift_hall_end;
@JSONField(name = "gift_hall_start_date")
public void setGift_hall_start(String gift_hall_start) {
this.gift_hall_start = gift_hall_start;
}
@JSONField(name = "gift_hall_start_date")
public String getGift_hall_start() {
if(!StringUtil.isEmpty(gift_hall_start)){
gift_hall_start=gift_hall_start.replace("-","/");
}
return gift_hall_start;
}
@JSONField(name = "gift_hall_end_date")
public String getGift_hall_end() {
if(!StringUtil.isEmpty(gift_hall_end)){
gift_hall_end=gift_hall_end.replace("-","/");
}
return gift_hall_end;
}
public void setGift_hall_end(String gift_hall_end) {
this.gift_hall_end = gift_hall_end;
}
// 同样地这里省略getter和setter方法
public String getGiftname() {
return giftname;
}
public void setGiftname(String giftname) {
this.giftname = giftname;
}
public String getGiftname_en() {
return giftname_en;
}
public void setGiftname_en(String giftname_en) {
this.giftname_en = giftname_en;
}
public String getGifticon() {
return gifticon;
}
public void setGifticon(String gifticon) {
this.gifticon = gifticon;
}
public int getNeedcoin() {
return needcoin;
}
public void setNeedcoin(int needcoin) {
this.needcoin = needcoin;
}
public int getNeedcoin_total() {
return needcoin_total;
}
public void setNeedcoin_total(int needcoin_total) {
this.needcoin_total = needcoin_total;
}
public int getIlluminate_num() {
return illuminate_num;
}
public void setIlluminate_num(int illuminate_num) {
this.illuminate_num = illuminate_num;
}
public String getGift_hall_send_num() {
if (StringUtil.isEmpty(gift_hall_send_num)) {
gift_hall_send_num = "0";
}
return gift_hall_send_num;
}
public void setGift_hall_send_num(String gift_hall_send_num) {
this.gift_hall_send_num = gift_hall_send_num;
}
public int getIlluminate_status() {
return illuminate_status;
}
public void setIlluminate_status(int illuminate_status) {
this.illuminate_status = illuminate_status;
}
public int getGift_id() {
return gift_id;
}
public void setGift_id(int gift_id) {
this.gift_id = gift_id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
// 嵌套类Data
public static class Data {
private int gift_hall_send_num;
private String user_name;
private String avatar;
private int id;
private int active_rank_hide;
private String create_time;
// 同样地这里省略getter和setter方法
public int getGift_hall_send_num() {
return gift_hall_send_num;
}
public void setGift_hall_send_num(int gift_hall_send_num) {
this.gift_hall_send_num = gift_hall_send_num;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getActive_rank_hide() {
return active_rank_hide;
}
public void setActive_rank_hide(int active_rank_hide) {
this.active_rank_hide = active_rank_hide;
}
public String getCreate_time() {
return create_time;
}
public void setCreate_time(String create_time) {
this.create_time = create_time;
}
}
}

View File

@@ -0,0 +1,312 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GiftWallTab2Bean extends BaseModel{
@SerializedName("illuminate_data")
private IlluminateData illuminateData;
@SerializedName("gift_hall_start_date")
private String gift_hall_start_date;
@SerializedName("gift_hall_end_date")
private String gift_hall_end_date;
public GiftWallTab2Bean() {
}
public IlluminateData getIlluminateData() {
return illuminateData;
}
public void setIlluminateData(IlluminateData illuminateData) {
this.illuminateData = illuminateData;
}
public String getGift_hall_start_date() {
return gift_hall_start_date;
}
public void setGift_hall_start_date(String gift_hall_start_date) {
this.gift_hall_start_date = gift_hall_start_date;
}
public String getGift_hall_end_date() {
return gift_hall_end_date;
}
public void setGift_hall_end_date(String gift_hall_end_date) {
this.gift_hall_end_date = gift_hall_end_date;
}
public static class IlluminateData{
@SerializedName("week_start_data")
private List<Gift> weekStartData;
@SerializedName("gift_data")
private List<Gift> giftData;
public IlluminateData() {
}
public List<Gift> getWeekStartData() {
return weekStartData;
}
public void setWeekStartData(List<Gift> weekStartData) {
this.weekStartData = weekStartData;
}
public List<Gift> getGiftData() {
return giftData;
}
public void setGiftData(List<Gift> giftData) {
this.giftData = giftData;
}
}
public static class Gift{
@SerializedName("gift_id")
public int giftId;
@SerializedName("sendtype")
public int sendType;
@SerializedName("gift_name")
public String giftName;
@SerializedName("need_coin")
public int needCoin;
@SerializedName("gift_icon")
public String giftIcon;
@SerializedName("week_star_level")
public int weekStarLevel;
@SerializedName("illuminate_num")
public int illuminateNum;
@SerializedName("gift_hall_type")
public int giftHallType;
@SerializedName("gift_name_en")
public String giftNameEn;
@SerializedName("gift_hall_start")
public String giftHallStart;
@SerializedName("gift_hall_end")
public String giftHallEnd;
@SerializedName("naming_live_id")
public int namingLiveId;
@SerializedName("naming_live_nicename")
public String namingLiveNicename;
@SerializedName("gift_hall_send_num")
public int giftHallSendNum;
@SerializedName("naming_live_avatar")
public String namingLiveAvatar;
@SerializedName("naming_live_active_rank_hide")
public int namingLiveActiveRankHide;
@SerializedName("illuminate_status")
public int illuminateStatus;
@SerializedName("naming_user_id")
public int namingUserId;
@SerializedName("naming_user_nicename")
public String namingUserNicename;
@SerializedName("naming_user_avatar")
public String namingUserAvatar;
@SerializedName("naming_user_active_rank_hide")
public int namingUserActiveRankHide;
@SerializedName("needcoin_total")
public int needCoinTotal;
public int getGiftId() {
return giftId;
}
public void setGiftId(int giftId) {
this.giftId = giftId;
}
public int getSendType() {
return sendType;
}
public void setSendType(int sendType) {
this.sendType = sendType;
}
public String getGiftName() {
return giftName;
}
public void setGiftName(String giftName) {
this.giftName = giftName;
}
public int getNeedCoin() {
return needCoin;
}
public void setNeedCoin(int needCoin) {
this.needCoin = needCoin;
}
public String getGiftIcon() {
return giftIcon;
}
public void setGiftIcon(String giftIcon) {
this.giftIcon = giftIcon;
}
public int getWeekStarLevel() {
return weekStarLevel;
}
public void setWeekStarLevel(int weekStarLevel) {
this.weekStarLevel = weekStarLevel;
}
public int getIlluminateNum() {
return illuminateNum;
}
public void setIlluminateNum(int illuminateNum) {
this.illuminateNum = illuminateNum;
}
public int getGiftHallType() {
return giftHallType;
}
public void setGiftHallType(int giftHallType) {
this.giftHallType = giftHallType;
}
public String getGiftNameEn() {
return giftNameEn;
}
public void setGiftNameEn(String giftNameEn) {
this.giftNameEn = giftNameEn;
}
public String getGiftHallStart() {
return giftHallStart;
}
public void setGiftHallStart(String giftHallStart) {
this.giftHallStart = giftHallStart;
}
public String getGiftHallEnd() {
return giftHallEnd;
}
public void setGiftHallEnd(String giftHallEnd) {
this.giftHallEnd = giftHallEnd;
}
public int getNamingLiveId() {
return namingLiveId;
}
public void setNamingLiveId(int namingLiveId) {
this.namingLiveId = namingLiveId;
}
public String getNamingLiveNicename() {
return namingLiveNicename;
}
public void setNamingLiveNicename(String namingLiveNicename) {
this.namingLiveNicename = namingLiveNicename;
}
public int getGiftHallSendNum() {
return giftHallSendNum;
}
public void setGiftHallSendNum(int giftHallSendNum) {
this.giftHallSendNum = giftHallSendNum;
}
public String getNamingLiveAvatar() {
return namingLiveAvatar;
}
public void setNamingLiveAvatar(String namingLiveAvatar) {
this.namingLiveAvatar = namingLiveAvatar;
}
public int getNamingLiveActiveRankHide() {
return namingLiveActiveRankHide;
}
public void setNamingLiveActiveRankHide(int namingLiveActiveRankHide) {
this.namingLiveActiveRankHide = namingLiveActiveRankHide;
}
public int getIlluminateStatus() {
return illuminateStatus;
}
public void setIlluminateStatus(int illuminateStatus) {
this.illuminateStatus = illuminateStatus;
}
public int getNamingUserId() {
return namingUserId;
}
public void setNamingUserId(int namingUserId) {
this.namingUserId = namingUserId;
}
public String getNamingUserNicename() {
return namingUserNicename;
}
public void setNamingUserNicename(String namingUserNicename) {
this.namingUserNicename = namingUserNicename;
}
public String getNamingUserAvatar() {
return namingUserAvatar;
}
public void setNamingUserAvatar(String namingUserAvatar) {
this.namingUserAvatar = namingUserAvatar;
}
public int getNamingUserActiveRankHide() {
return namingUserActiveRankHide;
}
public void setNamingUserActiveRankHide(int namingUserActiveRankHide) {
this.namingUserActiveRankHide = namingUserActiveRankHide;
}
public int getNeedCoinTotal() {
return needCoinTotal;
}
public void setNeedCoinTotal(int needCoinTotal) {
this.needCoinTotal = needCoinTotal;
}
}
}

View File

@@ -6,6 +6,11 @@ import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.BottomPopupView;
import com.yunbao.common.event.ClosePopupDialogEvent;
import com.yunbao.common.utils.Bus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
/**
* 底部弹窗
@@ -16,12 +21,20 @@ public abstract class AbsDialogPopupWindow extends BottomPopupView {
public AbsDialogPopupWindow(@NonNull Context context) {
super(context);
this.mContext = context;
Bus.getOn(this);
}
@Override
public void dismiss() {
super.dismiss();
Bus.getOff(this);
}
/**
* <a href="https://github.com/li-xiaojun/XPopup/wiki/5.-%E5%B8%B8%E7%94%A8%E8%AE%BE%E7%BD%AE">参考配置</a>
*/
public abstract void buildDialog(XPopup.Builder builder);
public abstract int bindLayoutId();
@Override
@@ -36,4 +49,16 @@ public abstract class AbsDialogPopupWindow extends BottomPopupView {
buildDialog(builder);
builder.asCustom(this).show();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onWishSendGift(ClosePopupDialogEvent bean) {
if(bean.getId()==null) {
dismiss();
return;
}
if(bean.getId().equals(getTag())) {
dismiss();
}
}
}

View File

@@ -29,6 +29,7 @@ import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* 礼物墙
@@ -46,9 +47,15 @@ public class GiftWallDialog extends AbsDialogPopupWindow {
private List<BaseFragment> fragments = new ArrayList<>();
private boolean isFullWindows;
String toUserId;
String userName;
boolean isAnchor;
public GiftWallDialog(@NonNull Context context) {
public GiftWallDialog(@NonNull Context context, String toUserId, String userName, boolean isAnchor) {
super(context);
this.toUserId = toUserId;
this.isAnchor = isAnchor;
this.userName = userName;
}
public GiftWallDialog setFullWindows(boolean fullWindows) {
@@ -86,8 +93,13 @@ public class GiftWallDialog extends AbsDialogPopupWindow {
mViewPager = findViewById(R.id.viewPager2);
mIvTabsLayout = findViewById(R.id.tab_layout);
fragments.add(new GiftWallMainTab1Fragment());
fragments.add(new GiftWallMainTab2Fragment());
mTvUserName.setText(String.format(Locale.getDefault(), "%s%s",
userName,
WordUtil.isNewZh() ? "的禮物展館" : "'s Gift Hall"
));
fragments.add(new GiftWallMainTab1Fragment().setToUserId(toUserId).setAnchor(isAnchor).setLiveRoom(!isFullWindows));
fragments.add(new GiftWallMainTab2Fragment().setToUserId(toUserId).setAnchor(isAnchor).setLiveRoom(!isFullWindows));
mViewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) mContext) {
@NonNull
@Override
@@ -101,6 +113,18 @@ public class GiftWallDialog extends AbsDialogPopupWindow {
}
});
mViewPager.setUserInputEnabled(false);
mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
fragments.get(position).updateData();
if(position==0){
mTvUserName.setTextColor(Color.parseColor("#6BCDFF"));
}else{
mTvUserName.setTextColor(Color.parseColor("#FFCF94"));
}
}
});
ViewClicksAntiShake.clicksAntiShake(mTvTab1, () -> {
@@ -113,7 +137,7 @@ public class GiftWallDialog extends AbsDialogPopupWindow {
mTvTab2.setTextColor(Color.parseColor("#FFFFFF"));
mTvTab2.setTextSize(14);
mTvTab2.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
mViewPager.setCurrentItem(0,false);
mViewPager.setCurrentItem(0, false);
});
ViewClicksAntiShake.clicksAntiShake(mTvTab2, () -> {
@@ -124,13 +148,13 @@ public class GiftWallDialog extends AbsDialogPopupWindow {
mTvTab1.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
mTvTab2.setTextColor(Color.parseColor("#FFC593"));
if(WordUtil.isNewZh()) {
if (WordUtil.isNewZh()) {
mTvTab2.setTextSize(16);
}else{
} else {
mTvTab2.setTextSize(14.5f);
}
mTvTab2.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
mViewPager.setCurrentItem(1,false);
mViewPager.setCurrentItem(1, false);
});
}
@@ -141,11 +165,11 @@ public class GiftWallDialog extends AbsDialogPopupWindow {
initView();
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mIvBack.getLayoutParams();
if (isFullWindows) {
params.width=DpUtil.dp2px(20);
params.width = DpUtil.dp2px(20);
mIvBack.setVisibility(View.VISIBLE);
mIvBg.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
params.width=DpUtil.dp2px(1);
params.width = DpUtil.dp2px(1);
mIvBack.setVisibility(View.INVISIBLE);
mIvBg.setScaleType(ImageView.ScaleType.FIT_XY);
}

View File

@@ -0,0 +1,392 @@
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.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
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.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;
GiftWallGiftInfoListItemAdapter adapter;
RecyclerView recyclerView;
String giftId;
String toUserId;
boolean isAnchor;
int gift_hall_type = 1;
int list_type = 1;
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);
adapter = new GiftWallGiftInfoListItemAdapter();
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));
}
btn_one.setVisibility(View.GONE);
btn_one_tips.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;
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());
}
});
}
void initData() {
if (isAnchor) {
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);
}
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);
gift_btn.setVisibility(View.GONE);
}
if (!isLiveRoom) {
gift_btn.setEnabled(false);
}
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().getGift_hall_send_num()));
String tmp = "";
if (giftBean.getGift_info().getIlluminate_status() == 0) {//未點亮
btn_one.setText(WordUtil.getNewString(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);
}
}

View File

@@ -0,0 +1,54 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.AttachPopupView;
import com.yunbao.common.R;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class GiftWallMainTab1List2SpinnerDialog extends AttachPopupView {
TextView all, up, down;
OnItemClickListener<Integer> listener;
public GiftWallMainTab1List2SpinnerDialog(@NonNull Context context, OnItemClickListener<Integer> listener) {
super(context);
this.listener = listener;
}
@Override
protected void onDismiss() {
super.onDismiss();
listener.onItemClick(-1, 0);
}
@Override
protected int getImplLayoutId() {
return R.layout.dialog_gift_wall_main_tab1_list2_spinner;
}
@Override
protected void onCreate() {
super.onCreate();
all = findViewById(R.id.spinner_all);
up = findViewById(R.id.spinner_up);
down = findViewById(R.id.spinner_down);
ViewClicksAntiShake.clicksAntiShake(all, () -> {
listener.onItemClick(0, 0);
dismiss();
});
ViewClicksAntiShake.clicksAntiShake(up, () -> {
listener.onItemClick(1, 0);
dismiss();
});
ViewClicksAntiShake.clicksAntiShake(down, () -> {
listener.onItemClick(2, 0);
dismiss();
});
}
}

View File

@@ -0,0 +1,48 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.AttachPopupView;
import com.yunbao.common.R;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class GiftWallMainTab1TipsDialog extends AttachPopupView {
TextView tips;
OnItemClickListener<Integer> listener;
String time;
public GiftWallMainTab1TipsDialog(@NonNull Context context, OnItemClickListener<Integer> listener) {
super(context);
this.listener = listener;
}
public GiftWallMainTab1TipsDialog setTime(String time) {
this.time = time;
return this;
}
@Override
protected void onDismiss() {
super.onDismiss();
listener.onItemClick(-1, 0);
}
@Override
protected int getImplLayoutId() {
return R.layout.dialog_gift_wall_main_tab1_tips;
}
@Override
protected void onCreate() {
super.onCreate();
tips = findViewById(R.id.tips);
tips.setText(time);
ViewClicksAntiShake.clicksAntiShake(tips, () -> {
listener.onItemClick(0, 0);
});
}
}

View File

@@ -0,0 +1,116 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.R;
import com.yunbao.common.bean.GiftWallTab2Bean;
import com.yunbao.common.fragment.BaseFragment;
import com.yunbao.common.fragment.GiftWallMainTab1Fragment;
import com.yunbao.common.fragment.GiftWallMainTab2Fragment;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ScreenDimenUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.CustomEllipsizeTextView;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class GiftWallMainTab2ClassicInfoDialog extends AbsDialogPopupWindow {
private ImageView mIvBg;
private ImageView mIvTips;
private ImageView mIvBack;
private CustomEllipsizeTextView mTvUserName;
private View mAchievement;
private TextView mTvTab1, mTvTab2;
private ViewPager2 mViewPager;
private LinearLayout mIvTabsLayout;
private List<BaseFragment> fragments = new ArrayList<>();
private boolean isFullWindows;
GiftWallTab2Bean.Gift gift;
String userName;
boolean isAnchor;
public GiftWallMainTab2ClassicInfoDialog(@NonNull Context context, GiftWallTab2Bean.Gift gift,boolean isAnchor) {
super(context);
this.gift = gift;
this.isAnchor = isAnchor;
}
public GiftWallMainTab2ClassicInfoDialog setFullWindows(boolean fullWindows) {
isFullWindows = fullWindows;
return this;
}
@Override
public void buildDialog(XPopup.Builder builder) {
}
@Override
public int bindLayoutId() {
return R.layout.dialog_gift_wall_tab2_classic_info;
}
@Override
protected int getPopupHeight() {
if (isFullWindows) {
return super.getPopupHeight();
}
int screenHeight = ScreenDimenUtil.getInstance().getScreenHeight();
return (int) (screenHeight * 0.8);
}
void initView() {
mIvBg = findViewById(R.id.iv_root_bg);
mIvTips = findViewById(R.id.v_tips);
mIvBack = findViewById(R.id.iv_back);
mTvUserName = findViewById(R.id.user_name);
mAchievement = findViewById(R.id.v_achievement);
mTvTab1 = findViewById(R.id.tab1);
mTvTab2 = findViewById(R.id.tab2);
mViewPager = findViewById(R.id.viewPager2);
mIvTabsLayout = findViewById(R.id.tab_layout);
mTvUserName.setText(String.format(Locale.getDefault(), "%s%s",
userName,
WordUtil.isNewZh() ? "的禮物展館" : "'s Gift Hall"
));
}
@Override
protected void onCreate() {
super.onCreate();
initView();
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(1);
mIvBack.setVisibility(View.INVISIBLE);
mIvBg.setScaleType(ImageView.ScaleType.FIT_XY);
}
mIvBack.setLayoutParams(params);
}
}

View File

@@ -0,0 +1,22 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class ClosePopupDialogEvent extends BaseModel {
public Object id=null;
public ClosePopupDialogEvent(Object id) {
this.id = id;
}
public Object getId() {
return id;
}
public void setId(Object id) {
this.id = id;
}
public ClosePopupDialogEvent() {
}
}

View File

@@ -1,20 +1,58 @@
package com.yunbao.common.fragment;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.XPopup;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.R;
import com.yunbao.common.adapter.GiftWallMainTab1List2Adapter;
import com.yunbao.common.bean.GiftWallBean;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.dialog.GiftWallMainTab1List2SpinnerDialog;
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.DpUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.Locale;
public class GiftWallMainTab1Fragment extends BaseFragment {
TextView classicGiftsTitle, starGiftsTitle;
TextView classicGiftsNumber, starGiftsNumber;
RecyclerView recyclerView1, recyclerView2;
View spinner;
TextView spinnerText;
ImageView spinnerImage;
GiftWallMainTab1List2Adapter list1Adapter, list2Adapter;
int screen;
String toUserId;
boolean isAnchor;
boolean isLiveRoom;
SVGAVideoEntity drawable;
View classic_layout, star_layout;
TextView show_time;
View show_time_layout;
@Override
public View createView(LayoutInflater inflater, ViewGroup container) {
TextView textView = new TextView(getActivity());
textView.setText("第一页");
textView.setTextColor(Color.WHITE);
textView.setTextSize(24);
return textView;
return inflater.inflate(R.layout.fragment_gift_wall_man_tab_1, container, false);
}
@Override
@@ -22,9 +60,172 @@ public class GiftWallMainTab1Fragment extends BaseFragment {
}
public GiftWallMainTab1Fragment setToUserId(String toUserId) {
this.toUserId = toUserId;
return this;
}
public GiftWallMainTab1Fragment setAnchor(boolean anchor) {
isAnchor = anchor;
return this;
}
public GiftWallMainTab1Fragment setLiveRoom(boolean liveRoom) {
isLiveRoom = liveRoom;
return this;
}
@Override
public void updateData() {
super.updateData();
list1Adapter.notifyDataSetChanged();
list2Adapter.notifyDataSetChanged();
}
private void initData() {
if (isAnchor) {
LiveNetManager.get(getContext())
.liveGiftHall(toUserId, screen, new HttpCallback<GiftWallBean>() {
@Override
public void onSuccess(GiftWallBean data) {
initData(data);
}
@Override
public void onError(String error) {
}
});
} else {
LiveNetManager.get(getContext())
.singleUserGiftHall(toUserId, screen, new HttpCallback<GiftWallBean>() {
@Override
public void onSuccess(GiftWallBean data) {
initData(data);
}
@Override
public void onError(String error) {
}
});
}
}
private void initData(GiftWallBean bean) {
list1Adapter.setDrawable(drawable);
list1Adapter.setList(bean.getIlluminate_data().getWeek_star_data());
list2Adapter.setList(bean.getIlluminate_data().getGift_data());
list1Adapter.setLiveRoom(isLiveRoom);
list2Adapter.setLiveRoom(isLiveRoom);
starGiftsNumber.setText(String.format(Locale.getDefault(), "%s%d/%d",
WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up),
bean.getIlluminate_data().getWeek_gift_illuminate_num(),
bean.getIlluminate_data().getWeek_star_gift_num()
));
classicGiftsNumber.setText(String.format(Locale.getDefault(), "%s%d/%d",
WordUtil.getNewString(R.string.dialog_gift_wall_list_spinner_up),
bean.getIlluminate_data().getGift_illuminate_num(),
bean.getIlluminate_data().getGift_num()
));
if (bean.getIlluminate_data().getWeek_star_data() != null) {
show_time.setText(String.format(Locale.getDefault(), "%s - %s",
bean.getIlluminate_data().getGift_hall_start_date(),
bean.getIlluminate_data().getGift_hall_end_date()));
}
}
@Override
protected void initViews(Bundle savedInstanceState, View contentView) {
classicGiftsTitle = contentView.findViewById(R.id.classic_gifts_title);
classicGiftsNumber = contentView.findViewById(R.id.classic_gifts_number);
recyclerView1 = contentView.findViewById(R.id.recyclerView1);
recyclerView2 = contentView.findViewById(R.id.recyclerView2);
starGiftsTitle = contentView.findViewById(R.id.star_gifts_title);
starGiftsNumber = contentView.findViewById(R.id.star_gifts_number);
spinner = contentView.findViewById(R.id.classic_gift_spinner);
spinnerText = contentView.findViewById(R.id.classic_gift_spinner_text);
spinnerImage = contentView.findViewById(R.id.classic_gift_spinner_ic);
classic_layout = contentView.findViewById(R.id.classic_layout);
star_layout = contentView.findViewById(R.id.star_layout);
show_time = contentView.findViewById(R.id.show_time);
show_time_layout = contentView.findViewById(R.id.show_time_layout);
list1Adapter = new GiftWallMainTab1List2Adapter(getContext());
list2Adapter = new GiftWallMainTab1List2Adapter(getContext());
list1Adapter.setToUid(toUserId);
list2Adapter.setToUid(toUserId);
list1Adapter.setAnchor(isAnchor);
list2Adapter.setAnchor(isAnchor);
list1Adapter.setStar(true);
recyclerView1.setAdapter(list1Adapter);
recyclerView2.setAdapter(list2Adapter);
recyclerView1.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(10), 1));
recyclerView2.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(2), 1));
starGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(),
Color.parseColor("#FEE8C6"), Color.parseColor("#FFD5A3"), Shader.TileMode.CLAMP));
classicGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(),
Color.parseColor("#A0E9FF"), Color.parseColor("#72D1FF"), Shader.TileMode.CLAMP));
XPopup.Builder builder = new XPopup.Builder(getContext())
.atView(spinner);
spinner.setTag(builder);
if (!isAnchor) {
show_time_layout.setVisibility(View.GONE);
star_layout.setVisibility(View.GONE);
}
if (!isLiveRoom) {
}
ViewClicksAntiShake.clicksAntiShake(spinner, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
spinnerImage.setRotation(180);
((XPopup.Builder) spinner.getTag()).asCustom(new GiftWallMainTab1List2SpinnerDialog(getContext(), new OnItemClickListener<Integer>() {
@Override
public void onItemClick(Integer bean, int position) {
if (bean > -1) {
screen = bean;
initData();
}
switch (bean) {
case 0:
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_all);
break;
case 1:
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_up);
break;
case 2:
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_down);
break;
}
spinnerImage.setRotation(0);
}
})).show();
}
});
new SVGAParser(getContext()).decodeFromAssets("gift_wall_light_up.svga", new SVGAParser.ParseCompletion() {
@Override
public void onComplete(@NonNull SVGAVideoEntity videoItem) {
GiftWallMainTab1Fragment.this.drawable = videoItem;
initData();
}
@Override
public void onError() {
System.err.println("-------------SVGA报错了");
}
}, null);
}
@Override

View File

@@ -1,20 +1,75 @@
package com.yunbao.common.fragment;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Shader;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.angcyo.tablayout.DslTabLayout;
import com.angcyo.tablayout.DslTabLayoutConfig;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.R;
import com.yunbao.common.adapter.GiftWallMainTab2ListAdapter;
import com.yunbao.common.bean.GiftWallTab2Bean;
import com.yunbao.common.custom.ItemDecoration;
import com.yunbao.common.dialog.GiftWallMainTab1List2SpinnerDialog;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function4;
public class GiftWallMainTab2Fragment extends BaseFragment {
TextView classicGiftsTitle, starGiftsTitle;
RecyclerView recyclerView1, recyclerView2;
View spinner;
TextView spinnerText;
ImageView spinnerImage;
GiftWallMainTab2ListAdapter list1Adapter, list2Adapter;
TextView show_time;
DslTabLayout tabLayout;
TextView dslTab1, dslTab2;
int screen;
int type = 1;
String toUserId;
boolean isAnchor;
private boolean isLiveRoom;
public GiftWallMainTab2Fragment setToUserId(String toUserId) {
this.toUserId = toUserId;
return this;
}
public GiftWallMainTab2Fragment setAnchor(boolean anchor) {
isAnchor = anchor;
return this;
}
public GiftWallMainTab2Fragment setLiveRoom(boolean liveRoom) {
isLiveRoom = liveRoom;
return this;
}
@Override
public View createView(LayoutInflater inflater, ViewGroup container) {
TextView textView = new TextView(getActivity());
textView.setText("第二页");
textView.setTextColor(Color.WHITE);
textView.setTextSize(24);
return textView;
return inflater.inflate(R.layout.fragment_gift_wall_man_tab_2, container, false);
}
@Override
@@ -24,7 +79,156 @@ public class GiftWallMainTab2Fragment extends BaseFragment {
@Override
protected void initViews(Bundle savedInstanceState, View contentView) {
classicGiftsTitle = contentView.findViewById(R.id.classic_gifts_title);
recyclerView1 = contentView.findViewById(R.id.recyclerView1);
recyclerView2 = contentView.findViewById(R.id.recyclerView2);
starGiftsTitle = contentView.findViewById(R.id.star_gifts_title);
spinner = contentView.findViewById(R.id.classic_gift_spinner);
spinnerText = contentView.findViewById(R.id.classic_gift_spinner_text);
spinnerImage = contentView.findViewById(R.id.classic_gift_spinner_ic);
show_time = contentView.findViewById(R.id.show_time);
tabLayout = findViewById(R.id.tab_layout);
dslTab1 = findViewById(R.id.dsl_tab1);
dslTab2 = findViewById(R.id.dsl_tab2);
list1Adapter = new GiftWallMainTab2ListAdapter(getContext());
list2Adapter = new GiftWallMainTab2ListAdapter(getContext());
list1Adapter.setToUid(toUserId);
list2Adapter.setToUid(toUserId);
list1Adapter.setAnchor(isAnchor);
list2Adapter.setAnchor(isAnchor);
list1Adapter.setStar(true);
recyclerView1.setAdapter(list1Adapter);
recyclerView2.setAdapter(list2Adapter);
recyclerView1.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(2), 1));
recyclerView2.addItemDecoration(new ItemDecoration(getContext(), 0x00000000, DpUtil.dp2px(2), 1));
starGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(),
Color.parseColor("#FEE8C6"), Color.parseColor("#FFD5A3"), Shader.TileMode.CLAMP));
classicGiftsTitle.getPaint().setShader(new LinearGradient(0, 0, 0, classicGiftsTitle.getPaint().getTextSize(),
Color.parseColor("#A0E9FF"), Color.parseColor("#72D1FF"), Shader.TileMode.CLAMP));
setDslTabColor(dslTab1, dslTab2);
tabLayout.configTabLayoutConfig(new Function1<DslTabLayoutConfig, Unit>() {
@Override
public Unit invoke(DslTabLayoutConfig dslTabLayoutConfig) {
dslTabLayoutConfig.setOnSelectItemView(new Function4<View, Integer, Boolean, Boolean, Boolean>() {
@Override
public Boolean invoke(View itemView, Integer index, Boolean select, Boolean fromUser) {
//当需要选中itemView时, 触发的回调.
//返回true, 拦截库中的默认处理.
setDslTabColor(index == 1 ? dslTab1 : dslTab2, index == 0 ? dslTab1 : dslTab2);
type = (index + 1);
screen=0;
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_all);
initData();
return false;
}
});
dslTabLayoutConfig.setOnSelectViewChange(new Function4<View, List<? extends View>, Boolean, Boolean, Unit>() {
@Override
public Unit invoke(View fromView, List<? extends View> selectViewList, Boolean select, Boolean fromUser) {
//fromView 表示之前选中的view, 多选模式不支持.
//selectViewList 表示目前选中view的集合, 单选模式列表里面只有一个,可以使用selectViewList.get(0)获取.
return null;
}
});
dslTabLayoutConfig.setOnSelectIndexChange(new Function4<Integer, List<Integer>, Boolean, Boolean, Unit>() {
@Override
public Unit invoke(Integer fromIndex, List<Integer> selectIndexList, Boolean select, Boolean fromUser) {
//参考setOnSelectViewChange
//只不过对象从view,变成了view在ViewGroup中的索引
return null;
}
});
return null;
}
});
XPopup.Builder builder = new XPopup.Builder(getContext())
.atView(spinner);
spinner.setTag(builder);
ViewClicksAntiShake.clicksAntiShake(spinner, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
spinnerImage.setRotation(180);
((XPopup.Builder) spinner.getTag()).asCustom(new GiftWallMainTab1List2SpinnerDialog(getContext(), new OnItemClickListener<Integer>() {
@Override
public void onItemClick(Integer bean, int position) {
if (bean > -1) {
screen = bean;
initData();
}
switch (bean) {
case 0:
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_all);
break;
case 1:
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_up);
break;
case 2:
spinnerText.setText(R.string.dialog_gift_wall_list_spinner_down);
break;
}
spinnerImage.setRotation(0);
}
})).show();
}
});
initData();
}
void setDslTabColor(TextView select, TextView unSelect) {
select.getPaint().setShader(new LinearGradient(0, 0, 0, select.getPaint().getTextSize(),
Color.parseColor("#FEE0B6"), Color.parseColor("#FFCF95"), Shader.TileMode.CLAMP));
unSelect.setTextColor(Color.parseColor("#FFEED8"));
unSelect.getPaint().setShader(null);
}
void initData() {
LiveNetManager.get(getContext())
.allGiftHall(String.valueOf(type), new HttpCallback<GiftWallTab2Bean>() {
@Override
public void onSuccess(GiftWallTab2Bean data) {
if (screen != 0) {
filtrationData(data);
}
initData(data);
}
@Override
public void onError(String error) {
}
});
}
void filtrationData(GiftWallTab2Bean bean) {
Iterator<GiftWallTab2Bean.Gift> iterator = bean.getIlluminateData().getGiftData().iterator();
while (iterator.hasNext()){
GiftWallTab2Bean.Gift next = iterator.next();
if (screen == 1 && next.getIlluminateStatus() != 1) {//已点亮
iterator.remove();
} else if (screen == 2 && next.getIlluminateStatus() == 1) {//未点亮
iterator.remove();
}
}
}
void initData(GiftWallTab2Bean bean) {
list1Adapter.setList(bean.getIlluminateData().getWeekStartData());
list2Adapter.setList(bean.getIlluminateData().getGiftData());
show_time.setText(String.format(Locale.getDefault(), "%s - %s",
bean.getGift_hall_start_date(),
bean.getGift_hall_end_date()));
}
@Override

View File

@@ -26,8 +26,11 @@ import com.yunbao.common.bean.FansGroupGiftPackInfo;
import com.yunbao.common.bean.GiftAlreadyWallModel;
import com.yunbao.common.bean.GiftGuideModel;
import com.yunbao.common.bean.GiftNamingInfoModel;
import com.yunbao.common.bean.GiftWallBean;
import com.yunbao.common.bean.GiftWallGiftDetail;
import com.yunbao.common.bean.GiftWallInfoBean;
import com.yunbao.common.bean.GiftWallModel;
import com.yunbao.common.bean.GiftWallTab2Bean;
import com.yunbao.common.bean.GuardGetGuardOpenInfoModel;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.bean.HourRank;
@@ -53,7 +56,6 @@ import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankGiftResultBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.PrankProgressBean;
@@ -1266,4 +1268,50 @@ public interface PDLiveApi {
Observable<ResponseModel<QiniuLog>> getPrankList(
@Query("type")String type
);
/**
* 个人展馆
*/
@GET("/api/public/?service=Gift.singleUserGiftHall")
Observable<ResponseModel<GiftWallBean>> singleUserGiftHall(
@Query("user_id")String userId,
@Query("screen")int screen
);
/**
* 主播展馆
*/
@GET("/api/public/?service=Gift.liveGiftHall")
Observable<ResponseModel<GiftWallBean>> liveGiftHall(
@Query("live_id")String userId,
@Query("screen")int screen
);
/**
* 个人展馆详情
*/
@GET("/api/public/?service=Gift.singleUserGiftHallDetail")
Observable<ResponseModel<GiftWallInfoBean>> singleUserGiftHallDetail(
@Query("user_id")String userId,
@Query("gift_id")String gift_id
);
/**
* 主播展馆详情
*/
@GET("/api/public/?service=Gift.liveGiftHallDetail")
Observable<ResponseModel<GiftWallInfoBean>> liveGiftHallDetail(
@Query("live_id")String live_id,
@Query("gift_id")String gift_id,
@Query("gift_hall_type")int gift_hall_type,
@Query("list_type")int list_type
);
/**
* 全站展馆
*/
@GET("/api/public/?service=Gift.allGiftHall")
Observable<ResponseModel<GiftWallTab2Bean>> allGiftHall(
@Query("type")String type
);
}

View File

@@ -29,8 +29,11 @@ import com.yunbao.common.bean.FansGroupGiftPackInfo;
import com.yunbao.common.bean.GiftAlreadyWallModel;
import com.yunbao.common.bean.GiftGuideModel;
import com.yunbao.common.bean.GiftNamingInfoModel;
import com.yunbao.common.bean.GiftWallBean;
import com.yunbao.common.bean.GiftWallGiftDetail;
import com.yunbao.common.bean.GiftWallInfoBean;
import com.yunbao.common.bean.GiftWallModel;
import com.yunbao.common.bean.GiftWallTab2Bean;
import com.yunbao.common.bean.GuardGetGuardOpenInfoModel;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.bean.HttpCallbackModel;
@@ -53,7 +56,6 @@ import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankGiftResultBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.PrankProgressBean;
@@ -99,7 +101,6 @@ import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Query;
/**
@@ -3262,6 +3263,106 @@ public class LiveNetManager {
}
}).isDisposed();
}
public void singleUserGiftHall(String userId,int screen, HttpCallback<GiftWallBean>callback) {
API.get().pdLiveApi(mContext)
.singleUserGiftHall(userId,screen)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void liveGiftHall(String userId,int screen, HttpCallback<GiftWallBean>callback) {
API.get().pdLiveApi(mContext)
.liveGiftHall(userId,screen)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void singleUserGiftHallDetail(String userId,String giftId, HttpCallback<GiftWallInfoBean>callback) {
API.get().pdLiveApi(mContext)
.singleUserGiftHallDetail(userId,giftId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void liveGiftHallDetail(String liveId,String giftId,int gift_hall_type,int list_type, HttpCallback<GiftWallInfoBean>callback) {
API.get().pdLiveApi(mContext)
.liveGiftHallDetail(liveId,giftId,gift_hall_type,list_type)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void allGiftHall(String type, HttpCallback<GiftWallTab2Bean>callback) {
API.get().pdLiveApi(mContext)
.allGiftHall(type)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void updateFile(File file, HttpCallback<AvatarBean> callback) {

View File

@@ -13,13 +13,14 @@ import java.util.List;
public class SVGAViewUtils {
private final static List<SVGAImageView> SVGA_CACHE = new ArrayList<>();
public static void playEndClear(SVGAImageView svga, boolean isClear, SVGACallback callback) {
public static void playEndClear(SVGAImageView svga, boolean isClear,int loop, SVGACallback callback) {
if (!isClear) {
if (!SVGA_CACHE.contains(svga)) {
SVGA_CACHE.add(svga);
}
}
CrashSaveBean.getInstance().addPlaySvga();
svga.setLoops(loop);
svga.setCallback(new SVGACallback() {
@Override
public void onPause() {
@@ -72,9 +73,11 @@ public class SVGAViewUtils {
}
SVGA_CACHE.clear();
}
public static void playEndClear(SVGAImageView svga, boolean isClear, SVGACallback callback) {
playEndClear(svga, isClear,1, null);
}
public static void playEndClear(SVGAImageView svga, boolean isClear) {
playEndClear(svga, isClear, null);
playEndClear(svga, isClear,null);
}
public static void playEndClear(SVGAImageView svga) {