Merge branch 'dev_6.6.6_开通守护'

This commit is contained in:
18401019693 2024-03-27 09:44:56 +08:00
commit a61bc8fbb8
177 changed files with 7771 additions and 167 deletions

View File

@ -221,5 +221,10 @@ dependencies {
//samsung插件包
api project(':IAP6Helper')
//
api 'com.github.FlyJingFish:GradientTextView:1.2.4'
//
api 'com.github.xiaohaibin:XBanner:androidx_v1.2.6'
}

View File

@ -0,0 +1,93 @@
package com.yunbao.common.adapter;
import android.os.CountDownTimer;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.sendMoneyLongListModel;
import com.yunbao.common.views.DragonSendMoneyListViewHolder;
import java.util.ArrayList;
import java.util.List;
public class DragonSendMoneyListAdapter extends RecyclerView.Adapter {
RecyclerView send_money_list;
boolean isAnchor;
SparseArray<CountDownTimer> countDownMap;
boolean isAttention;
public DragonSendMoneyListAdapter setAnchor(boolean anchor) {
isAnchor = anchor;
return this;
}
public DragonSendMoneyListAdapter setAttention(boolean attention) {
isAttention = attention;
return this;
}
public List<sendMoneyLongListModel> getMoneyLongListModels() {
return moneyLongListModels;
}
public DragonSendMoneyListAdapter(RecyclerView send_money_list) {
this.send_money_list = send_money_list;
countDownMap = new SparseArray<>();
}
List<sendMoneyLongListModel> moneyLongListModels = new ArrayList<>();
DragonSendMoneyListViewHolder.DragonSendMoneyListClicksCallBack callBack;
public void setCallBack(DragonSendMoneyListViewHolder.DragonSendMoneyListClicksCallBack callBack) {
this.callBack = callBack;
}
public void setMoneyLongListModels(List<sendMoneyLongListModel> models) {
moneyLongListModels.clear();
moneyLongListModels.addAll(models);
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View goodGiftsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_dragon_send_money_list, parent, false);
return new DragonSendMoneyListViewHolder(goodGiftsView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
DragonSendMoneyListViewHolder sendMoneyListViewHolder = (DragonSendMoneyListViewHolder) holder;
// sendMoneyLongListModel model = moneyLongListModels.get(position);
// long mPkTimeCount2 = Long.parseLong(model.getCountdown());
// long time = mPkTimeCount2 * 1000;
// if (sendMoneyListViewHolder.countDownTimer != null) {
// sendMoneyListViewHolder.countDownTimer.cancel();
// }
// if (time > 0) {
//
// }
sendMoneyListViewHolder.setData(moneyLongListModels.get(position), callBack, isAnchor,isAttention);
}
@Override
public int getItemCount() {
return moneyLongListModels.size();
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
}

View File

@ -0,0 +1,46 @@
package com.yunbao.common.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.views.LiveBuyGuardPrivilegeViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveBuyGuardPrivilegeAdapter extends RecyclerView.Adapter {
List<String> guardPrivilege = new ArrayList<>();
public void setGuardPrivilege(List<String> privilege) {
guardPrivilege.clear();
guardPrivilege.addAll(privilege);
notifyDataSetChanged();
}
public LiveBuyGuardPrivilegeAdapter(List<String> guardPrivilege) {
this.guardPrivilege = guardPrivilege;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_buy_guard_privilege_item, parent, false);
return new LiveBuyGuardPrivilegeViewHolder(herdView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
LiveBuyGuardPrivilegeViewHolder buyGuardSelectViewHolder = (LiveBuyGuardPrivilegeViewHolder) holder;
buyGuardSelectViewHolder.setData(guardPrivilege.get(position));
}
@Override
public int getItemCount() {
return guardPrivilege.size();
}
}

View File

@ -0,0 +1,50 @@
package com.yunbao.common.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.GuardPriceModel;
import com.yunbao.common.views.LiveBuyGuardSelectViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveBuyGuardSelectAdapter extends RecyclerView.Adapter {
List<GuardPriceModel> price = new ArrayList<>();
GuardPriceModel model;
public LiveBuyGuardSelectAdapter(List<GuardPriceModel> price, GuardPriceModel mModel) {
this.price = price;
model = mModel;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_live_buy_guard_slelect_item, parent, false);
return new LiveBuyGuardSelectViewHolder(herdView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
LiveBuyGuardSelectViewHolder buyGuardSelectViewHolder = (LiveBuyGuardSelectViewHolder) holder;
buyGuardSelectViewHolder.setData(price.get(position), liveBuyGuardSelectClickListener,model);
}
@Override
public int getItemCount() {
return price.size();
}
private LiveBuyGuardSelectViewHolder.LiveBuyGuardSelectClickListener liveBuyGuardSelectClickListener;
public LiveBuyGuardSelectAdapter setLiveBuyGuardSelectClickListener(LiveBuyGuardSelectViewHolder.LiveBuyGuardSelectClickListener liveBuyGuardSelectClickListener) {
this.liveBuyGuardSelectClickListener = liveBuyGuardSelectClickListener;
return this;
}
}

View File

@ -45,7 +45,6 @@ public class SudTitleSelectAdapter extends RecyclerView.Adapter {
}
}
});
}
@Override

View File

@ -0,0 +1,48 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class CheckUpgradesModel extends BaseModel {
/**
* {
* "level": 33, // 等级
* "rewards": [ // 奖励信息
* {
* "id": 1,
* "reward_name": "星之守護等級牌", // 奖励名称
* "image_path": "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png" // 图片链接
* },
* {
* "id": 2,
* "reward_name": "人氣票",
* "image_path": "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png"
* }
* ]
* }
* }
*/
@SerializedName("level")
private String level;
@SerializedName("rewards")
private List<RewardsModel> rewards;
public String getLevel() {
return level;
}
public CheckUpgradesModel setLevel(String level) {
this.level = level;
return this;
}
public List<RewardsModel> getRewards() {
return rewards;
}
public CheckUpgradesModel setRewards(List<RewardsModel> rewards) {
this.rewards = rewards;
return this;
}
}

View File

@ -43,6 +43,17 @@ public class EnterRoomNewModel extends BaseModel {
private int quickGiftRemainingQuantity;//剩余的小PD礼物数量
@SerializedName("if_viewing_duration_complete")
private int ifViewingDurationComplete;//通过观看时间获取小PD礼物的次数
@SerializedName("sendMoneyLongStatus")
private SendMoneyLongStatusModel model;
public SendMoneyLongStatusModel getModel() {
return model;
}
public EnterRoomNewModel setModel(SendMoneyLongStatusModel model) {
this.model = model;
return this;
}
public int getQuickGiftRemainingQuantity() {
return quickGiftRemainingQuantity;

View File

@ -0,0 +1,142 @@
package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GuardDataTipModel extends BaseModel {
/**
* {
* "guard_name": "星之守護", // 守护名称
* "guard_type": 1, // 守护类型
* "close_img": "https://ceshi.yaoulive.com/data/upload/20240304/guard_xing_close.png", // 未开通图标
* "open_img": "https://ceshi.yaoulive.com/data/upload/20240304/guard_xing_open.png", // 已开通图标
* "is_open": true, // 是否开通 .true .false
* "price": { // 价格
* {
* "opening_time": "1個月", // 开通时长
* "original_price": "188000", // 原价
* "discount_price": "", // 折扣价
* "discount": "", // 折扣
* "price_key": 1
* },
* {
* "opening_time": "3個月",
* "original_price": "564000",
* "discount_price": "398000",
* "discount": "7.1折",
* "price_key": 3
* },
* {
* "opening_time": "6個月",
* "original_price": "1128000",
* "discount_price": "738000",
* "discount": "6.5折",
* "price_key": 6
* },
* {
* "opening_time": "12個月",
* "original_price": "2256000",
* "discount_price": "1314000",
* "discount": "5.8折",
* "price_key": 12
* }
* ],
* "guard_privilege": [
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_2.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_3.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_2.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_3.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_1.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_2.png",
* "https://ceshi.yaoulive.com/data/upload/20240304/tequan_3.png"
* ]
* }
*/
@SerializedName("guard_name")
private String guardName;
@SerializedName("guard_type")
private int guardType;
@SerializedName("close_img")
private String closeImg;
@SerializedName("open_img")
private String openImg;
@SerializedName("is_open")
private String isOpen;
@SerializedName("price")
private List<GuardPriceModel> price;
@SerializedName("guard_privilege")
private List<String> guardPrivilege;
public String getGuardName() {
return guardName;
}
public GuardDataTipModel setGuardName(String guardName) {
this.guardName = guardName;
return this;
}
public int getGuardType() {
return guardType;
}
public GuardDataTipModel setGuardType(int guardType) {
this.guardType = guardType;
return this;
}
public String getCloseImg() {
return closeImg;
}
public GuardDataTipModel setCloseImg(String closeImg) {
this.closeImg = closeImg;
return this;
}
public String getOpenImg() {
return openImg;
}
public GuardDataTipModel setOpenImg(String openImg) {
this.openImg = openImg;
return this;
}
public boolean isOpen() {
return TextUtils.equals(isOpen, "1");
}
public String getIsOpen() {
return isOpen;
}
public GuardDataTipModel setIsOpen(String isOpen) {
this.isOpen = isOpen;
return this;
}
public List<GuardPriceModel> getPrice() {
return price;
}
public GuardDataTipModel setPrice(List<GuardPriceModel> price) {
this.price = price;
return this;
}
public List<String> getGuardPrivilege() {
return guardPrivilege;
}
public GuardDataTipModel setGuardPrivilege(List<String> guardPrivilege) {
this.guardPrivilege = guardPrivilege;
return this;
}
}

View File

@ -0,0 +1,31 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class GuardGetGuardOpenInfoModel extends BaseModel {
@SerializedName("user_info")
private GuardUserInfoModel userInfo;
@SerializedName("guard_data")
private List<GuardDataTipModel> guardData;
public GuardUserInfoModel getUserInfo() {
return userInfo;
}
public GuardGetGuardOpenInfoModel setUserInfo(GuardUserInfoModel userInfo) {
this.userInfo = userInfo;
return this;
}
public List<GuardDataTipModel> getGuardData() {
return guardData;
}
public GuardGetGuardOpenInfoModel setGuardData(List<GuardDataTipModel> guardData) {
this.guardData = guardData;
return this;
}
}

View File

@ -0,0 +1,131 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardGetGuardUserInfoModel extends BaseModel {
/**
* "info": {
* "uid": "98923", // 用户ID
* "user_avatar": "https://downs.yaoulive.com/20230706/0572c0f694601f4d2695cd210effbe93.jpeg?imageView2/2/w/600/h/600", // 用户头像链接
* "liveuid": "98889", // 主播ID
* "live_avatar": "https://ceshi.yaoulive.com/data/upload/20230522/20230526102906.png", // 主播头像链接
* "guard_type": 0, // 守护类型 0.未开通 1.星之守护 2.王之守护 3.神之守护
* "exp": 0, // 守护经验值
* "level": 0, // 守护等级
* "endtime": 0, // 到期时间
* "user_language": "chinese",
* "live_language": "chinese"
* }
* }
*/
@SerializedName("uid")
private String uid;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("live_avatar")
private String liveAvatar;
@SerializedName("guard_type")
private int guardType;
@SerializedName("exp")
private String exp;
@SerializedName("level")
private int level;
@SerializedName("endtime")
private long endtime;
@SerializedName("user_language")
private String userLanguage;
@SerializedName("live_language")
private String liveLanguage;
public String getUid() {
return uid;
}
public GuardGetGuardUserInfoModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public GuardGetGuardUserInfoModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getLiveuid() {
return liveuid;
}
public GuardGetGuardUserInfoModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getLiveAvatar() {
return liveAvatar;
}
public GuardGetGuardUserInfoModel setLiveAvatar(String liveAvatar) {
this.liveAvatar = liveAvatar;
return this;
}
public int getGuardType() {
return guardType;
}
public GuardGetGuardUserInfoModel setGuardType(int guardType) {
this.guardType = guardType;
return this;
}
public String getExp() {
return exp;
}
public GuardGetGuardUserInfoModel setExp(String exp) {
this.exp = exp;
return this;
}
public int getLevel() {
return level;
}
public GuardGetGuardUserInfoModel setLevel(int level) {
this.level = level;
return this;
}
public long getEndtime() {
return endtime;
}
public GuardGetGuardUserInfoModel setEndtime(long endtime) {
this.endtime = endtime;
return this;
}
public String getUserLanguage() {
return userLanguage;
}
public GuardGetGuardUserInfoModel setUserLanguage(String userLanguage) {
this.userLanguage = userLanguage;
return this;
}
public String getLiveLanguage() {
return liveLanguage;
}
public GuardGetGuardUserInfoModel setLiveLanguage(String liveLanguage) {
this.liveLanguage = liveLanguage;
return this;
}
}

View File

@ -0,0 +1,145 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardMaturityDateRemindModel extends BaseModel{
@SerializedName("_method_")
private String method;
@SerializedName("action")
private String action;
@SerializedName("is_overdue")
private int isOverdue;
@SerializedName("days")
private int days;
@SerializedName("uid")
private String uid;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("live_avatar")
private String liveAvatar;
@SerializedName("live_nicename")
private String liveNicename;
@SerializedName("ct")
private String ct;
@SerializedName("guard_type")
private String guardType;
public String getGuardType() {
return guardType;
}
public GuardMaturityDateRemindModel setGuardType(String guardType) {
this.guardType = guardType;
return this;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public int getIsOverdue() {
return isOverdue;
}
public void setIsOverdue(int isOverdue) {
this.isOverdue = isOverdue;
}
public int getDays() {
return days;
}
public void setDays(int days) {
this.days = days;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getLiveuid() {
return liveuid;
}
public void setLiveuid(String liveuid) {
this.liveuid = liveuid;
}
public String getUserAvatar() {
return userAvatar;
}
public void setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
}
public String getUserNicename() {
return userNicename;
}
public void setUserNicename(String userNicename) {
this.userNicename = userNicename;
}
public String getLiveAvatar() {
return liveAvatar;
}
public void setLiveAvatar(String liveAvatar) {
this.liveAvatar = liveAvatar;
}
public String getLiveNicename() {
return liveNicename;
}
public void setLiveNicename(String liveNicename) {
this.liveNicename = liveNicename;
}
public String getCt() {
return ct;
}
public void setCt(String ct) {
this.ct = ct;
}
@Override
public String toString() {
return "GuardMaturityDateRemindModel{" +
"method='" + method + '\'' +
", action='" + action + '\'' +
", isOverdue=" + isOverdue +
", days=" + days +
", uid='" + uid + '\'' +
", liveuid='" + liveuid + '\'' +
", userAvatar='" + userAvatar + '\'' +
", userNicename='" + userNicename + '\'' +
", liveAvatar='" + liveAvatar + '\'' +
", liveNicename='" + liveNicename + '\'' +
", ct='" + ct + '\'' +
'}';
}
}

View File

@ -0,0 +1,70 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardPriceModel extends BaseModel {
/**
* {
* "opening_time": "1個月", // 开通时长
* "original_price": "188000", // 原价
* "discount_price": "", // 折扣价
* "discount": "", // 折扣
* "price_key": 1
* }
*/
@SerializedName("opening_time")
private String openingTime;
@SerializedName("original_price")
private String originalPrice;
@SerializedName("discount_price")
private String discountPrice;
@SerializedName("discount")
private String discount;
@SerializedName("price_key")
private int priceKey;
public String getOpeningTime() {
return openingTime;
}
public GuardPriceModel setOpeningTime(String openingTime) {
this.openingTime = openingTime;
return this;
}
public String getOriginalPrice() {
return originalPrice;
}
public GuardPriceModel setOriginalPrice(String originalPrice) {
this.originalPrice = originalPrice;
return this;
}
public String getDiscountPrice() {
return discountPrice;
}
public GuardPriceModel setDiscountPrice(String discountPrice) {
this.discountPrice = discountPrice;
return this;
}
public String getDiscount() {
return discount;
}
public GuardPriceModel setDiscount(String discount) {
this.discount = discount;
return this;
}
public int getPriceKey() {
return priceKey;
}
public GuardPriceModel setPriceKey(int priceKey) {
this.priceKey = priceKey;
return this;
}
}

View File

@ -0,0 +1,131 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class GuardUserInfoModel extends BaseModel {
/**
* {
* "user_info": { // 用户开通信息
* "uid": "98888", // 用户ID
* "user_avatar": "https://downs.yaoulive.com/mannine.png", // 用户头像链接
* "liveuid": "98889", // 主播ID
* "live_avatar": "https://ceshi.yaoulive.com/data/upload/20230522/20230526102906.png", // 主播头像链接
* "guard_type": 1, // 守护类型
* "exp": 0, // 经验值
* "level": 1, // 等级
* "endtime": 1710145929, // 到期时间
* "user_language": "chinese", // 用户语言
* "live_language": "chinese" // 主播语言
* }
*/
@SerializedName("uid")
private String uid;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("live_avatar")
private String liveAvatar;
@SerializedName("guard_type")
private String guardType;
@SerializedName("exp")
private String exp;
@SerializedName("level")
private String level;
@SerializedName("endtime")
private String endtime;
@SerializedName("user_language")
private String userLanguage;
@SerializedName("live_language")
private String liveLanguage;
public String getUid() {
return uid;
}
public GuardUserInfoModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public GuardUserInfoModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getLiveuid() {
return liveuid;
}
public GuardUserInfoModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getLiveAvatar() {
return liveAvatar;
}
public GuardUserInfoModel setLiveAvatar(String liveAvatar) {
this.liveAvatar = liveAvatar;
return this;
}
public String getGuardType() {
return guardType;
}
public GuardUserInfoModel setGuardType(String guardType) {
this.guardType = guardType;
return this;
}
public String getExp() {
return exp;
}
public GuardUserInfoModel setExp(String exp) {
this.exp = exp;
return this;
}
public String getLevel() {
return level;
}
public GuardUserInfoModel setLevel(String level) {
this.level = level;
return this;
}
public String getEndtime() {
return endtime;
}
public GuardUserInfoModel setEndtime(String endtime) {
this.endtime = endtime;
return this;
}
public String getUserLanguage() {
return userLanguage;
}
public GuardUserInfoModel setUserLanguage(String userLanguage) {
this.userLanguage = userLanguage;
return this;
}
public String getLiveLanguage() {
return liveLanguage;
}
public GuardUserInfoModel setLiveLanguage(String liveLanguage) {
this.liveLanguage = liveLanguage;
return this;
}
}

View File

@ -56,6 +56,18 @@ public class LiveBean implements Parcelable {
private int redPacketStatus;
@SerializedName("giftId")
private String giftId;
@SerializedName("sendMoneyLongStatus ")
private int sendMoneyLongStatus ;
public int getSendMoneyLongStatus() {
return sendMoneyLongStatus;
}
public LiveBean setSendMoneyLongStatus(int sendMoneyLongStatus) {
this.sendMoneyLongStatus = sendMoneyLongStatus;
return this;
}
private Map<String,String> params;//用于跳转Activity时扩展参数从首页Banner跳转到直播间时需要根据携带参数判断是否弹出新人特惠对话框
public String getRecommendCardIconSizeTwo() {

View File

@ -0,0 +1,39 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class RewardsModel extends BaseModel {
@SerializedName("id")
private int id;
@SerializedName("reward_name")
private String rewardName;
@SerializedName("image_path")
private String imagePath;
public int getId() {
return id;
}
public RewardsModel setId(int id) {
this.id = id;
return this;
}
public String getRewardName() {
return rewardName;
}
public RewardsModel setRewardName(String rewardName) {
this.rewardName = rewardName;
return this;
}
public String getImagePath() {
return imagePath;
}
public RewardsModel setImagePath(String imagePath) {
this.imagePath = imagePath;
return this;
}
}

View File

@ -0,0 +1,137 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class SendMoneyLongModel extends BaseModel {
/**
* {
* "_method_": "SendMoneyLong",
* "action": "0",
* "uid": "98888",
* "user_nicename": "周末暴打小朋友",
* "user_avatar": "https://downs.yaoulive.com/mannine.png",
* "liveuid": "98889",
* "add_time": 1710318757,
* "gold_num": "5000"
* "countdown": 300 // 倒计时
* "send_money_long_key": "1710384258446",
* }
*/
@SerializedName("_method_")
private String method;
@SerializedName("action")
private String action;
@SerializedName("uid")
private String uid;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("liveuid")
private String liveuid;
@SerializedName("add_time")
private String addTime;
@SerializedName("gold_num")
private String goldNum;
@SerializedName("countdown")
private String countdown;
@SerializedName("send_money_long_key")
private String sendMoneyLongKey;
public String getSendMoneyLongKey() {
return sendMoneyLongKey;
}
public SendMoneyLongModel setSendMoneyLongKey(String sendMoneyLongKey) {
this.sendMoneyLongKey = sendMoneyLongKey;
return this;
}
public String getCountdown() {
return countdown;
}
public SendMoneyLongModel setCountdown(String countdown) {
this.countdown = countdown;
return this;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUserNicename() {
return userNicename;
}
public void setUserNicename(String userNicename) {
this.userNicename = userNicename;
}
public String getUserAvatar() {
return userAvatar;
}
public void setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
}
public String getLiveuid() {
return liveuid;
}
public void setLiveuid(String liveuid) {
this.liveuid = liveuid;
}
public String getAddTime() {
return addTime;
}
public void setAddTime(String addTime) {
this.addTime = addTime;
}
public String getGoldNum() {
return goldNum;
}
public void setGoldNum(String goldNum) {
this.goldNum = goldNum;
}
@Override
public String toString() {
return "SendMoneyLongModel{" +
"method='" + method + '\'' +
", action='" + action + '\'' +
", uid='" + uid + '\'' +
", userNicename='" + userNicename + '\'' +
", userAvatar='" + userAvatar + '\'' +
", liveuid='" + liveuid + '\'' +
", addTime=" + addTime +
", goldNum='" + goldNum + '\'' +
'}';
}
}

View File

@ -0,0 +1,154 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class SendMoneyLongStatusModel extends BaseModel {
/**
* "sendMoneyLongStatus": { // 未查询到数据时为空数组
* "liveuid": "98889", // 主播ID
* "uid": "98888", // 发起用户ID
* "addtime": "1710384258446", // 开始时间 毫秒时间戳
* "gold_num": "5000", // 金豆数量
* "user_nicename": "周末暴打小朋友", // 用户昵称
* "user_avatar": "https://downs.yaoulive.com/mannine.png", // 用户头像链接
* "countdown": 300 // 倒计时
* "start_status": false,
* "start_time": "",
* "send_money_long_key": "1710397575473",
* "participate": 0,
* "add_time": "1710397575473"
* }
*/
@SerializedName("liveuid")
private String liveuid;
@SerializedName("uid")
private String uid;
@SerializedName("addtime")
private String addtime;
@SerializedName("gold_num")
private String goldNum;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("countdown")
private String countdown;
@SerializedName("start_status")
private String startStatus;
@SerializedName("start_time")
private String startTime;
@SerializedName("send_money_long_key")
private String sendMoneyLongKey;
@SerializedName("participate")
private String participate;
@SerializedName("add_time")
private String addTime;
public String getLiveuid() {
return liveuid;
}
public SendMoneyLongStatusModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getUid() {
return uid;
}
public SendMoneyLongStatusModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getAddtime() {
return addtime;
}
public SendMoneyLongStatusModel setAddtime(String addtime) {
this.addtime = addtime;
return this;
}
public String getGoldNum() {
return goldNum;
}
public SendMoneyLongStatusModel setGoldNum(String goldNum) {
this.goldNum = goldNum;
return this;
}
public String getUserNicename() {
return userNicename;
}
public SendMoneyLongStatusModel setUserNicename(String userNicename) {
this.userNicename = userNicename;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public SendMoneyLongStatusModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getCountdown() {
return countdown;
}
public SendMoneyLongStatusModel setCountdown(String countdown) {
this.countdown = countdown;
return this;
}
public String getStartStatus() {
return startStatus;
}
public SendMoneyLongStatusModel setStartStatus(String startStatus) {
this.startStatus = startStatus;
return this;
}
public String getStartTime() {
return startTime;
}
public SendMoneyLongStatusModel setStartTime(String startTime) {
this.startTime = startTime;
return this;
}
public String getSendMoneyLongKey() {
return sendMoneyLongKey;
}
public SendMoneyLongStatusModel setSendMoneyLongKey(String sendMoneyLongKey) {
this.sendMoneyLongKey = sendMoneyLongKey;
return this;
}
public String getParticipate() {
return participate;
}
public SendMoneyLongStatusModel setParticipate(String participate) {
this.participate = participate;
return this;
}
public String getAddTime() {
return addTime;
}
public SendMoneyLongStatusModel setAddTime(String addTime) {
this.addTime = addTime;
return this;
}
}

View File

@ -0,0 +1,154 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class sendMoneyLongListModel extends BaseModel {
/**
* {
* "liveuid": "98889", // 主播ID
* "uid": "98888", // 用户ID
* "addtime": "1710397350011", // 创建时间 毫秒时间戳
* "gold_num": "5000", // 金豆数量
* "user_nicename": "周末暴打小朋友", // 用户昵称
* "user_avatar": "https://downs.yaoulive.com/mannine.png", // 用户头像
* "countdown": 300, // 倒计时
* "start_status": false,
* "start_time": "",
* "send_money_long_key": "1710397485729",
* "participate": 0, // 是否参与活动 0.未参与 1.已参与
* "add_time": "1710397485729"
* }
*/
@SerializedName("liveuid")
private String liveuid;
@SerializedName("uid")
private String uid;
@SerializedName("addtime")
private String addtime;
@SerializedName("gold_num")
private String goldNum;
@SerializedName("user_nicename")
private String userNicename;
@SerializedName("user_avatar")
private String userAvatar;
@SerializedName("countdown")
private String countdown;
@SerializedName("start_status")
private boolean startStatus;
@SerializedName("start_time")
private String startTime;
@SerializedName("send_money_long_key")
private String sendMoneyLongKey;
@SerializedName("participate")
private String participate;
@SerializedName("add_time")
private String addTime;
public String getLiveuid() {
return liveuid;
}
public sendMoneyLongListModel setLiveuid(String liveuid) {
this.liveuid = liveuid;
return this;
}
public String getUid() {
return uid;
}
public sendMoneyLongListModel setUid(String uid) {
this.uid = uid;
return this;
}
public String getAddtime() {
return addtime;
}
public sendMoneyLongListModel setAddtime(String addtime) {
this.addtime = addtime;
return this;
}
public String getGoldNum() {
return goldNum;
}
public sendMoneyLongListModel setGoldNum(String goldNum) {
this.goldNum = goldNum;
return this;
}
public String getUserNicename() {
return userNicename;
}
public sendMoneyLongListModel setUserNicename(String userNicename) {
this.userNicename = userNicename;
return this;
}
public String getUserAvatar() {
return userAvatar;
}
public sendMoneyLongListModel setUserAvatar(String userAvatar) {
this.userAvatar = userAvatar;
return this;
}
public String getCountdown() {
return countdown;
}
public sendMoneyLongListModel setCountdown(String countdown) {
this.countdown = countdown;
return this;
}
public boolean isStartStatus() {
return startStatus;
}
public sendMoneyLongListModel setStartStatus(boolean startStatus) {
this.startStatus = startStatus;
return this;
}
public String getStartTime() {
return startTime;
}
public sendMoneyLongListModel setStartTime(String startTime) {
this.startTime = startTime;
return this;
}
public String getSendMoneyLongKey() {
return sendMoneyLongKey;
}
public sendMoneyLongListModel setSendMoneyLongKey(String sendMoneyLongKey) {
this.sendMoneyLongKey = sendMoneyLongKey;
return this;
}
public String getParticipate() {
return participate;
}
public sendMoneyLongListModel setParticipate(String participate) {
this.participate = participate;
return this;
}
public String getAddTime() {
return addTime;
}
public sendMoneyLongListModel setAddTime(String addTime) {
this.addTime = addTime;
return this;
}
}

View File

@ -0,0 +1,49 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class DragonRulePopup extends CenterPopupView {
LinearLayout list_no;
LinearLayout list;
boolean isList;
public DragonRulePopup(@NonNull Context context, boolean isList) {
super(context);
this.isList = isList;
}
// 返回自定义弹窗的布局
@Override
protected int getImplLayoutId() {
return R.layout.dragon_rule_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
list_no = findViewById(R.id.list_no);
list = findViewById(R.id.list);
if (!isList){
list_no.setVisibility(VISIBLE);
list.setVisibility(GONE);
}else {
list_no.setVisibility(GONE);
list.setVisibility(VISIBLE);
}
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.dragon_close), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dismiss();
}
});
}
}

View File

@ -0,0 +1,103 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.yunbao.common.R;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.WordUtil;
public class GuardBuyTipsDialog {
/**
* @param context
* @param coin 钻石
* @param content 购买类型名称
* @param simpleCallback
*/
public static void showBuyOrRenewDialog(Context context, String coin, String content,
boolean isOpen, GuardGetGuardUserInfoModel mGuardUserInfoModel, int guardType,
DialogUitl.SimpleCallback simpleCallback) {
if (context instanceof Activity) {
if (((Activity) context).isDestroyed() || ((Activity) context).isFinishing()) {
return;
}
}
final Dialog dialog = new Dialog(context, R.style.dialog2);
dialog.setContentView(R.layout.dialog_guard_buy_tips);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
TextView btn_confirm = dialog.findViewById(R.id.btn_confirm);
TextView content1 = dialog.findViewById(R.id.content1);
TextView content2 = dialog.findViewById(R.id.content2);
TextView contentTextView = dialog.findViewById(R.id.content);
TextView buyTypeTextView = dialog.findViewById(R.id.buyType);
content1.setVisibility(View.VISIBLE);
contentTextView.setVisibility(View.VISIBLE);
buyTypeTextView.setVisibility(View.VISIBLE);
content2.setVisibility(View.GONE);
if (!isOpen) {
if (!TextUtils.isEmpty(coin)) {
contentTextView.setText(context.getString(R.string.guard_buy_tips_1, coin));
}
if (!TextUtils.isEmpty(content)) {
buyTypeTextView.setText("" + content + "");
}
} else {
if (!TextUtils.isEmpty(coin)) {
contentTextView.setText(context.getString(R.string.guard_buy_tips_2, coin));
}
if (!TextUtils.isEmpty(content)) {
buyTypeTextView.setText("" + content + "");
}
}
if (mGuardUserInfoModel != null) {
if (mGuardUserInfoModel.getGuardType() != 0) {
if (guardType < mGuardUserInfoModel.getGuardType()) {
content1.setVisibility(View.GONE);
contentTextView.setVisibility(View.GONE);
buyTypeTextView.setVisibility(View.GONE);
content2.setVisibility(View.VISIBLE);
} else if (guardType==mGuardUserInfoModel.getGuardType()){
content1.setVisibility(View.GONE);
}else {
content1.setVisibility(View.VISIBLE);
}
} else {
content1.setVisibility(View.GONE);
}
} else {
content1.setVisibility(View.GONE);
}
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
btn_confirm.setText(WordUtil.isNewZh() ? "確認" : "Confirm");
btn_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (content2.getVisibility()==View.VISIBLE){
dialog.dismiss();
}else {
simpleCallback.onConfirmClick(dialog, "");
dialog.dismiss();
}
}
});
dialog.show();
}
}

View File

@ -0,0 +1,170 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.R;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.RewardsModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class GuardUpgradePopup extends CenterPopupView {
FragmentActivity activity;
String mLiveUid;
CheckUpgradesModel mUpgradesModel;
TextView leave_hint;
LinearLayout rewards_line1, rewards_line2, rewards_line3;
ImageView rewards_img1, rewards_img2, rewards_img3;
TextView rewards_text1, rewards_text2, rewards_text3;
public GuardUpgradePopup(@NonNull Context context, String liveUid, CheckUpgradesModel upgradesModel, GuardUpgradeCallBack guardUpgradeCallBack) {
super(context);
activity = (FragmentActivity) context;
mLiveUid = liveUid;
mUpgradesModel = upgradesModel;
mGuardUpgradeCallBack = guardUpgradeCallBack;
}
@Override
protected int getImplLayoutId() {
return R.layout.guard_upgrade_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
leave_hint = findViewById(R.id.leave_hint);
rewards_line1 = findViewById(R.id.rewards_line1);
rewards_line2 = findViewById(R.id.rewards_line2);
rewards_line3 = findViewById(R.id.rewards_line3);
rewards_img1 = findViewById(R.id.rewards_img1);
rewards_img2 = findViewById(R.id.rewards_img2);
rewards_img3 = findViewById(R.id.rewards_img3);
rewards_text1 = findViewById(R.id.rewards_text1);
rewards_text2 = findViewById(R.id.rewards_text2);
rewards_text3 = findViewById(R.id.rewards_text3);
StringBuffer hintStringBuffer = new StringBuffer();
if (WordUtil.isNewZh()) {
hintStringBuffer.append("您的守護等級已達到")
.append(mUpgradesModel.getLevel())
.append("級 可以領取以下獎勵");
} else {
hintStringBuffer.append("Your guardian level has reached level ")
.append(mUpgradesModel.getLevel())
;
}
leave_hint.setText(hintStringBuffer.toString());
if (mUpgradesModel.getRewards().size() > 0) {
if (mUpgradesModel.getRewards().size() == 1) {
rewards_line1.setVisibility(INVISIBLE);
rewards_line2.setVisibility(VISIBLE);
rewards_line3.setVisibility(INVISIBLE);
RewardsModel rewardsModel = mUpgradesModel.getRewards().get(0);
ImgLoader.display(getContext(), rewardsModel.getImagePath(), rewards_img2);
rewards_text2.setText(rewardsModel.getRewardName());
} else if (mUpgradesModel.getRewards().size() == 2) {
rewards_line1.setVisibility(VISIBLE);
rewards_line2.setVisibility(INVISIBLE);
rewards_line3.setVisibility(VISIBLE);
RewardsModel rewardsModel1 = mUpgradesModel.getRewards().get(0);
RewardsModel rewardsModel3 = mUpgradesModel.getRewards().get(1);
ImgLoader.display(getContext(), rewardsModel1.getImagePath(), rewards_img1);
rewards_text1.setText(rewardsModel1.getRewardName());
ImgLoader.display(getContext(), rewardsModel3.getImagePath(), rewards_img3);
rewards_text3.setText(rewardsModel3.getRewardName());
} else if (mUpgradesModel.getRewards().size() == 3) {
rewards_line1.setVisibility(VISIBLE);
rewards_line2.setVisibility(VISIBLE);
rewards_line3.setVisibility(VISIBLE);
RewardsModel rewardsModel1 = mUpgradesModel.getRewards().get(0);
RewardsModel rewardsModel2 = mUpgradesModel.getRewards().get(1);
RewardsModel rewardsModel3 = mUpgradesModel.getRewards().get(3);
ImgLoader.display(getContext(), rewardsModel1.getImagePath(), rewards_img1);
rewards_text1.setText(rewardsModel1.getRewardName());
ImgLoader.display(getContext(), rewardsModel2.getImagePath(), rewards_img2);
rewards_text2.setText(rewardsModel2.getRewardName());
ImgLoader.display(getContext(), rewardsModel3.getImagePath(), rewards_img3);
rewards_text3.setText(rewardsModel3.getRewardName());
} else {
rewards_line1.setVisibility(INVISIBLE);
rewards_line2.setVisibility(INVISIBLE);
rewards_line3.setVisibility(INVISIBLE);
}
} else {
rewards_line1.setVisibility(INVISIBLE);
rewards_line2.setVisibility(INVISIBLE);
rewards_line3.setVisibility(INVISIBLE);
}
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.confirm), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext())
.guardGetRewards(mUpgradesModel.getLevel(), mLiveUid, new HttpCallback<Object>() {
@Override
public void onSuccess(Object data) {
ToastUtil.show(WordUtil.isNewZh() ? "領取成功" : "Receive successfully");
dismiss();
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.view_grade), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
if (mGuardUpgradeCallBack != null) {
mGuardUpgradeCallBack.onGuardLevel();
}
dismiss();
StringBuffer htmlUrl = new StringBuffer();
IMLoginModel userInfo = IMLoginManager.get(getContext()).getUserInfo();
htmlUrl.append(CommonAppConfig.HOST)
.append("/h5/Guard/level.html?")
.append("&token=")
.append(userInfo.getToken())
.append("&uid=")
.append(userInfo.getId())
.append("&&anchorUid=")
.append(mLiveUid)
.append("&isZh=")
.append(((WordUtil.isNewZh()) ? "1" : "0"));
RouteUtil.forwardZhuangBanActivity(htmlUrl.toString());
}
});
}
private GuardUpgradeCallBack mGuardUpgradeCallBack;
public interface GuardUpgradeCallBack {
void onGuardLevel();
}
}

View File

@ -0,0 +1,134 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.content.DialogInterface;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lxj.xpopup.core.AttachPopupView;
import com.yunbao.common.R;
import com.yunbao.common.adapter.LiveBuyGuardSelectAdapter;
import com.yunbao.common.bean.GuardPriceModel;
import com.yunbao.common.views.LiveBuyGuardSelectViewHolder;
import java.util.ArrayList;
import java.util.List;
public class LiveBuyGuardSelectPopup extends AttachPopupView {
private int mType;
private DialogInterface.OnDismissListener onDismissListener;
private LiveBuyGuardSelectListener buyGuardSelectListener;
List<GuardPriceModel> price = new ArrayList<>();
LiveBuyGuardSelectAdapter liveBuyGuardSelectAdapter;
RecyclerView live_buy_guard_list;
GuardPriceModel model;
public LiveBuyGuardSelectPopup(@NonNull Context context, List<GuardPriceModel> mPrice, GuardPriceModel mModel) {
super(context);
price = mPrice;
model = mModel;
}
protected int getImplLayoutId() {
return R.layout.view_live_buy_guard_slelect;
}
@Override
protected void onCreate() {
live_buy_guard_list = findViewById(R.id.live_buy_guard_list);
liveBuyGuardSelectAdapter = new LiveBuyGuardSelectAdapter(price,model);
live_buy_guard_list.setAdapter(liveBuyGuardSelectAdapter);
live_buy_guard_list.setLayoutManager(new LinearLayoutManager(getContext()));
liveBuyGuardSelectAdapter.setLiveBuyGuardSelectClickListener(new LiveBuyGuardSelectViewHolder.LiveBuyGuardSelectClickListener() {
@Override
public void onClickListener(GuardPriceModel guardPriceModel) {
dialog.dismiss();
if (onDismissListener != null) {
onDismissListener.onDismiss(null);
}
if (buyGuardSelectListener != null) {
buyGuardSelectListener.onLiveBuyGuardSelectListener(guardPriceModel);
}
}
});
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.one_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(0);
// }
// }
// });
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.tree_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(1);
// }
// }
// });
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.six_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(2);
// }
// }
// });
// ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.one_two_month), new ViewClicksAntiShake.ViewClicksCallBack() {
// @Override
// public void onViewClicks() {
// dialog.dismiss();
// if (onDismissListener != null) {
// onDismissListener.onDismiss(null);
// }
// if (buyGuardSelectListener != null) {
// buyGuardSelectListener.onLiveBuyGuardSelectListener(3);
// }
// }
// });
if (model == null) {
} else {
}
}
public LiveBuyGuardSelectPopup setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
return this;
}
public LiveBuyGuardSelectPopup setBuyGuardSelectListener(LiveBuyGuardSelectListener buyGuardSelectListener) {
this.buyGuardSelectListener = buyGuardSelectListener;
return this;
}
@Override
protected void onDismiss() {
super.onDismiss();
if (onDismissListener != null) {
onDismissListener.onDismiss(null);
}
}
public interface LiveBuyGuardSelectListener {
void onLiveBuyGuardSelectListener(GuardPriceModel guardPriceModel);
}
}

View File

@ -0,0 +1,6 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
class DragonSendsMoneyEvent extends BaseModel {
}

View File

@ -0,0 +1,6 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class SendMoneyLongEndEvent extends BaseModel {
}

View File

@ -906,7 +906,11 @@ public class LiveHttpUtil {
.params("anchorUid", anchor_id)
.execute(callback);
}
public static void getAnchorActiveImgStatus(String anchor_id, HttpCallback callback) {
HttpClient.getInstance().get("Live.getAnchorActiveImgStatus", LiveHttpConsts.GET_EVENT)
.params("anchorUid", anchor_id)
.execute(callback);
}
/**
* 重置活动
*/

View File

@ -11,6 +11,7 @@ import com.yunbao.common.bean.BattlePassUserInfoBean;
import com.yunbao.common.bean.BlindBoxInfoModel;
import com.yunbao.common.bean.CheckLiveModel;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.ContributeModel;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.bean.CreateSudRoomModel;
@ -26,6 +27,8 @@ import com.yunbao.common.bean.GiftGuideModel;
import com.yunbao.common.bean.GiftNamingInfoModel;
import com.yunbao.common.bean.GiftWallGiftDetail;
import com.yunbao.common.bean.GiftWallModel;
import com.yunbao.common.bean.GuardGetGuardOpenInfoModel;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.bean.HourRank;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.IMLoginModel;
@ -60,6 +63,7 @@ import com.yunbao.common.bean.RedPacketInfoModel;
import com.yunbao.common.bean.RedPacketListBean;
import com.yunbao.common.bean.RoomMicStatusModel;
import com.yunbao.common.bean.SearchModel;
import com.yunbao.common.bean.SendMoneyLongModel;
import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.SlideInBannerModel;
import com.yunbao.common.bean.StarChallengeStatusModel;
@ -71,6 +75,7 @@ import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.bean.VipModel;
import com.yunbao.common.bean.WishListGiftConfModel;
import com.yunbao.common.bean.WishListModel;
import com.yunbao.common.bean.sendMoneyLongListModel;
import com.yunbao.common.event.CheckCurrencyModel;
import java.util.List;
@ -1162,4 +1167,28 @@ public interface PDLiveApi {
@GET("/api/public/?service=Sudgameserver.getRoomMicStatus")
Observable<ResponseModel<RoomMicStatusModel>> getRoomMicStatus();
@GET("/api/public/?service=Guard.getGuardUserInfo")
Observable<ResponseModel<GuardGetGuardUserInfoModel>> getGuardUserInfo(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.getGuardOpenInfo")
Observable<ResponseModel<GuardGetGuardOpenInfoModel>> getGuardOpenInfo(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.openGuard")
Observable<ResponseModel<Object>> openGuard(@Query("liveuid") String liveUid, @Query("guard_type") String guardType, @Query("price_key") String priceKey, @Query("stream") String stream);
@GET("/api/public/?service=Guard.sendMoneyLong")
Observable<ResponseModel<Object>> sendMoneyLong(@Query("liveuid") String liveUid, @Query("gold_num") String goldNum);
@GET("/api/public/?service=Guard.sendMoneyLongList")
Observable<ResponseModel<List<sendMoneyLongListModel>>> sendMoneyLongList(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.participateMoneyLong")
Observable<ResponseModel<String>> participateMoneyLong(@Query("liveuid") String liveUid, @Query("send_money_long_key") String sendMoneyLongKey);
@GET("/api/public/?service=Guard.endSendMoneyLong")
Observable<ResponseModel<SendMoneyLongModel>> endSendMoneyLong(@Query("liveuid") String liveUid, @Query("send_money_long_key") String sendMoneyLongKey);
@GET("/api/public/?service=Guard.checkUpgrades")
Observable<ResponseModel<CheckUpgradesModel>> checkUpgrades(@Query("liveuid") String liveUid);
@GET("/api/public/?service=Guard.getRewards")
Observable<ResponseModel<Object>> guardGetRewards(@Query("guard_level") String guardLevel,@Query("liveuid") String liveUid);
}

View File

@ -14,6 +14,7 @@ import com.yunbao.common.bean.BattlePassUserInfoBean;
import com.yunbao.common.bean.BlindBoxInfoModel;
import com.yunbao.common.bean.CheckLiveModel;
import com.yunbao.common.bean.CheckRemainingBalance;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;
@ -27,6 +28,8 @@ import com.yunbao.common.bean.GiftGuideModel;
import com.yunbao.common.bean.GiftNamingInfoModel;
import com.yunbao.common.bean.GiftWallGiftDetail;
import com.yunbao.common.bean.GiftWallModel;
import com.yunbao.common.bean.GuardGetGuardOpenInfoModel;
import com.yunbao.common.bean.GuardGetGuardUserInfoModel;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.LinkMicUserBeanV2;
@ -57,6 +60,7 @@ import com.yunbao.common.bean.RedPacketGiftModel;
import com.yunbao.common.bean.RedPacketInfoModel;
import com.yunbao.common.bean.RedPacketListBean;
import com.yunbao.common.bean.RoomMicStatusModel;
import com.yunbao.common.bean.SendMoneyLongModel;
import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.StarChallengeStatusModel;
import com.yunbao.common.bean.SudGameUserModel;
@ -67,6 +71,7 @@ import com.yunbao.common.bean.UserAvatarSelectBean;
import com.yunbao.common.bean.VipModel;
import com.yunbao.common.bean.WishListGiftConfModel;
import com.yunbao.common.bean.WishListModel;
import com.yunbao.common.bean.sendMoneyLongListModel;
import com.yunbao.common.event.CheckCurrencyModel;
import com.yunbao.common.http.API;
import com.yunbao.common.http.ResponseModel;
@ -2770,7 +2775,7 @@ public class LiveNetManager {
}).isDisposed();
}
public void addChatCount(String stream,HttpCallback<HttpCallbackModel> callback) {
public void addChatCount(String stream, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.addChatCount(stream)
.subscribeOn(Schedulers.io())
@ -2931,6 +2936,230 @@ public class LiveNetManager {
}
public void getGuardUserInfo(String liveUid, HttpCallback<GuardGetGuardUserInfoModel> callback) {
API.get().pdLiveApi(mContext)
.getGuardUserInfo(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<GuardGetGuardUserInfoModel>>() {
@Override
public void accept(ResponseModel<GuardGetGuardUserInfoModel> guardGetGuardUserInfoModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(guardGetGuardUserInfoModelResponseModel.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 getGuardOpenInfo(String liveUid, HttpCallback<GuardGetGuardOpenInfoModel> callback) {
API.get().pdLiveApi(mContext)
.getGuardOpenInfo(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<GuardGetGuardOpenInfoModel>>() {
@Override
public void accept(ResponseModel<GuardGetGuardOpenInfoModel> guardGetGuardOpenInfoModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(guardGetGuardOpenInfoModelResponseModel.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 openGuard(String liveUid, String guardType, String priceKey, String stream, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.openGuard(liveUid, guardType, priceKey, stream)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> stringResponseModel) throws Exception {
if (callback != null) {
if (stringResponseModel.getData().getCode() == 0) {
callback.onSuccess(stringResponseModel.getData().getMsg());
} else if (stringResponseModel.getData().getCode() == 1001) {
callback.onSuccess("22");
} else {
callback.onError(stringResponseModel.getData().getMsg());
}
}
}
}, 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 sendMoneyLongList(String liveUid, HttpCallback<List<sendMoneyLongListModel>> callback) {
API.get().pdLiveApi(mContext)
.sendMoneyLongList(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<List<sendMoneyLongListModel>>>() {
@Override
public void accept(ResponseModel<List<sendMoneyLongListModel>> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.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 sendMoneyLong(String liveUid, String goldNum, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.sendMoneyLong(liveUid, goldNum)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.getData().getMsg());
}
}
}, 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 participateMoneyLong(String liveUid, String sendMoneyLongKey, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.participateMoneyLong(liveUid, sendMoneyLongKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<String>>() {
@Override
public void accept(ResponseModel<String> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.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 endSendMoneyLong(String liveUid, String sendMoneyLongKey, HttpCallback<SendMoneyLongModel> callback) {
API.get().pdLiveApi(mContext)
.endSendMoneyLong(liveUid, sendMoneyLongKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<SendMoneyLongModel>>() {
@Override
public void accept(ResponseModel<SendMoneyLongModel> stringResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(stringResponseModel.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 checkUpgrades(String liveUid, HttpCallback<CheckUpgradesModel> callback) {
API.get().pdLiveApi(mContext)
.checkUpgrades(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CheckUpgradesModel>>() {
@Override
public void accept(ResponseModel<CheckUpgradesModel> listResponseModel) throws Exception {
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 guardGetRewards(String guardLevel, String liveUid, HttpCallback<Object> callback) {
API.get().pdLiveApi(mContext)
.guardGetRewards("0", liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> listResponseModel) throws Exception {
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();
}
/**
* 直播间取消网络请求
*/

View File

@ -62,7 +62,24 @@ public class IMLoginManager extends BaseCacheManager {
public boolean getRedPoint() {
return !TextUtils.isEmpty(getString("RedPoint")) || !TextUtils.equals(getString("RedPoint"), "1");
}
public void setQuickGiftIfFirst() {
public void setGuardRedPoint() {
put("GuardRedPoint", "1");
}
public boolean getGuardRedPoint() {
String GuardRedPoint = getString("GuardRedPoint");
if (TextUtils.isEmpty(GuardRedPoint)) {
return true;
}
if (!TextUtils.equals(GuardRedPoint, "1")) {
return true;
}
return false;
}
public void setQuickGiftIfFirst() {
put("quick_gift_if_first", "1");
}
@ -511,7 +528,8 @@ public class IMLoginManager extends BaseCacheManager {
}
});
}
public void updateUserCoin(){
public void updateUserCoin() {
HttpClient.getInstance().get("User.getUserBalance", "User.getUserBalance")
.execute(new HttpCallback() {
@Override
@ -528,14 +546,15 @@ public class IMLoginManager extends BaseCacheManager {
}
});
}
public void updateUserCoin(OnItemClickListener<JSONObject> listener){
public void updateUserCoin(OnItemClickListener<JSONObject> listener) {
HttpClient.getInstance().get("User.getUserBalance", "User.getUserBalance")
.execute(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0) {
JSONObject obj = JSONObject.parseObject(info[0]);
listener.onItemClick(obj,0);
listener.onItemClick(obj, 0);
String golds = obj.getString("gold");
String coins = obj.getString("coin");
String yuanbaos = obj.getString("yuanbao");

View File

@ -66,6 +66,7 @@ public class RongcloudIMManager {
SpeechUtility.createUtility(application.getApplicationContext(), params);
}
private static RongIMClient.OnReceiveMessageWrapperListener mListener;
/**

View File

@ -8,7 +8,7 @@ import android.app.Activity;
import android.app.Dialog;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
@ -17,14 +17,19 @@ import android.webkit.WebView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.CheckUpgradesModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.ReportCommunityBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.bean.VideoBean;
import com.yunbao.common.bean.VideoListBean;
import com.yunbao.common.dialog.GuardUpgradePopup;
import com.yunbao.common.event.JavascriptInterfaceEvent;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.QuickGiftingEvent;
@ -372,6 +377,13 @@ public class JavascriptInterfaceUtils {
RouteUtil.forwardZhuangBanActivity(url);
}
@JavascriptInterface
public void openWebViewNew(String url) {
Bus.get().post(new JavascriptInterfaceEvent().setMethod("openWebView").setData(url));
Constants.isTitle = false;
RouteUtil.forwardZhuangBanActivity(CommonAppConfig.HOST + url);
}
@JavascriptInterface
public void openWebViewTitle(String url) {
Constants.isTitle = true;
@ -688,4 +700,17 @@ public class JavascriptInterfaceUtils {
public void androidtoCommunityVideo() {
RouteUtil.forwardCommunityActivity();
}
@JavascriptInterface
public void getRewards(String checkUpgradesJson) {
try {
CheckUpgradesModel upgradesModel = new Gson().fromJson(checkUpgradesJson, CheckUpgradesModel.class);
if (!TextUtils.isEmpty(upgradesModel.getLevel()))
new XPopup.Builder(mWebView.getContext())
.asCustom(new GuardUpgradePopup(mWebView.getContext(), "", upgradesModel,null))
.show();
} catch (JsonSyntaxException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -1,5 +1,8 @@
package com.yunbao.common.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 时间处理
*/
@ -67,4 +70,16 @@ public class TimeUtils {
}
return hour + minute + ":" + second;
}
/**
* 时间戳转换成字符窜
* @param milSecond
* @param pattern
* @return
*/
public static String getDateToString(long milSecond, String pattern) {
Date date = new Date(milSecond);
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}
}

View File

@ -0,0 +1,96 @@
package com.yunbao.common.views;
import android.os.CountDownTimer;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
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.sendMoneyLongListModel;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class DragonSendMoneyListViewHolder extends RecyclerView.ViewHolder {
RoundedImageView live_avatar;
TextView user_nicename;
TextView gold_num;
TextView participate;
TextView send_benefits_time;
TextView send_benefits;
LinearLayout button_participate;
long mPkTimeCount2;
public CountDownTimer countDownTimer;
public DragonSendMoneyListViewHolder(@NonNull View itemView) {
super(itemView);
live_avatar = itemView.findViewById(R.id.live_avatar);
user_nicename = itemView.findViewById(R.id.user_nicename);
gold_num = itemView.findViewById(R.id.gold_num);
button_participate = itemView.findViewById(R.id.button_participate);
participate = itemView.findViewById(R.id.participate);
send_benefits_time = itemView.findViewById(R.id.send_benefits_time);
send_benefits = itemView.findViewById(R.id.send_benefits);
}
public void setData(sendMoneyLongListModel model, DragonSendMoneyListClicksCallBack callBack,boolean isAnchor, boolean isAttention) {
ImgLoader.display(itemView.getContext(), model.getUserAvatar(), live_avatar);
user_nicename.setText(String.valueOf(model.getUserNicename()));
gold_num.setText(String.valueOf(model.getGoldNum()));
if (TextUtils.equals("0", model.getParticipate()) && !isAnchor) {
participate.setVisibility(View.VISIBLE);
send_benefits_time.setVisibility(View.GONE);
send_benefits.setVisibility(View.GONE);
button_participate.setBackgroundResource(R.mipmap.icon_participate);
} else {
participate.setVisibility(View.GONE);
send_benefits_time.setVisibility(View.VISIBLE);
send_benefits.setVisibility(View.VISIBLE);
button_participate.setBackgroundResource(R.mipmap.icon_send_benefits);
}
if (send_benefits_time.getVisibility() == View.VISIBLE) {
// handler.removeCallbacks(runnable);
mPkTimeCount2 = Long.parseLong(model.getCountdown());
String s1 = StringUtil.getDurationText(mPkTimeCount2 * 1000);
send_benefits_time.setText(s1);
// handler.postDelayed(runnable, 1000);
}
ViewClicksAntiShake.clicksAntiShake(button_participate, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
if (!isAnchor && callBack != null && TextUtils.equals("0", model.getParticipate())) {
callBack.onParticipate(model);
// handler.removeCallbacks(runnable);
}
}
});
}
// Handler handler = new Handler();
// Runnable runnable = new Runnable() {
// @Override
// public void run() {
// mPkTimeCount2--;
// if (mPkTimeCount2 > 0) {
// String s1 = StringUtil.getDurationText(mPkTimeCount2 * 1000);
// send_benefits_time.setText(s1);
// handler.postDelayed(runnable, 1000);
// } else {
// handler.removeCallbacks(runnable);
// }
//
// }
// };
public interface DragonSendMoneyListClicksCallBack {
void onParticipate(sendMoneyLongListModel moneyLongListModel);
}
}

View File

@ -22,11 +22,13 @@ import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class FunGamesChildViewHolder extends RecyclerView.ViewHolder {
private ImageView funGamePic;
private TextView funGameName;
private View total_image_red_point;
public FunGamesChildViewHolder(@NonNull View itemView) {
super(itemView);
funGamePic = itemView.findViewById(R.id.fun_game_pic);
funGameName = itemView.findViewById(R.id.fun_game_name);
total_image_red_point = itemView.findViewById(R.id.total_image_red_point);
}
public void setData(CustomSidebarChildModel model, boolean rigts) {
@ -38,7 +40,11 @@ public class FunGamesChildViewHolder extends RecyclerView.ViewHolder {
funGameName.setText(model.getTitle());
if (TextUtils.equals(model.getTitle(), WordUtil.getNewString(com.yunbao.common.R.string.guard_guard)) && IMLoginManager.get(itemView.getContext()).getGuardRedPoint()) {
total_image_red_point.setVisibility(View.VISIBLE);
} else {
total_image_red_point.setVisibility(View.GONE);
}
ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
@ -59,7 +65,7 @@ public class FunGamesChildViewHolder extends RecyclerView.ViewHolder {
.append("&uid=")
.append(userInfo.getId())
.append("&token=")
.append(userInfo.getToken()) .append("&isZh=")
.append(userInfo.getToken()).append("&isZh=")
.append(WordUtil.isNewZh() ? "1" : 0);
} else {
htmlUrl.append(CommonAppConfig.HOST)
@ -68,7 +74,7 @@ public class FunGamesChildViewHolder extends RecyclerView.ViewHolder {
.append("?uid=")
.append(userInfo.getId())
.append("&token=")
.append(userInfo.getToken()) .append("&isZh=")
.append(userInfo.getToken()).append("&isZh=")
.append(WordUtil.isNewZh() ? "1" : 0);
}
Bus.get().post(new CustomDrawerPopupEvent()

View File

@ -0,0 +1,25 @@
package com.yunbao.common.views;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.glide.ImgLoader;
public class LiveBuyGuardPrivilegeViewHolder extends RecyclerView.ViewHolder {
ImageView guard_privilege;
public LiveBuyGuardPrivilegeViewHolder(@NonNull View itemView) {
super(itemView);
guard_privilege = itemView.findViewById(R.id.guard_privilege);
}
public void setData(String url) {
Log.e("LiveBuyGuardPrivilege", url);
ImgLoader.display(itemView.getContext(), url, guard_privilege);
}
}

View File

@ -0,0 +1,44 @@
package com.yunbao.common.views;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.R;
import com.yunbao.common.bean.GuardPriceModel;
public class LiveBuyGuardSelectViewHolder extends RecyclerView.ViewHolder {
TextView opening_time, discount;
View layout;
public LiveBuyGuardSelectViewHolder(@NonNull View itemView) {
super(itemView);
opening_time = itemView.findViewById(R.id.opening_time);
discount = itemView.findViewById(R.id.discount);
layout = itemView.findViewById(R.id.layout);
}
public void setData(GuardPriceModel guardPriceModel, LiveBuyGuardSelectClickListener liveBuyGuardSelectClickListener, GuardPriceModel mModel) {
if (mModel != null && TextUtils.equals(String.valueOf(guardPriceModel.getPriceKey()), String.valueOf(mModel.getPriceKey()))) {
layout.setSelected(true);
}
opening_time.setText(String.valueOf(guardPriceModel.getOpeningTime()));
discount.setText(String.valueOf(guardPriceModel.getDiscount()));
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (liveBuyGuardSelectClickListener != null) {
liveBuyGuardSelectClickListener.onClickListener(guardPriceModel);
}
}
});
}
public interface LiveBuyGuardSelectClickListener {
void onClickListener(GuardPriceModel guardPriceModel);
}
}

View File

@ -26,13 +26,14 @@ public class NewRoleFunGamesChildViewHolder extends RecyclerView.ViewHolder {
private TextView funGameName;
private View red_point;
private boolean showRed = false;
private View total_image_red_point;
public NewRoleFunGamesChildViewHolder(@NonNull View itemView, boolean showRed) {
super(itemView);
this.showRed = showRed;
funGamePic = itemView.findViewById(R.id.fun_game_pic);
funGameName = itemView.findViewById(R.id.fun_game_name);
red_point = itemView.findViewById(R.id.red_point);
total_image_red_point = itemView.findViewById(R.id.total_image_red_point);
}
public void setData(CustomSidebarChildModel model, boolean rigts) {
@ -49,7 +50,11 @@ public class NewRoleFunGamesChildViewHolder extends RecyclerView.ViewHolder {
}
funGameName.setText(model.getTitle());
if (TextUtils.equals(model.getTitle(), WordUtil.getNewString(com.yunbao.common.R.string.guard_guard)) && IMLoginManager.get(itemView.getContext()).getGuardRedPoint()) {
total_image_red_point.setVisibility(View.VISIBLE);
} else {
total_image_red_point.setVisibility(View.GONE);
}
ViewClicksAntiShake.clicksAntiShake(itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="6dp" />
<solid android:color="#80000000"/>
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/background_live_buy_guard_slelect_item1" android:state_selected="false" />
<item android:drawable="@drawable/background_live_buy_guard_slelect_item2" android:state_selected="true" />
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000" />
</shape>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#2D3271" />
</shape>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="270"
android:endColor="#120C07"
android:startColor="#3F2D05"
android:type="linear" />
<corners
android:topLeftRadius="12dp"
android:topRightRadius="12dp" />
</shape>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="270"
android:endColor="#09050F"
android:startColor="#3F3B34"
android:type="linear" />
<corners
android:topLeftRadius="12dp"
android:topRightRadius="12dp" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="6dp" />
<stroke
android:width="0.5dp"
android:color="#D9D9D9" />
<solid android:color="#CC0C0D1A" />
</shape>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="270"
android:endColor="#110F22"
android:startColor="#37398E"
android:type="linear" />
<corners
android:topLeftRadius="12dp"
android:topRightRadius="12dp" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="18dp" />
<gradient
android:angle="180"
android:endColor="#463D32"
android:startColor="#342B20" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="18dp" />
<gradient
android:angle="180"
android:endColor="#FCDEC4"
android:startColor="#EEC593" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="18dp" />
<gradient
android:angle="180"
android:endColor="#FCDEC4"
android:startColor="#EEC593" />
</shape>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="135"
android:centerColor="#202020"
android:endColor="#535353"
android:startColor="#595959" />
<corners
android:bottomLeftRadius="18dp"
android:bottomRightRadius="18dp"
android:topLeftRadius="18dp"
android:topRightRadius="18dp" />
</shape>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="45"
android:endColor="#EEC593"
android:startColor="#FCDEC4" />
<corners
android:bottomLeftRadius="18dp"
android:bottomRightRadius="18dp"
android:topLeftRadius="18dp"
android:topRightRadius="18dp" />
</shape>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="15dp" />
<stroke android:width="1dp" android:color="@color/white"/>
<solid android:color="#E6454444"/>
</shape>

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="310dp"
android:layout_height="250dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="230dp"
android:background="@drawable/guard_buy_tips_bg">
<ImageView
android:id="@+id/btn_cancel"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:src="@mipmap/icon_guard_buy_tips_close" />
<com.flyjingfish.gradienttextviewlib.GradientTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:letterSpacing="0.1"
android:text="@string/dialog_tip"
android:textSize="22dp"
app:gradient_angle="45"
app:gradient_endColor="#F9E1AE"
app:gradient_startColor="#C28413" />
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_centerHorizontal="true"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="20dp"
android:gravity="center"
android:letterSpacing="0.1"
android:text="@string/guard_buy_tips_1"
android:textColor="#FFE0BF"
android:textSize="14dp"
android:visibility="invisible" />
<TextView
android:id="@+id/buyType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/content"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:letterSpacing="0.1"
android:text="@string/guard_buy_type_1"
android:textColor="#FFB974"
android:textSize="15dp"
android:textStyle="italic|bold"
android:visibility="invisible" />
<TextView
android:id="@+id/content1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/buyType"
android:layout_centerHorizontal="true"
android:layout_marginStart="20dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="20dp"
android:gravity="center"
android:letterSpacing="0.1"
android:text="@string/according_to_the_rules"
android:textColor="#FFE0BF"
android:textSize="12dp"
android:visibility="invisible" />
<TextView
android:id="@+id/content2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginStart="20dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="20dp"
android:gravity="center"
android:letterSpacing="0.1"
android:text="@string/current_guard_expires"
android:textColor="#FFE0BF"
android:textSize="17dp" />
</RelativeLayout>
<TextView
android:id="@+id/btn_confirm"
android:layout_width="130dp"
android:gravity="center"
android:layout_height="38dp"
android:textColor="#893D0D"
android:textSize="15sp"
android:textStyle="bold"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/guard_buy_tips_sure_bg"
android:letterSpacing="0.1"
android:text="@string/confirm" />
</RelativeLayout>

View File

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:layout_width="300dp"
android:layout_height="320dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@mipmap/background_dragon_rule" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.flyjingfish.gradienttextviewlib.GradientTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:letterSpacing="0.2"
android:text="@string/regular_bubble"
android:textSize="23sp"
android:textStyle="bold"
app:gradient_angle="180"
app:gradient_endColor="#F9E1AE"
app:gradient_startColor="#C28413" />
<androidx.core.widget.NestedScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/list_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="10dp"
android:text="@string/dragon_rule1"
android:textColor="#FFE0BF"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:text="@string/dragon_rule2"
android:textColor="#FFE0BF"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:text="@string/dragon_rule3"
android:textColor="#FFE0BF"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="8dp"
android:text="@string/dragon_rule4"
android:textColor="#FFE0BF"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="10dp"
android:text="@string/dragon_rule5"
android:textColor="#FFE0BF"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:text="@string/dragon_rule6"
android:textColor="#FFE0BF"
android:textSize="14sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:text="@string/dragon_rule7"
android:textColor="#FFE0BF"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</FrameLayout>
<ImageView
android:id="@+id/dragon_close"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginTop="30dp"
android:src="@mipmap/icon_dragon_close" />
</LinearLayout>

View File

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.flyjingfish.gradienttextviewlib.GradientTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:letterSpacing="0.1"
android:text="@string/congratulations_on_the_promotion"
android:textSize="30sp"
android:textStyle="bold"
app:gradient_angle="45"
app:gradient_endColor="@color/white"
app:gradient_startColor="@color/white"
app:gradient_stroke_endColor="#F86A01"
app:gradient_stroke_startColor="#F9CB22"
app:gradient_stroke_strokeWidth="5dp" />
<TextView
android:id="@+id/leave_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:gravity="center"
android:text="@string/guard_level_has_been_reached"
android:textColor="#FFE0BF"
android:textSize="14sp" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="258dp"
android:layout_height="174dp"
android:layout_marginTop="52dp"
android:src="@mipmap/background_guard_upgrade" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/rewards_line1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/rewards_img1"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="fitXY"
android:src="@mipmap/tequan_1" />
<TextView
android:id="@+id/rewards_text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:gravity="center"
android:text="獎勵名稱"
android:textColor="#FF8503"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/rewards_line2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="12dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/rewards_img2"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="fitXY"
android:src="@mipmap/tequan_1" />
<TextView
android:id="@+id/rewards_text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:gravity="center"
android:text="獎勵名稱"
android:textColor="#FF8503"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/rewards_line3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/rewards_img3"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="fitXY"
android:src="@mipmap/tequan_1" />
<TextView
android:id="@+id/rewards_text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:gravity="center"
android:text="獎勵名稱"
android:textColor="#FF8503"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="13dp"
android:layout_marginEnd="13dp"
android:layout_marginBottom="38dp">
<Button
android:id="@+id/view_grade"
android:layout_width="94dp"
android:layout_height="36dp"
android:background="@drawable/button_guard_upgrade"
android:text="@string/view_grade"
android:textColor="#893D0D"
android:textSize="14sp" />
<Button
android:id="@+id/confirm"
android:layout_width="94dp"
android:layout_height="36dp"
android:layout_gravity="end"
android:background="@drawable/button_guard_upgrade"
android:text="@string/to_receive"
android:textColor="#893D0D"
android:textSize="14sp" />
</FrameLayout>
</FrameLayout>
</LinearLayout>

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginStart="15dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="15dp"
android:background="@mipmap/background_view_dragon_send_money_list"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.9"
android:gravity="center_vertical">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/live_avatar"
android:layout_width="34dp"
android:layout_height="34dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="12dp"
android:scaleType="centerCrop"
android:src="@mipmap/icon_male_default"
app:riv_oval="true" />
<TextView
android:id="@+id/user_nicename"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:ellipsize="end"
android:maxEms="7"
android:maxLines="1"
android:text="465464654654654654564654654654564564654654654564564564654654654654654"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical">
<ImageView
android:layout_width="18dp"
android:layout_height="18dp"
android:src="@mipmap/gold_coin" />
<TextView
android:id="@+id/gold_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:ellipsize="end"
android:maxEms="4"
android:maxLines="1"
android:text="465464654654654654564654654654564564654654654564564564654654654654654"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
<LinearLayout
android:id="@+id/button_participate"
android:layout_width="85dp"
android:layout_height="47dp"
android:layout_marginEnd="10dp"
android:background="@mipmap/icon_participate"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/participate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/participate"
android:textColor="@color/white"
android:textSize="11sp"
android:visibility="gone" />
<TextView
android:id="@+id/send_benefits_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="03:20"
android:textColor="#31261F"
android:textSize="14sp" />
<TextView
android:id="@+id/send_benefits"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/send_benefits"
android:textColor="#31261F"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -1,16 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/fun_game_pic"
android:layout_width="38dp"
android:layout_height="38dp"
android:src="@mipmap/live_more_icon_guard" />
<RelativeLayout
android:layout_width="40dp"
android:layout_height="40dp">
<!--普通工具合集-->
<ImageView
android:id="@+id/fun_game_pic"
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@mipmap/live_more_icon_guard" />
<View
android:id="@+id/total_image_red_point"
android:layout_width="6dp"
android:layout_height="6dp"
android:layout_alignParentEnd="true"
android:layout_marginTop="3dp"
android:layout_marginEnd="5dp"
android:background="@drawable/bg_red_point"
tools:visibility="visible" />
</RelativeLayout>
<TextView
android:id="@+id/fun_game_name"

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/guard_privilege"
android:layout_marginTop="10dp"
android:src="@mipmap/tequan_1"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_marginStart="9dp"
android:layout_height="83dp" />
</LinearLayout>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="130dp"
android:background="@drawable/bg_live_buy_guard_select"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/live_buy_guard_list"
android:layout_width="match_parent"
android:layout_marginTop="5dp"
android:layout_height="wrap_content"
android:layout_marginStart="1dp"
android:layout_marginEnd="1dp"
tools:itemCount="4"
android:layout_marginBottom="5dp"
tools:listitem="@layout/view_live_buy_guard_slelect_item" />
</LinearLayout>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="@drawable/background_live_buy_guard_slelect_item"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/opening_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/one_month"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/discount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="19dp"
android:layout_weight="1"
android:gravity="center"
android:text="7.1折"
android:textColor="@color/white"
android:textSize="12sp" />
</LinearLayout>

View File

@ -13,11 +13,32 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/fun_game_pic"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@mipmap/live_more_icon_guard" />
<RelativeLayout
android:layout_width="50dp"
android:layout_height="50dp">
<!--普通工具合集-->
<ImageView
android:id="@+id/fun_game_pic"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@mipmap/live_more_icon_guard" />
<View
android:id="@+id/total_image_red_point"
android:layout_width="6dp"
android:layout_height="6dp"
android:layout_alignParentEnd="true"
android:layout_marginTop="3dp"
android:layout_marginEnd="5dp"
android:background="@drawable/bg_red_point"
tools:visibility="visible" />
</RelativeLayout>
<View
android:id="@+id/red_point"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -1450,4 +1450,54 @@ Limited ride And limited avatar frame</string>
<string name="community_back">Are you sure to return?</string>
<string name="back_community_sure">Sure</string>
<string name="guard_buy_tips_1">You will spend %s diamonds for the anchor</string>
<string name="guard_buy_type_1">【Star Guardian】</string>
<string name="guardian_privilege">Guardianship privileges</string>
<string name="be_their_exclusive_guardian">Be the anchors guardian</string>
<string name="not_yet_open">Not opened</string>
<string name="tas_guardian_group">guardian group</string>
<string name="open_the_kings_guard">Activate King Guardian</string>
<string name="open_the_start_guard">Activate Star Guardian</string>
<string name="open_the_god_guard">Activate God Guardian</string>
<string name="one_month">1 month</string>
<string name="tree_month">3 month</string>
<string name="six_month">6 month</string>
<string name="one_two_month">12 month</string>
<string name="guardian_for_your_favorite_anchor">Quickly activate guardian for your favorite anchor</string>
<string name="guardian_task">Guardian Task</string>
<string name="my_graud_grade">My level ></string>
<string name="no_one_guarding_the_anchor_yet">No one is guarding the anchor yet, come and guard it now~</string>
<string name="this_week_contribution">Contribution/week</string>
<string name="contribution">Contribution</string>
<string name="have_opened">Opened</string>
<string name="dragon_sends_money">Dragon\'s Wealth</string>
<string name="please_enter_the_number_of_gold_beans">"Please enter the quantity of gold beans "</string>
<string name="please_enter_the_number_of_gold_beans_hint">"The gold beans consumed this time will increase your guardian experience points "</string>
<string name="open_an_activity">Open activity</string>
<string name="dragon_rule1">"1. Dragon's Wealth is a benefit that you provide to the audience of the live room after activating the 【God Guardian】. You can choose to customize the number of golden beans and summon Dragon God to divide the profits among the fans of the live broadcast room (the number of golden beans is not less than 1000), or you can choose not to activate the activity; "</string>
<string name="dragon_rule2">"2. The consumption of gold beans this time will be included in the guardian contribution value and experience value growth. For every 10 gold beans provided, 1 contribution value will be obtained, which can be used to increase the guardian level; "</string>
<string name="dragon_rule3">"3. Users who follow the anchor and participate in activities will receive the benefits you provide after a five minute countdown; "</string>
<string name="dragon_rule4">4. The final interpretation of this activity belongs to PDLIVE.</string>
<string name="dragon_immediate_participation">Participate</string>
<string name="continuative_guardian_privilege">Renew now to extend guardian privileges\n</string>
<string name="travel_renewal">Go to renew</string>
<string name="congratulations_on_the_promotion">Congratulations</string>
<string name="guard_level_has_been_reached">Your guardian level has reached level 000</string>
<string name="view_grade">View levels</string>
<string name="guard_for_your_beloved_one">Open up guard for your beloved anchor!</string>
<string name="due_in">Due in</string>
<string name="due_in_guard">Expired</string>
<string name="continuative_guardian_privilege2">"Now renew and enjoy guardian privileges again "</string>
<string name="renewal_guardian">Renewal Guardian</string>
<string name="guard_buy_tips_2">You will spend %s diamonds to renew the anchor</string>
<string name="participate">Participate</string>
<string name="send_benefits">Send benefits</string>
<string name="according_to_the_rules">(The original protection level will be retained, and the remaining validity period will be added to the new protection validity period according to the rules)</string>
<string name="current_guard_expires">We are currently unable to activate this guard. Please try again after the current guard expires</string>
<string name="dragon_rule5">1.Dragon\'s Wealth is a free golden bean benefit provided to live stream viewers by users who have activated the 【God Guardian】 feature;</string>
<string name="dragon_rule6">2.Users who follow the anchor and participate in the activity will divide the gold beans of the activity after the countdown of five minutes ends;</string>
<string name="dragon_rule7">3.The final interpretation of this activity belongs to PDLIVE.</string>
</resources>

View File

@ -1449,4 +1449,53 @@
<string name="community_back">是否確認返回?</string>
<string name="back_community_sure">確定</string>
<string name="guard_buy_tips_1">您將花費%s鑽石為主播開通</string>
<string name="guard_buy_type_1">【星之守护】</string>
<string name="guardian_privilege">守護團特權</string>
<string name="be_their_exclusive_guardian">成為TA的專屬守護</string>
<string name="not_yet_open">暫未開通</string>
<string name="tas_guardian_group">守護團 ></string>
<string name="open_the_kings_guard">開通王之守護</string>
<string name="open_the_start_guard">開通星之守護</string>
<string name="open_the_god_guard">開通神之守護</string>
<string name="one_month">1個月</string>
<string name="tree_month">3個月</string>
<string name="six_month">6個月</string>
<string name="one_two_month">12個月</string>
<string name="guardian_for_your_favorite_anchor">快爲您喜歡的主播開通守護吧!</string>
<string name="guardian_task">守護任務</string>
<string name="my_graud_grade">我的等級 ></string>
<string name="no_one_guarding_the_anchor_yet">還沒人守護主播快來守護TA吧~</string>
<string name="this_week_contribution">本周貢獻值</string>
<string name="contribution">貢獻度</string>
<string name="have_opened">已開通</string>
<string name="dragon_sends_money">神龍送財</string>
<string name="please_enter_the_number_of_gold_beans">請輸入金豆數量</string>
<string name="please_enter_the_number_of_gold_beans_hint">您本次消耗的金豆將增長您的守護經驗值</string>
<string name="open_an_activity">開啓活動</string>
<string name="dragon_rule1">1.龍神送財是您開通【神之守護】後給予直播間觀眾的福利您可選擇自定義金豆數量並召喚龍神給直播间内主播粉丝瓜分金豆數量不低於1000或者您可以選擇不开启活动</string>
<string name="dragon_rule2">2.此次金豆消耗将计入守护贡献值和经验值增长每提供10金豆將獲得1貢獻值貢獻值可用於增長守護等級</string>
<string name="dragon_rule3">3.用戶關注主播並參與活動,將在五分鐘倒計時後將獲得您提供的福利;</string>
<string name="dragon_rule4">4.此活動的最終解釋權歸PDLIVE所有。</string>
<string name="dragon_immediate_participation">立即參與</string>
<string name="continuative_guardian_privilege">延續守護特權</string>
<string name="travel_renewal">前往續費</string>
<string name="congratulations_on_the_promotion">恭喜升級</string>
<string name="guard_level_has_been_reached">您的守護等級已達到123級 可以領取以下獎勵</string>
<string name="view_grade">查看等級</string>
<string name="guard_for_your_beloved_one">為心愛的TA開通守護吧</string>
<string name="due_in">還有</string>
<string name="due_in_guard">天到期</string>
<string name="continuative_guardian_privilege2">保留守護等級 重享守護特權</string>
<string name="renewal_guardian">續費守護</string>
<string name="guard_buy_tips_2">您將花費%s鑽石為主播續費</string>
<string name="participate">點擊參加</string>
<string name="send_benefits">發放福利</string>
<string name="according_to_the_rules">(原有的守護等級將會保留,剩餘有效期將按規則補充至新守護有效期中)</string>
<string name="current_guard_expires">暫時無法開通該守護,請當前守護到期後嘗試</string>
<string name="dragon_rule5">1.神龍送財是開通【神之守護】的用戶給予直播間觀眾的免費金豆福利;</string>
<string name="dragon_rule6">2.用戶關注主播並參與活動,將在倒計時五分鐘結束後瓜分活動金豆;</string>
<string name="dragon_rule7">3.此活動的最終解釋權歸PDLIVE所有。</string>
</resources>

View File

@ -1449,4 +1449,52 @@
<string name="back_community_sure">確定</string>
<string name="guard_buy_tips_1">您將花費%s鑽石為主播開通</string>
<string name="guard_buy_type_1">【星之守护】</string>
<string name="guardian_privilege">守護團特權</string>
<string name="be_their_exclusive_guardian">成為TA的專屬守護</string>
<string name="not_yet_open">暫未開通</string>
<string name="tas_guardian_group">守護團 ></string>
<string name="open_the_kings_guard">開通王之守護</string>
<string name="open_the_start_guard">開通星之守護</string>
<string name="open_the_god_guard">開通神之守護</string>
<string name="one_month">1個月</string>
<string name="tree_month">3個月</string>
<string name="six_month">6個月</string>
<string name="one_two_month">12個月</string>
<string name="guardian_for_your_favorite_anchor">快爲您喜歡的主播開通守護吧!</string>
<string name="guardian_task">守護任務</string>
<string name="my_graud_grade">我的等級 ></string>
<string name="no_one_guarding_the_anchor_yet">還沒人守護主播快來守護TA吧~</string>
<string name="this_week_contribution">本周貢獻值</string>
<string name="contribution">貢獻度</string>
<string name="have_opened">已開通</string>
<string name="dragon_sends_money">神龍送財</string>
<string name="please_enter_the_number_of_gold_beans">請輸入金豆數量</string>
<string name="please_enter_the_number_of_gold_beans_hint">您本次消耗的金豆將增長您的守護經驗值</string>
<string name="open_an_activity">開啓活動</string>
<string name="dragon_rule1">1.龍神送財是您開通【神之守護】後給予直播間觀眾的福利您可選擇自定義金豆數量並召喚龍神給直播间内主播粉丝瓜分金豆數量不低於1000或者您可以選擇不开启活动</string>
<string name="dragon_rule2">2.此次金豆消耗将计入守护贡献值和经验值增长每提供10金豆將獲得1貢獻值貢獻值可用於增長守護等級</string>
<string name="dragon_rule3">3.用戶關注主播並參與活動,將在五分鐘倒計時後將獲得您提供的福利;</string>
<string name="dragon_rule4">4.此活動的最終解釋權歸PDLIVE所有。</string>
<string name="dragon_immediate_participation">立即參與</string>
<string name="continuative_guardian_privilege">延續守護特權</string>
<string name="travel_renewal">前往續費</string>
<string name="congratulations_on_the_promotion">恭喜升級</string>
<string name="guard_level_has_been_reached">您的守護等級已達到123級 可以領取以下獎勵</string>
<string name="view_grade">查看等級</string>
<string name="guard_for_your_beloved_one">Open up guard for your beloved anchor!</string>
<string name="due_in">還有</string>
<string name="due_in_guard">天到期</string>
<string name="continuative_guardian_privilege2">保留守護等級 重享守護特權</string>
<string name="renewal_guardian">續費守護</string>
<string name="guard_buy_tips_2">您將花費%s鑽石為主播續費</string>
<string name="participate">點擊參加</string>
<string name="send_benefits">發放福利</string>
<string name="according_to_the_rules">(原有的守護等級將會保留,剩餘有效期將按規則補充至新守護有效期中)</string>
<string name="current_guard_expires">暫時無法開通該守護,請當前守護到期後嘗試</string>
<string name="dragon_rule5">1.神龍送財是開通【神之守護】的用戶給予直播間觀眾的免費金豆福利;</string>
<string name="dragon_rule6">2.用戶關注主播並參與活動,將在倒計時五分鐘結束後瓜分活動金豆;</string>
<string name="dragon_rule7">3.此活動的最終解釋權歸PDLIVE所有。</string>
</resources>

View File

@ -1446,4 +1446,53 @@
<string name="back_community_sure">確定</string>
<string name="guard_buy_tips_1">您將花費%s鑽石為主播開通</string>
<string name="guard_buy_type_1">【星之守护】</string>
<string name="guardian_privilege">守護團特權</string>
<string name="be_their_exclusive_guardian">成為TA的專屬守護</string>
<string name="not_yet_open">暫未開通</string>
<string name="tas_guardian_group">守護團 ></string>
<string name="open_the_kings_guard">開通王之守護</string>
<string name="open_the_start_guard">開通星之守護</string>
<string name="open_the_god_guard">開通神之守護</string>
<string name="one_month">1個月</string>
<string name="tree_month">3個月</string>
<string name="six_month">6個月</string>
<string name="one_two_month">12個月</string>
<string name="guardian_for_your_favorite_anchor">快爲您喜歡的主播開通守護吧!</string>
<string name="guardian_task">守護任務</string>
<string name="my_graud_grade">我的等級 ></string>
<string name="no_one_guarding_the_anchor_yet">還沒人守護主播快來守護TA吧~</string>
<string name="this_week_contribution">本周貢獻值</string>
<string name="contribution">貢獻度</string>
<string name="have_opened">已開通</string>
<string name="dragon_sends_money">神龍送財</string>
<string name="please_enter_the_number_of_gold_beans">請輸入金豆數量</string>
<string name="please_enter_the_number_of_gold_beans_hint">您本次消耗的金豆將增長您的守護經驗值</string>
<string name="open_an_activity">開啓活動</string>
<string name="dragon_rule1">1.龍神送財是您開通【神之守護】後給予直播間觀眾的福利您可選擇自定義金豆數量並召喚龍神給直播间内主播粉丝瓜分金豆數量不低於1000或者您可以選擇不开启活动</string>
<string name="dragon_rule2">2.此次金豆消耗将计入守护贡献值和经验值增长每提供10金豆將獲得1貢獻值貢獻值可用於增長守護等級</string>
<string name="dragon_rule3">3.用戶關注主播並參與活動,將在五分鐘倒計時後將獲得您提供的福利;</string>
<string name="dragon_rule4">4.此活動的最終解釋權歸PDLIVE所有。</string>
<string name="dragon_immediate_participation">立即參與</string>
<string name="continuative_guardian_privilege">延續守護特權</string>
<string name="travel_renewal">前往續費</string>
<string name="congratulations_on_the_promotion">恭喜升級</string>
<string name="guard_level_has_been_reached">您的守護等級已達到123級 可以領取以下獎勵</string>
<string name="view_grade">查看等級</string>
<string name="guard_for_your_beloved_one">為心愛的TA開通守護吧</string>
<string name="due_in">還有</string>
<string name="due_in_guard">天到期</string>
<string name="continuative_guardian_privilege2">保留守護等級 重享守護特權</string>
<string name="renewal_guardian">續費守護</string>
<string name="guard_buy_tips_2">您將花費%s鑽石為主播續費</string>
<string name="participate">點擊參加</string>
<string name="send_benefits">發放福利</string>
<string name="according_to_the_rules">(原有的守護等級將會保留,剩餘有效期將按規則補充至新守護有效期中)</string>
<string name="current_guard_expires">暫時無法開通該守護,請當前守護到期後嘗試</string>
<string name="dragon_rule5">1.神龍送財是開通【神之守護】的用戶給予直播間觀眾的免費金豆福利;</string>
<string name="dragon_rule6">2.用戶關注主播並參與活動,將在倒計時五分鐘結束後瓜分活動金豆;</string>
<string name="dragon_rule7">3.此活動的最終解釋權歸PDLIVE所有。</string>
</resources>

View File

@ -1455,4 +1455,52 @@ Limited ride And limited avatar frame</string>
<string name="back_community_sure">Sure</string>
<string name="guard_buy_type_1">【Star Guardian】</string>
<string name="guardian_privilege">Guardianship privileges</string>
<string name="be_their_exclusive_guardian">Be the anchors guardian</string>
<string name="not_yet_open">Not opened</string>
<string name="tas_guardian_group">guardian group</string>
<string name="open_the_kings_guard">Activate King Guardian</string>
<string name="open_the_start_guard">Activate Star Guardian</string>
<string name="open_the_god_guard">Activate God Guardian</string>
<string name="one_month">1 month</string>
<string name="tree_month">3 month</string>
<string name="six_month">6 month</string>
<string name="one_two_month">12 month</string>
<string name="guardian_for_your_favorite_anchor">Quickly activate guardian for your favorite anchor</string>
<string name="guardian_task">Guardian Task</string>
<string name="my_graud_grade">My level ></string>
<string name="no_one_guarding_the_anchor_yet">No one is guarding the anchor yet, come and guard it now~</string>
<string name="this_week_contribution">Contribution/week</string>
<string name="contribution">Contribution</string>
<string name="have_opened">Opened</string>
<string name="dragon_sends_money">Dragon\'s Wealth</string>
<string name="please_enter_the_number_of_gold_beans">"Please enter the quantity of gold beans "</string>
<string name="please_enter_the_number_of_gold_beans_hint">"The gold beans consumed this time will increase your guardian experience points "</string>
<string name="open_an_activity">Open activity</string>
<string name="dragon_rule1">"1. Dragon's Wealth is a benefit that you provide to the audience of the live room after activating the 【God Guardian】. You can choose to customize the number of golden beans and summon Dragon God to divide the profits among the fans of the live broadcast room (the number of golden beans is not less than 1000), or you can choose not to activate the activity; "</string>
<string name="dragon_rule2">"2. The consumption of gold beans this time will be included in the guardian contribution value and experience value growth. For every 10 gold beans provided, 1 contribution value will be obtained, which can be used to increase the guardian level; "</string>
<string name="dragon_rule3">"3. Users who follow the anchor and participate in activities will receive the benefits you provide after a five minute countdown; "</string>
<string name="dragon_rule4">4. The final interpretation of this activity belongs to PDLIVE.</string>
<string name="dragon_immediate_participation">Participate</string>
<string name="continuative_guardian_privilege">Renew now to extend guardian privileges\n</string>
<string name="continuative_guardian_privilege2">Now renew and enjoy guardian privileges again\n</string>
<string name="travel_renewal">Go to renew</string>
<string name="congratulations_on_the_promotion">Congratulations</string>
<string name="guard_level_has_been_reached">Your guardian level has reached level 000</string>
<string name="view_grade">View levels</string>
<string name="guard_for_your_beloved_one">Open up guard for your beloved anchor!</string>
<string name="due_in">Due in</string>
<string name="due_in_guard">Expired</string>
<string name="renewal_guardian">Renewal Guardian</string>
<string name="guard_buy_tips_1">You will spend %s diamonds for the anchor</string>
<string name="guard_buy_tips_2">You will spend %s diamonds to renew the anchor</string>
<string name="participate">Participate</string>
<string name="send_benefits">Send benefits</string>
<string name="according_to_the_rules">(The original protection level will be retained, and the remaining validity period will be added to the new protection validity period according to the rules)</string>
<string name="current_guard_expires">We are currently unable to activate this guard. Please try again after the current guard expires</string>
<string name="dragon_rule5">1.Dragon\'s Wealth is a free golden bean benefit provided to live stream viewers by users who have activated the 【God Guardian】 feature;</string>
<string name="dragon_rule6">2.Users who follow the anchor and participate in the activity will divide the gold beans of the activity after the countdown of five minutes ends;</string>
<string name="dragon_rule7">3.The final interpretation of this activity belongs to PDLIVE.</string>
</resources>

View File

@ -4,14 +4,14 @@ ext {
buildToolsVersion: "29.0.2",
minSdkVersion : 21,
targetSdkVersion : 33,
versionCode : 464,
versionCode : 469,
versionName : "6.6.5"
]
manifestPlaceholders = [
//
serverHost : "https://napi.yaoulive.com",
// serverHost : "https://napi.yaoulive.com",
//
//serverHost : "https://ceshi.yaoulive.com",
serverHost : "https://ceshi.yaoulive.com",
//
@ -25,6 +25,6 @@ ext {
//
isUploadLog : true,
//
isPluginModel : true,
isPluginModel : false,
]
}

View File

@ -23,6 +23,8 @@ android.enableJetifier=true
systemProp.http.proxyHost=127.0.0.1
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=10809
systemProp.http.proxyPort=10809
systemProp.https.proxyPort=7890
systemProp.http.proxyPort=7890
#systemProp.https.proxyPort=10809
#systemProp.http.proxyPort=10809
#android.enableR8.fullMode=true

View File

@ -21,6 +21,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.GsonUtils;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.activity.AbsActivity;
@ -36,6 +37,8 @@ import com.yunbao.common.event.CoinChangeEvent;
import com.yunbao.common.event.FollowEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.LiveHttpConsts;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.KeyBoardHeightChangeListener;
import com.yunbao.common.manager.IMLoginManager;
@ -48,7 +51,7 @@ import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.utils.formatBigNum;
import com.yunbao.live.R;
import com.yunbao.live.bean.GuardUserBean;
import com.yunbao.live.bean.GuardUserModel;
import com.yunbao.live.bean.LiveBuyGuardMsgBean;
import com.yunbao.live.bean.LiveChatBean;
import com.yunbao.live.bean.LiveDanMuBean;
@ -64,20 +67,18 @@ import com.yunbao.live.dialog.LiveFansFragment;
import com.yunbao.live.dialog.LiveFansMedalOkDialogFragment;
import com.yunbao.live.dialog.LiveGiveHotDialogFragment;
import com.yunbao.live.dialog.LiveGuardBuyDialogFragment;
import com.yunbao.live.dialog.LiveGuardDialog;
import com.yunbao.live.dialog.LiveGuardDialogFragment;
import com.yunbao.live.dialog.LiveInputDialogFragment;
import com.yunbao.live.dialog.LiveMicAnchorDialogFragment;
import com.yunbao.live.dialog.LiveMoreDialogFragment;
import com.yunbao.live.dialog.LiveNewGuardBuyDialogFragment;
import com.yunbao.live.dialog.LiveNewGuardListDialogFragment;
import com.yunbao.live.dialog.LiveRedPackListDialogFragment;
import com.yunbao.live.dialog.LiveRedPackSendDialogFragment;
import com.yunbao.live.dialog.LiveShareDialogFragment;
import com.yunbao.live.dialog.LiveUserAnchorMailBoxPopDialog;
import com.yunbao.live.dialog.LiveUserDialogFragment;
import com.yunbao.live.dialog.LiveUserMoreDialogFragment;
import com.yunbao.common.http.LiveHttpConsts;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.live.presenter.LiveLinkMicAnchorPresenter;
import com.yunbao.live.presenter.LiveLinkMicPkPresenter;
import com.yunbao.live.presenter.LiveLinkMicPresenter;
@ -734,7 +735,8 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
}
}
public Handler mHandler = new Handler();
public Handler mHandler = new Handler();
public pkRunnable pr;
public class pkRunnable implements Runnable {
@ -1265,22 +1267,26 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
if (uid == null) {
uid = mLiveUid;
}
MobclickAgent.onEvent(mContext, "guardian_people", "守护席点击次数及人数");
LiveHttpUtil.getGuardList(uid, 1, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
List<GuardUserBean> list = JSON.parseArray(Arrays.toString(info), GuardUserBean.class);
List<GuardUserModel> list = JSON.parseArray(Arrays.toString(info), GuardUserModel.class);
Log.e("getGuardList", list.toString());
if (list.isEmpty()) {
openNewBuyGuardWindow(true);
// openNewBuyGuardWindow(true);
new LiveGuardDialog(mContext, true,mLiveUid,mStream).showDialog();
} else {
LiveNewGuardListDialogFragment fragment = new LiveNewGuardListDialogFragment();
fragment.setList(list);
fragment.setLiveGuardInfo(mLiveGuardInfo);
Bundle bundle = new Bundle();
bundle.putString(Constants.LIVE_UID, mLiveUid);
bundle.putBoolean(Constants.ANCHOR, mIsAnchor);
bundle.putBoolean("showBuyView", !showBuyView);
fragment.setArguments(bundle);
fragment.show(getSupportFragmentManager(), "LiveGuardDialogFragment");
// LiveNewGuardDialogFragment fragment = new LiveNewGuardDialogFragment();
// fragment.setList(list);
// fragment.setLiveGuardInfo(mLiveGuardInfo);
// Bundle bundle = new Bundle();
// bundle.putString(Constants.LIVE_UID, mLiveUid);
// bundle.putBoolean(Constants.ANCHOR, mIsAnchor);
// bundle.putBoolean("showBuyView", !showBuyView);
// fragment.setArguments(bundle);
// fragment.show(getSupportFragmentManager(), "LiveGuardDialogFragment");
new LiveGuardDialog(mContext, false,mLiveUid,mStream).showDialog();
}
}
});

View File

@ -45,6 +45,7 @@ import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.CrashSaveBean;
import com.yunbao.common.bean.CustomSidebarChildModel;
import com.yunbao.common.bean.GuardMaturityDateRemindModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.LiveBean;
@ -52,6 +53,7 @@ import com.yunbao.common.bean.LiveGiftBean;
import com.yunbao.common.bean.LiveRoomVoteModel;
import com.yunbao.common.bean.LiveUserGiftBean;
import com.yunbao.common.bean.LiveUserMailBoxModel;
import com.yunbao.common.bean.SendMoneyLongModel;
import com.yunbao.common.bean.SlideInfoModel;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.EffectsSettingsDialog;
@ -71,6 +73,7 @@ import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.NewRoleCustomDrawerPopupEvent;
import com.yunbao.common.event.QuickGiftingEvent;
import com.yunbao.common.event.SendMoneyLongEndEvent;
import com.yunbao.common.event.ShowHideEvent;
import com.yunbao.common.event.SlideEvent;
import com.yunbao.common.glide.ImgLoader;
@ -108,6 +111,8 @@ import com.yunbao.live.adapter.VerticalPagerAdapter;
import com.yunbao.live.bean.ImUserBean;
import com.yunbao.live.bean.LiveChatBean;
import com.yunbao.live.bean.LiveGuardInfo;
import com.yunbao.live.bean.NewAllServerNotifyGuardEvent;
import com.yunbao.live.dialog.DragonExpirePopup;
import com.yunbao.live.dialog.LiveFansFragment;
import com.yunbao.live.dialog.LiveGameDialogFragment;
import com.yunbao.live.dialog.LiveGiftPopup;
@ -865,7 +870,7 @@ public class LiveAudienceActivity extends LiveActivity {
if (!TextUtils.isEmpty(event.getMethod())) {
if (TextUtils.equals(event.getMethod(), "closeLiveRoom")) {
onBackPressed();
}else if (TextUtils.equals(event.getMethod(), "androidtoCommunityVideo")) {
} else if (TextUtils.equals(event.getMethod(), "androidtoCommunityVideo")) {
RouteUtil.forwardCommunityActivity();
}
}
@ -957,6 +962,8 @@ public class LiveAudienceActivity extends LiveActivity {
} else if (TextUtils.equals(event.getRightsInterests(), getString(com.yunbao.common.R.string.guard_guard))) {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.GUARD));
manager.onGuardRed();
//跳转粉丝团
} else if (TextUtils.equals(event.getRightsInterests(), getString(com.yunbao.common.R.string.fan_club))) {
Bus.get().post(new LiveAudienceEvent()
@ -1476,6 +1483,11 @@ public class LiveAudienceActivity extends LiveActivity {
manager.showXydComplete(event.getXydCompleteModel(), event.getLiveReceiveGiftBean());
}
break;
case GuardSpecialEffect:
if (manager != null) {
manager.guardSpecialEffect(event.getLiveReceiveGiftBean());
}
break;
case VOTE_CREATE:
case VOTE_UPDATE:
LiveRoomVoteModel voteModel = new LiveRoomVoteModel();
@ -1840,6 +1852,7 @@ public class LiveAudienceActivity extends LiveActivity {
} else if (TextUtils.equals(event.getRightsInterests(), getString(com.yunbao.common.R.string.guard_guard))) {
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.GUARD));
manager.onGuardRed();
//跳转粉丝团
} else if (TextUtils.equals(event.getRightsInterests(), getString(com.yunbao.common.R.string.fan_club))) {
Bus.get().post(new LiveAudienceEvent()
@ -1888,7 +1901,7 @@ public class LiveAudienceActivity extends LiveActivity {
if (isShow) {
manager.mLiveAudienceViewHolder.mRedPointPrivilege.setVisibility(View.VISIBLE);
} else {
if (IMLoginManager.get(mContext).getRedPoint()) {
if (IMLoginManager.get(mContext).getRedPoint() || IMLoginManager.get(mContext).getGuardRedPoint()) {
manager.mLiveAudienceViewHolder.mRedPointPrivilege.setVisibility(View.VISIBLE);
} else {
manager.mLiveAudienceViewHolder.mRedPointPrivilege.setVisibility(View.GONE);
@ -1909,6 +1922,48 @@ public class LiveAudienceActivity extends LiveActivity {
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onGuardMaturityDateRemind(GuardMaturityDateRemindModel maturityDateRemindModel) {
Log.e("DateRemindModel", maturityDateRemindModel.toString());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
new XPopup.Builder(mContext)
.asCustom(new DragonExpirePopup(mContext, mLiveUid, maturityDateRemindModel, mStream))
.show();
}
}, 3000);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSendMoneyLongModel(SendMoneyLongModel sendMoneyLongModel) {
Log.e("DateRemindModel", sendMoneyLongModel.toString());
if (manager != null) {
manager.onSendMoneyLongModel(sendMoneyLongModel);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onNewAllServerNotifyGuardEvent(NewAllServerNotifyGuardEvent event) {
if (manager != null) {
manager.buyGuardNew(event);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSendMoneyLongEndEvent(SendMoneyLongEndEvent sendMoneyLongModel) {
Log.e("DateRemindModel", sendMoneyLongModel.toString());
if (manager != null) {
manager.onSendMoneyLongEndEvent(sendMoneyLongModel);
}
}
/**
* 检查消息有未读就要显示红点
*/

View File

@ -48,12 +48,14 @@ import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.bean.LiveUserGiftBean;
import com.yunbao.common.bean.MicUserBean;
import com.yunbao.common.bean.SendMoneyLongModel;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.NotCancelableDialog;
import com.yunbao.common.event.GiftWallIlluminateEvent;
import com.yunbao.common.event.LiveSudGamePopupShowOrHideEvent;
import com.yunbao.common.event.LoginInvalidEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.event.SendMoneyLongEndEvent;
import com.yunbao.common.event.ShowHideEvent;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
@ -1709,9 +1711,27 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
liveInputDialogFragment.setArguments(liveInputBundle);
liveInputDialogFragment.show(getSupportFragmentManager(), "LiveInputDialogFragment");
break;
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSendMoneyLongModel(SendMoneyLongModel sendMoneyLongModel) {
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.onSendMoneyLongModel(sendMoneyLongModel);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSendMoneyLongEndEvent(SendMoneyLongEndEvent sendMoneyLongModel) {
Log.e("DateRemindModel", sendMoneyLongModel.toString());
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.onSendMoneyLongEndEvent(sendMoneyLongModel);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void GiftWallIlluminateEvent(GiftWallIlluminateEvent event) {
if (mLiveRoomViewHolder != null) {

View File

@ -0,0 +1,90 @@
package com.yunbao.live.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
public class LiveBuyGuardTopListAdapter extends RecyclerView.Adapter<LiveBuyGuardTopListAdapter.ViewHolder>{
private Context mContext;
public LiveBuyGuardTopListAdapter(Context mContext) {
this.mContext = mContext;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.view_vp_live_buy_guard,parent,false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.bind(position);
}
@Override
public int getItemCount() {
return 3;
}
public class ViewHolder extends RecyclerView.ViewHolder{
ImageView imageView;
public ViewHolder(android.view.View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.bg);
Log.i("测试","");
itemView.setFocusable(true);
itemView.setFocusableInTouchMode(true);
itemView.getViewTreeObserver().addOnGlobalFocusChangeListener(new ViewTreeObserver.OnGlobalFocusChangeListener(){
@Override
public void onGlobalFocusChanged(View view, View view1) {
Log.i("测试","焦点变换:"+view+"|"+getAbsoluteAdapterPosition());
}
});
/* itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
Log.i("测试","焦点变换:"+b+"|"+getAbsoluteAdapterPosition());
}
});*/
}
public void bind(int position) {
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) itemView.getLayoutParams();
int def=15;
int margin=15;
int marginDef=5;
if(position==0){
params.leftMargin=DpUtil.dp2px(margin);
params.rightMargin=DpUtil.dp2px(marginDef);
}else if(position==getItemCount()-1){
params.rightMargin=DpUtil.dp2px(margin);
params.leftMargin=DpUtil.dp2px(marginDef);
}else{
params.leftMargin=DpUtil.dp2px(def);
params.rightMargin=DpUtil.dp2px(def);
}
itemView.setLayoutParams(params);
itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
System.out.println("~~~~~~~焦点 "+b);
}
});
}
}
}

Some files were not shown because too many files have changed in this diff Show More