Compare commits

..

77 Commits

Author SHA1 Message Date
4a5e581978 新增战令购买经验对话框经验条上加入经验文本 2024-01-05 13:57:55 +08:00
8a7b65955c Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2024-01-05 13:57:16 +08:00
18401019693
3445ee2a56 修改信件未读消息请求方式 2024-01-05 13:29:01 +08:00
cf2274195f Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2024-01-04 18:19:23 +08:00
18401019693
aad607ace8 删除老的用户等级主播等级的图标 2024-01-04 15:07:12 +08:00
17506f6cbf Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2024-01-04 10:36:22 +08:00
18401019693
418073f07e Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2024-01-04 10:35:51 +08:00
18401019693
319295de57 接口 改造 2024-01-04 10:35:42 +08:00
30bdf83724 调整PK天梯赛信息更新由接口转为IM推送 2024-01-02 15:42:55 +08:00
fbb801bf62 调整战令接口
调整战令购买等级最大值
新增战令统计直播间发送消息接口
2023-12-26 18:24:46 +08:00
18401019693
44601c74b4 隐藏测试按钮 2023-12-23 16:39:58 +08:00
2808e41288 修复测试反馈问题 2023-12-23 14:14:32 +08:00
05aea2448f 修复测试反馈问题 2023-12-23 11:01:28 +08:00
34986d6897 修复测试反馈问题 2023-12-23 09:59:30 +08:00
924afce81e Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-22 14:32:33 +08:00
48dcfd4a04 新增战令系统 2023-12-22 14:32:18 +08:00
18401019693
163ab1c80d 隐藏测试按钮 2023-12-22 13:36:09 +08:00
e06f944def Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-22 10:08:35 +08:00
18401019693
a5d546d1d1 兑换奖励接口 2023-12-22 10:07:47 +08:00
1304ec6cde Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-21 16:26:04 +08:00
18401019693
f46d14ce28 购买经验 2023-12-21 15:24:43 +08:00
e2005582fe 修复活动弹窗重影问题 2023-12-21 10:22:36 +08:00
a56a5849fe Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-20 17:49:30 +08:00
18401019693
1495bfee99 兌換詳情弹窗 2023-12-20 17:37:18 +08:00
19eecd7022 Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-20 17:16:31 +08:00
18401019693
d415efde35 战令等级添加参数 2023-12-20 16:36:13 +08:00
61ee585ae9 Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-20 16:27:44 +08:00
18401019693
7b103aaf7c 添加开通接口弹窗回调添加 2023-12-20 16:27:22 +08:00
18401019693
9eba98f709 添加开通接口弹窗回调添加 2023-12-20 16:26:24 +08:00
dea3264577 Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-20 16:17:37 +08:00
18401019693
42cfcce1dc 添加开通接口弹窗回调添加 2023-12-20 15:28:41 +08:00
18401019693
ac78268a85 活动结束弹窗 2023-12-19 15:59:55 +08:00
d001712067 Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-18 16:54:05 +08:00
18401019693
dc28a3d81e zhanling dengji 2023-12-18 16:53:37 +08:00
728dec9d97 Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-18 16:34:19 +08:00
18401019693
215a2f8927 战令等级 2023-12-18 15:18:42 +08:00
58ace7d613 Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-15 09:49:17 +08:00
18401019693
3982afb0d3 弹窗整合 2023-12-14 17:39:05 +08:00
18401019693
280920d5f0 弹窗整合 2023-12-14 17:28:49 +08:00
18401019693
e353638ec1 開通精英戰令 2023-12-14 14:49:45 +08:00
18401019693
65a3a64d7d 战令规则页面弹窗 2023-12-14 10:52:44 +08:00
b10312118b Merge remote-tracking branch 'origin/dev_6.6.4_战令' into dev_6.6.4_战令 2023-12-12 17:59:09 +08:00
18401019693
419b5d08b4 升級精英/尊享戰令弹窗 2023-12-12 17:43:12 +08:00
18401019693
b146f93029 添加弹窗,弹窗通用背景 2023-12-12 16:59:33 +08:00
18401019693
ef34a6cf4f 添加弹窗,弹窗通用背景 2023-12-12 16:36:31 +08:00
cdf3c4e411 调整弹窗显示 2023-12-12 13:51:02 +08:00
18401019693
d0b7b065b2 修改 测试问题 2023-12-07 18:18:27 +08:00
53e6cb5a70 新增首页弹窗更多条件控制 2023-12-07 18:01:48 +08:00
18401019693
5895fa8d71 修改 测试问题 2023-12-07 17:38:38 +08:00
hch
48886374d5 修复支付弹窗问题 2023-12-07 17:31:08 +08:00
18401019693
32d0fe497d 修改 测试问题 2023-12-07 16:29:28 +08:00
18401019693
6347473d0c 修改 测试问题 2023-12-07 13:24:41 +08:00
6df819f3b1 Merge remote-tracking branch 'origin/master' 2023-12-07 13:20:24 +08:00
39fbe90e8b Merge branch 'dev_6.6.3' 2023-12-07 13:19:53 +08:00
18401019693
3396ca63d0 修改 测试问题 2023-12-07 13:17:12 +08:00
8c5ae3b61a 新增首页弹窗更多条件控制 2023-12-07 13:04:41 +08:00
18401019693
484891cfe7 修改 测试问题 2023-12-06 17:13:14 +08:00
18401019693
5c00e065d2 Merge remote-tracking branch 'origin/dev_6.6.3'
# Conflicts:
#	common/src/main/java/com/yunbao/common/bean/IMLoginModel.java
#	config.gradle
2023-12-06 15:20:39 +08:00
18401019693
2857bb09a2 修改 测试问题 2023-12-06 15:18:42 +08:00
18401019693
79c1c01003 修改 测试问题 2023-12-06 13:45:37 +08:00
a2864187ed update 2023-12-06 13:42:10 +08:00
ef76b2c7e4 修复主页classtab可能为空导致的闪退问题(报错平台反馈) 2023-12-06 13:17:13 +08:00
18401019693
05e7c4ffdd 修改 测试问题 2023-12-05 18:28:53 +08:00
18401019693
b4b1efe730 修改 测试问题 2023-12-05 09:27:47 +08:00
0c7ae4e4f7 update 2023-12-04 18:19:22 +08:00
hch
b35d5d242e 修复支付弹窗问题 2023-12-01 13:33:49 +08:00
b8264997f4 修复礼物弹框闪退问题 2023-12-01 13:11:08 +08:00
18401019693
2ab1b31a94 修改 测试问题 2023-11-30 16:47:47 +08:00
18401019693
f1645cf72c 修改 测试问题 2023-11-30 15:18:28 +08:00
18401019693
cd35b9e40f 短剧 2023-11-30 14:37:16 +08:00
18401019693
33bce43737 短剧 2023-11-30 14:34:45 +08:00
18401019693
1f8025599b 小礼物逻辑上传 2023-11-30 10:45:45 +08:00
18401019693
71a7b47d42 修改语音连麦的逻辑 2023-11-27 17:00:30 +08:00
18401019693
59446d2518 小礼物逻辑第4次上传 2023-11-27 15:40:10 +08:00
18401019693
8a8a7a8326 小礼物逻辑第san次上传 2023-11-27 10:38:20 +08:00
18401019693
089b1881f1 小礼物逻辑第er次上传 2023-11-25 13:54:31 +08:00
18401019693
7b1f3ddd79 小礼物逻辑第一次上传 2023-11-24 13:41:21 +08:00
250 changed files with 7637 additions and 808 deletions

View File

@@ -166,21 +166,21 @@ android {
}
}
variant.outputs.all {
def isGoogle = "link"
def isGoogle = "链接"
if (rootProject.ext.manifestPlaceholders.isGooglePlay == 1) {
isGoogle = "Google"
isGoogle = "谷歌"
} else if (rootProject.ext.manifestPlaceholders.isGooglePlay == 2) {
isGoogle = "Huawei"
}
def isPlugin = "all"
def isPlugin = "完整"
if (rootProject.ext.manifestPlaceholders.isPluginModel) {
isPlugin = "plugin"
isPlugin = "插件"
}
def isTest = "测试服"
if (rootProject.ext.manifestPlaceholders.serverHost == "https://napi.yaoulive.com") {
isTest = "正式服"
}
outputFileName = "[${new Date().format("yyyy-MM-dd HHmmss", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${isGoogle}-${isPlugin}-${variant.buildType.name}-${isTest}.apk"
outputFileName = "[${new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("GMT+8"))}]PDLive-${defaultConfig.versionName}-${isGoogle}-${isPlugin}-${variant.buildType.name}-${isTest}.apk"
}
}

View File

@@ -191,7 +191,7 @@ dependencies {
api 'com.github.princekin-f:EasyFloat:2.0.4'
api files('libs/Msc.jar')
api 'com.github.li-xiaojun:XPopup:2.9.1'
api 'com.github.li-xiaojun:XPopup:2.10.0'
api 'com.github.shenbengit:PagerGridLayoutManager:1.1.7'
//选择器

View File

@@ -12,7 +12,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.bean.ConfigBean;
import com.yunbao.common.bean.FansMedalBean;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.bean.UserItemBean;
import com.yunbao.common.http.CommonHttpUtil;
@@ -29,7 +28,6 @@ import java.util.Map;
/**
* Created by cxf on 2017/8/4.
*/
public class CommonAppConfig {
//域名
public static final String HOST = getMetaDataString("SERVER_HOST");
@@ -109,8 +107,6 @@ public class CommonAppConfig {
private boolean mLaunched;//App是否启动了
private String mJPushAppKey;//极光推送的AppKey
private List<UserItemBean> mUserItemList;//个人中心功能列表
private SparseArray<LevelBean> mLevelMap;
private SparseArray<LevelBean> mAnchorLevelMap;
private SparseArray<FansMedalBean> mAnchorFansMedalMap;
private String mGiftListJson;
private String mWrapListJson;
@@ -521,46 +517,6 @@ public class CommonAppConfig {
}
/**
* 保存用户等级信息
*/
public void setLevel(String levelJson) {
if (TextUtils.isEmpty(levelJson)) {
return;
}
List<LevelBean> list = JSON.parseArray(levelJson, LevelBean.class);
if (list == null || list.size() == 0) {
return;
}
if (mLevelMap == null) {
mLevelMap = new SparseArray<>();
}
mLevelMap.clear();
for (LevelBean bean : list) {
mLevelMap.put(bean.getLevel(), bean);
}
}
/**
* 保存主播等级信息
*/
public void setAnchorLevel(String anchorLevelJson) {
if (TextUtils.isEmpty(anchorLevelJson)) {
return;
}
List<LevelBean> list = JSON.parseArray(anchorLevelJson, LevelBean.class);
if (list == null || list.size() == 0) {
return;
}
if (mAnchorLevelMap == null) {
mAnchorLevelMap = new SparseArray<>();
}
mAnchorLevelMap.clear();
for (LevelBean bean : list) {
mAnchorLevelMap.put(bean.getLevel(), bean);
}
}
/**
* 保存主播粉丝徽章信息
*/
@@ -599,40 +555,6 @@ public class CommonAppConfig {
}
/**
* 获取用户等级
*/
public LevelBean getLevel(int level) {
if (mLevelMap == null) {
String configString = SpUtil.getInstance().getStringValue(SpUtil.CONFIG);
if (!TextUtils.isEmpty(configString)) {
JSONObject obj = JSON.parseObject(configString);
setLevel(obj.getString("level"));
}
}
if (mLevelMap == null || mLevelMap.size() == 0) {
return null;
}
return mLevelMap.get(level);
}
/**
* 获取主播等级
*/
public LevelBean getAnchorLevel(int level) {
if (mAnchorLevelMap == null) {
String configString = SpUtil.getInstance().getStringValue(SpUtil.CONFIG);
if (!TextUtils.isEmpty(configString)) {
JSONObject obj = JSON.parseObject(configString);
setAnchorLevel(obj.getString("levelanchor"));
}
}
if (mAnchorLevelMap == null || mAnchorLevelMap.size() == 0) {
return null;
}
return mAnchorLevelMap.get(level);
}
public String getGiftListJson() {
return mGiftListJson;
}

View File

@@ -263,6 +263,8 @@ public class Constants {
public static final String LIVE_SDK = "liveSdk";
public static final String LIVE_KSY_CONFIG = "liveKsyConfig";
public static final String LIVE_PK_RANDOM_START="RankingStartRandomPK";
public static final int LIVE_SDK_KSY = 0;//金山推流
public static final int LIVE_SDK_TX = 1;//腾讯推流

View File

@@ -0,0 +1,175 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class BattlePassPoints extends BaseModel{
private int id;
private int type;
@SerializedName("rewards_name")
private String rewardsName;
@SerializedName("rewards_id")
private int rewardsId;
@SerializedName("image_url")
private String imageUrl;
@SerializedName("points_threshold")
private String pointsThreshold;
@SerializedName("points_threshold_text")
private String pointsThresholdText;
@SerializedName("rewards_value")
private String rewardsValue;
@SerializedName("battle_pass_level")
private int battlePassLevel;
@SerializedName("exchange_quantity")
private int exchangeQuantity;
@SerializedName("live_battle_pass_type_id")
private int liveBattlePassTypeId;
private String description;
@SerializedName("restrict_time")
private int restrictTime;
private int sort;
@SerializedName("exchange_status")
private int exchangeStatus;
@SerializedName("user_quinty_count")
private int userQuintyCount;
@SerializedName("exchange_status_remark")
private String exchangeMark;
public BattlePassPoints() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getRewardsName() {
return rewardsName;
}
public void setRewardsName(String rewardsName) {
this.rewardsName = rewardsName;
}
public int getRewardsId() {
return rewardsId;
}
public void setRewardsId(int rewardsId) {
this.rewardsId = rewardsId;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getPointsThreshold() {
return pointsThreshold;
}
public void setPointsThreshold(String pointsThreshold) {
this.pointsThreshold = pointsThreshold;
}
public String getRewardsValue() {
return rewardsValue;
}
public void setRewardsValue(String rewardsValue) {
this.rewardsValue = rewardsValue;
}
public int getBattlePassLevel() {
return battlePassLevel;
}
public void setBattlePassLevel(int battlePassLevel) {
this.battlePassLevel = battlePassLevel;
}
public int getExchangeQuantity() {
return exchangeQuantity;
}
public void setExchangeQuantity(int exchangeQuantity) {
this.exchangeQuantity = exchangeQuantity;
}
public int getLiveBattlePassTypeId() {
return liveBattlePassTypeId;
}
public void setLiveBattlePassTypeId(int liveBattlePassTypeId) {
this.liveBattlePassTypeId = liveBattlePassTypeId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getRestrictTime() {
return restrictTime;
}
public void setRestrictTime(int restrictTime) {
this.restrictTime = restrictTime;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getExchangeStatus() {
return exchangeStatus;
}
public void setExchangeStatus(int exchangeStatus) {
this.exchangeStatus = exchangeStatus;
}
public int getUserQuintyCount() {
return userQuintyCount;
}
public void setUserQuintyCount(int userQuintyCount) {
this.userQuintyCount = userQuintyCount;
}
public String getExchangeMark() {
return exchangeMark;
}
public void setExchangeMark(String exchangeMark) {
this.exchangeMark = exchangeMark;
}
public String getPointsThresholdText() {
return pointsThresholdText;
}
public void setPointsThresholdText(String pointsThresholdText) {
this.pointsThresholdText = pointsThresholdText;
}
}

View File

@@ -0,0 +1,157 @@
package com.yunbao.common.bean;
import android.content.Context;
import com.google.gson.annotations.SerializedName;
import com.yunbao.common.utils.WordUtil;
import java.util.List;
public class BattlePassTask extends BaseModel {
private List<Task> daily;// 每日任务
private List<Task> season;// 每期任务
public BattlePassTask() {
}
public List<Task> getDaily() {
return daily;
}
public void setDaily(List<Task> daily) {
this.daily = daily;
}
public List<Task> getSeason() {
return season;
}
public void setSeason(List<Task> season) {
this.season = season;
}
public static class Task {
private int id;// 任务ID
private String type;// 任务类型
@SerializedName("task_success")
private int taskSuccess;// 任务可以重复的次数
@SerializedName("name_en")
private String nameEn;// 任务名称英文
@SerializedName("remark_en")
private String remarkEn;// 任务备注英文
private String name;// 任务名称中文
private String remark; // 任务备注中文
@SerializedName("image_path")
private String imagePath;// 图标path
@SerializedName("user_task_success")
private int userTaskSuccess;// 用户完成的任务次数
@SerializedName("received_task")
private int receivedTask;// 用户已经领取的任务数量
@SerializedName("not_received_task")
private int notReceivedTask; // 用户未领取的任务数量
public boolean isBuy(){
return taskSuccess==0;
}
public String getNameText(){
return WordUtil.isNewZh()?name:nameEn;
}
public String getRemarkText(){
return WordUtil.isNewZh()?remark:remarkEn;
}
public Task() {
}
public Task(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getTaskSuccess() {
return taskSuccess;
}
public void setTaskSuccess(int taskSuccess) {
this.taskSuccess = taskSuccess;
}
public String getNameEn() {
return nameEn;
}
public void setNameEn(String nameEn) {
this.nameEn = nameEn;
}
public String getRemarkEn() {
return remarkEn;
}
public void setRemarkEn(String remarkEn) {
this.remarkEn = remarkEn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getImagePath() {
return imagePath;
}
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
public int getUserTaskSuccess() {
return userTaskSuccess;
}
public void setUserTaskSuccess(int userTaskSuccess) {
this.userTaskSuccess = userTaskSuccess;
}
public int getReceivedTask() {
return receivedTask;
}
public void setReceivedTask(int receivedTask) {
this.receivedTask = receivedTask;
}
public int getNotReceivedTask() {
return notReceivedTask;
}
public void setNotReceivedTask(int notReceivedTask) {
this.notReceivedTask = notReceivedTask;
}
}
}

View File

@@ -0,0 +1,176 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class BattlePassUserInfoBean extends BaseModel{
private String uid;
private int points;
@SerializedName("battle_pass_exp")
private int battlePassExp;
@SerializedName("battle_pass_user_records_1")
private int battlePassUserRecords1;
@SerializedName("battle_pass_user_records_2")
private int battlePassUserRecords2;
@SerializedName("battle_pass_user_records_3")
private int battlePassUserRecords3;
private int level;
@SerializedName("last_level_exp")
private int lastLevelExp;
@SerializedName("next_level_exp")
private int nextLevelExp;
private String id;
@SerializedName("battle_pass_name")
private String battlePassName;
@SerializedName("start_time")
private String startTime;
@SerializedName("end_time")
private String endTime;
@SerializedName("battle_pass_status")
private boolean battlePassStatus;
@SerializedName("max_level_exp")
private long maxLevelExp;
@SerializedName("max_level")
private int maxLevel;
private List<LiveBattlePassRewardsBean.BattlePassType> live_battle_pass_type;
public BattlePassUserInfoBean() {
}
public List<LiveBattlePassRewardsBean.BattlePassType> getLive_battle_pass_type() {
return live_battle_pass_type;
}
public void setLive_battle_pass_type(List<LiveBattlePassRewardsBean.BattlePassType> live_battle_pass_type) {
this.live_battle_pass_type = live_battle_pass_type;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public int getPoints() {
return points;
}
public void setPoints(int points) {
this.points = points;
}
public int getBattlePassExp() {
return battlePassExp;
}
public void setBattlePassExp(int battlePassExp) {
this.battlePassExp = battlePassExp;
}
public int getBattlePassUserRecords1() {
return battlePassUserRecords1;
}
public void setBattlePassUserRecords1(int battlePassUserRecords1) {
this.battlePassUserRecords1 = battlePassUserRecords1;
}
public int getBattlePassUserRecords2() {
return battlePassUserRecords2;
}
public void setBattlePassUserRecords2(int battlePassUserRecords2) {
this.battlePassUserRecords2 = battlePassUserRecords2;
}
public int getBattlePassUserRecords3() {
return battlePassUserRecords3;
}
public void setBattlePassUserRecords3(int battlePassUserRecords3) {
this.battlePassUserRecords3 = battlePassUserRecords3;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getLastLevelExp() {
return lastLevelExp;
}
public void setLastLevelExp(int lastLevelExp) {
this.lastLevelExp = lastLevelExp;
}
public int getNextLevelExp() {
return nextLevelExp;
}
public void setNextLevelExp(int nextLevelExp) {
this.nextLevelExp = nextLevelExp;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBattlePassName() {
return battlePassName;
}
public void setBattlePassName(String battlePassName) {
this.battlePassName = battlePassName;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public boolean isBattlePassStatus() {
return battlePassStatus;
}
public void setBattlePassStatus(boolean battlePassStatus) {
this.battlePassStatus = battlePassStatus;
}
public long getMaxLevelExp() {
return maxLevelExp;
}
public void setMaxLevelExp(long maxLevelExp) {
this.maxLevelExp = maxLevelExp;
}
public int getMaxLevel() {
return maxLevel;
}
public void setMaxLevel(int maxLevel) {
this.maxLevel = maxLevel;
}
}

View File

@@ -0,0 +1,24 @@
package com.yunbao.common.bean;
public class CoolConfig extends BaseModel {
private int rate=1;
private String ticketCount="0" ;
public String getTicketCount() {
return ticketCount;
}
public CoolConfig setTicketCount(String ticketCount) {
this.ticketCount = ticketCount;
return this;
}
public int getRate() {
return rate;
}
public CoolConfig setRate(int rate) {
this.rate = rate;
return this;
}
}

View File

@@ -39,6 +39,28 @@ public class EnterRoomNewModel extends BaseModel {
private String sudGameRoomName;
@SerializedName("sud_gameDate")
private SudGameDateModel sudGameDateModel;
@SerializedName("quick_gift_remaining_quantity")
private int quickGiftRemainingQuantity;//剩余的小PD礼物数量
@SerializedName("if_viewing_duration_complete")
private int ifViewingDurationComplete;//通过观看时间获取小PD礼物的次数
public int getQuickGiftRemainingQuantity() {
return quickGiftRemainingQuantity;
}
public EnterRoomNewModel setQuickGiftRemainingQuantity(int quickGiftRemainingQuantity) {
this.quickGiftRemainingQuantity = quickGiftRemainingQuantity;
return this;
}
public int getIfViewingDurationComplete() {
return ifViewingDurationComplete;
}
public EnterRoomNewModel setIfViewingDurationComplete(int ifViewingDurationComplete) {
this.ifViewingDurationComplete = ifViewingDurationComplete;
return this;
}
public SudGameDateModel getSudGameDateModel() {
return sudGameDateModel;

View File

@@ -204,7 +204,7 @@ public class IMLoginModel extends BaseModel {
@SerializedName("votes")
private String votes;
@SerializedName("yuanbao")
private long yuanbao;
private String yuanbao;
@SerializedName("list")
private List<List<ListModel>> list;
@SerializedName("slide")
@@ -825,11 +825,11 @@ public class IMLoginModel extends BaseModel {
return this;
}
public long getYuanbao() {
public String getYuanbao() {
return yuanbao;
}
public IMLoginModel setYuanbao(long yuanbao) {
public IMLoginModel setYuanbao(String yuanbao) {
this.yuanbao = yuanbao;
return this;
}

View File

@@ -0,0 +1,162 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import java.util.Map;
public class LiveBattlePassRewardsBean extends BaseModel{
private int level;
private List<BattlePassType> live_battle_pass_type;
private Map<Integer,Map<Integer,LiveBattlePassReward>> live_battle_pass_rewards;
public LiveBattlePassRewardsBean() {
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public List<BattlePassType> getLive_battle_pass_type() {
return live_battle_pass_type;
}
public void setLive_battle_pass_type(List<BattlePassType> live_battle_pass_type) {
this.live_battle_pass_type = live_battle_pass_type;
}
public Map<Integer,Map<Integer,LiveBattlePassReward>> getLive_battle_pass_rewards() {
return live_battle_pass_rewards;
}
public void setLive_battle_pass_rewards(Map<Integer,Map<Integer,LiveBattlePassReward>> live_battle_pass_rewards) {
this.live_battle_pass_rewards = live_battle_pass_rewards;
}
public static class BattlePassType extends BaseModel{
private int id;
private String battle_pass_name;
private int sort;
private int diamond_value;
private int lock;
public BattlePassType() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBattle_pass_name() {
return battle_pass_name;
}
public void setBattle_pass_name(String battle_pass_name) {
this.battle_pass_name = battle_pass_name;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getDiamond_value() {
return diamond_value;
}
public void setDiamond_value(int diamond_value) {
this.diamond_value = diamond_value;
}
public int getLock() {
return lock;
}
public void setLock(int lock) {
this.lock = lock;
}
}
public static class LiveBattlePassReward extends BaseModel{
private int id;
@SerializedName("live_battle_pass_level")
private int liveBattlePassLevel;
@SerializedName("live_battle_pass_type_id")
private int liveBattlePassTypeId;
@SerializedName("reward_name")
private String rewardName;
@SerializedName("image_url")
private String imageUrl;
private int lock;
private int received;
public LiveBattlePassReward() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getLiveBattlePassLevel() {
return liveBattlePassLevel;
}
public void setLiveBattlePassLevel(int liveBattlePassLevel) {
this.liveBattlePassLevel = liveBattlePassLevel;
}
public int getLiveBattlePassTypeId() {
return liveBattlePassTypeId;
}
public void setLiveBattlePassTypeId(int liveBattlePassTypeId) {
this.liveBattlePassTypeId = liveBattlePassTypeId;
}
public String getRewardName() {
return rewardName;
}
public void setRewardName(String rewardName) {
this.rewardName = rewardName;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public int getLock() {
return lock;
}
public void setLock(int lock) {
this.lock = lock;
}
public int getReceived() {
return received;
}
public void setReceived(int received) {
this.received = received;
}
}
}

View File

@@ -0,0 +1,14 @@
package com.yunbao.common.bean;
public class NativeCallbackModel extends BaseModel{
private String uid ;
public String getUid() {
return uid;
}
public NativeCallbackModel setUid(String uid) {
this.uid = uid;
return this;
}
}

View File

@@ -17,14 +17,17 @@ public class OpenAdModel extends BaseModel {
public static final int MODEL_SQUARE = 1;//正方形
public static final int MODEL_RECTANGLE = 2;//长方形
public static final int MODEL_BOTTOM = 3;//底部
public static final int SHOW_DEF = 1;//1. 杀死程序后弹出;
public static final int SHOW_DIY = 2;//2. 自定义时间自上次弹出弹窗后00:00小时范围00:01小时-48:00小时后再弹出到时间后也需满足触发条件再弹出
public static final int SHOW_ONE = 3;//3. 仅弹出一次;
@SerializedName("id")
private int id;
@SerializedName("popup_location")
private int type = TYPE_HOME;
@SerializedName("activity_url")
private String url;
private String url;//点击跳转url
@SerializedName("image_url")
private String imageUrl;
private String imageUrl;//图片url
@SerializedName("display_time")
private int showTime; //持续展示时间
@SerializedName("delay_show_time")
@@ -37,11 +40,48 @@ public class OpenAdModel extends BaseModel {
private String endTime;//活动结束时间
@SerializedName("popup_permission")
private int permission;
@SerializedName("popup_frequency")
private int showModel = SHOW_DEF;//显示模式1杀死程序后弹出 2指定时间内本机时间 31. 仅弹出一次
@SerializedName("popup_frequency_time")
private String section = "0";// SHOW_DEF = 2
public OpenAdModel() {
}
public static OpenAdModel createTestData() {
OpenAdModel model = new OpenAdModel();
model.id=3;
model.type=1;
model.url = "/h5/GuildTournament/20230821/rank.html";
model.imageUrl = "https://ceshi.yaoulive.com/data/upload/20230913/1694589490.png";
model.showTime = 10;
model.delayShowTime = 0;
model.model = MODEL_SQUARE;
model.startTime = "2019-01-01 00:00:00";
model.endTime = "2029-01-01 00:00:00";
model.permission = 4;
model.showModel = SHOW_DIY;
model.section = "5";
return model;
}
public int getShowModel() {
return showModel;
}
public void setShowModel(int showModel) {
this.showModel = showModel;
}
public String getSection() {
return section;
}
public void setSection(String section) {
this.section = section;
}
public int getType() {
return type;
}

View File

@@ -0,0 +1,39 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
public class QuickGiftSendGiftModel extends BaseModel {
@SerializedName("quick_gift_remaining_quantity")
private int quickGiftRemainingQuantity;//剩余的小PD礼物数量
@SerializedName("if_viewing_duration_complete")
private int ifViewingDurationComplete;//通过观看时间获取小PD礼物的次数
@SerializedName("if_hidden_egg")
private int ifHiddenEgg = 1;//1.未解锁 2.已解锁过奖励 3.当前请求解锁了奖励
public int getIfHiddenEgg() {
return ifHiddenEgg;
}
public QuickGiftSendGiftModel setIfHiddenEgg(int ifHiddenEgg) {
this.ifHiddenEgg = ifHiddenEgg;
return this;
}
public int getQuickGiftRemainingQuantity() {
return quickGiftRemainingQuantity;
}
public QuickGiftSendGiftModel setQuickGiftRemainingQuantity(int quickGiftRemainingQuantity) {
this.quickGiftRemainingQuantity = quickGiftRemainingQuantity;
return this;
}
public int getIfViewingDurationComplete() {
return ifViewingDurationComplete;
}
public QuickGiftSendGiftModel setIfViewingDurationComplete(int ifViewingDurationComplete) {
this.ifViewingDurationComplete = ifViewingDurationComplete;
return this;
}
}

View File

@@ -0,0 +1,88 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.content.Context;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.utils.DeviceUtils;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class ActivateEliteBattleOrderPopupWindow extends CenterPopupView {
private boolean elites;//是否精英战令
private String spendMoney;//花费钱
private View buttonWarOrder;
private LiberalBattlePassPopupWindow.LiberalBattlePassCallback mPassCallback;
private String mBattlePassTypeId;
public ActivateEliteBattleOrderPopupWindow(@NonNull Context context, String mSpendMoney,
boolean elites,
LiberalBattlePassPopupWindow.LiberalBattlePassCallback passCallback
, String battlePassTypeId) {
super(context);
this.elites = elites;
spendMoney = mSpendMoney;
mPassCallback=passCallback;
mBattlePassTypeId = battlePassTypeId;
}
@Override
protected int getImplLayoutId() {
return R.layout.activate_elite_battle_order_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
buttonWarOrder = findViewById(R.id.button_war_order);
if (elites) {
findViewById(R.id.gift_overvalue).setVisibility(VISIBLE);
findViewById(R.id.gift_overvalue3).setVisibility(GONE);
findViewById(R.id.enjoy_image).setVisibility(GONE);
findViewById(R.id.elites_image).setVisibility(VISIBLE);
findViewById(R.id.gift_overvalue).setVisibility(VISIBLE);
((TextView)findViewById(R.id.gift3_text)).setText(WordUtil.getNewString(R.string.unlock_more_gifts));
} else {
findViewById(R.id.gift_overvalue).setVisibility(GONE);
findViewById(R.id.gift_overvalue3).setVisibility(VISIBLE);
findViewById(R.id.enjoy_image).setVisibility(VISIBLE);
findViewById(R.id.elites_image).setVisibility(GONE);
findViewById(R.id.gift_overvalue).setVisibility(GONE);
((TextView)findViewById(R.id.gift3_text)).setText(WordUtil.getNewString(R.string.unlock_more_gifts2));
}
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.war_order_close), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
//中文按钮文字
((TextView)findViewById(R.id.button_war_order_text)).setText(spendMoney);
ViewClicksAntiShake.clicksAntiShake(buttonWarOrder, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
new XPopup.Builder(getContext())
.enableDrag(false)
.maxWidth(DeviceUtils.getScreenHeight((Activity) getContext()) - DpUtil.dp2px(34))
.asCustom(new LiberalBattlePassPopupWindow(getContext(), spendMoney, elites,mPassCallback,mBattlePassTypeId))
.show();
}
});
}
}

View File

@@ -0,0 +1,35 @@
package com.yunbao.common.dialog;
import android.content.Context;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
/**
* 活动结束
*/
public class ActivityEndPopupWindow extends CenterPopupView {
public ActivityEndPopupWindow(@NonNull Context context) {
super(context);
}
@Override
protected int getImplLayoutId() {
return R.layout.activity_end_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.confirm), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
}
}

View File

@@ -0,0 +1,101 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.math.BigDecimal;
public class CinemaTicketPopupWindow extends CenterPopupView {
private CoolConfig mCoolConfig;
private TextView cinemaTicket, ticketsPlusMinus, quantityNeed;
private int ticket = 1;
private CinemaTicketPopupWindowCallBack mCinemaTicketPopupWindowCallBack;
public CinemaTicketPopupWindow(@NonNull Context context, CoolConfig coolConfig, CinemaTicketPopupWindowCallBack cinemaTicketPopupWindowCallBack) {
super(context);
mCoolConfig = coolConfig;
mCinemaTicketPopupWindowCallBack = cinemaTicketPopupWindowCallBack;
}
@Override
protected int getImplLayoutId() {
return R.layout.cinema_ticket_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
cinemaTicket = findViewById(R.id.cinema_ticket);
ticketsPlusMinus = findViewById(R.id.tickets_plus_minus);
quantityNeed = findViewById(R.id.quantity_need);
cinemaTicket.setText(new BigDecimal(ticket).add(new BigDecimal(mCoolConfig.getTicketCount())).toString());
ticketsPlusMinus.setText(String.valueOf(ticket));
quantityNeed.setText(new BigDecimal(ticket).multiply(new BigDecimal(mCoolConfig.getRate())).toString());
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.cinema_ticket_close), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
findViewById(R.id.sub).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (ticket > 1) {
ticket = ticket - 1;
cinemaTicket.setText(new BigDecimal(ticket).add(new BigDecimal(mCoolConfig.getTicketCount())).toString());
ticketsPlusMinus.setText(String.valueOf(ticket));
quantityNeed.setText(new BigDecimal(ticket).multiply(new BigDecimal(mCoolConfig.getRate())).toString());
}
}
});
findViewById(R.id.add).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
ticket = ticket + 1;
cinemaTicket.setText(new BigDecimal(ticket).add(new BigDecimal(mCoolConfig.getTicketCount())).toString());
ticketsPlusMinus.setText(String.valueOf(ticket));
quantityNeed.setText(new BigDecimal(ticket).multiply(new BigDecimal(mCoolConfig.getRate())).toString());
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.cinema_ticket_exchange), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext())
.buyTicket(String.valueOf(ticket), new HttpCallback<String>() {
@Override
public void onSuccess(String data) {
if (mCinemaTicketPopupWindowCallBack != null) {
mCinemaTicketPopupWindowCallBack.onCallBack(data);
}
dialog.dismiss();
}
@Override
public void onError(String error) {
ToastUtil.show(error);
}
});
}
});
}
public interface CinemaTicketPopupWindowCallBack {
void onCallBack(String data);
}
}

View File

@@ -0,0 +1,98 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.graphics.Color;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class LiberalBattlePassPopupWindow extends CenterPopupView {
private String spendMoney;//花费钱
private boolean mElites;//是否精英战令
private TextView liberalBattlePass;
private LiberalBattlePassCallback mPassCallback;
private String mBattlePassTypeId;
public LiberalBattlePassPopupWindow(@NonNull Context context, String mSpendMoney, boolean elites, LiberalBattlePassCallback passCallback, String battlePassTypeId) {
super(context);
spendMoney = mSpendMoney;
mElites = elites;
mPassCallback = passCallback;
mBattlePassTypeId = battlePassTypeId;
}
protected int getImplLayoutId() {
return R.layout.liberal_battle_pass_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
liberalBattlePass = findViewById(R.id.liberal_battle_pass);
//中文版
StringBuffer liberalBattlePassHint = new StringBuffer();
liberalBattlePassHint.append(WordUtil.isNewZh()?"是否花費":"Did you spend ");
liberalBattlePassHint.append(spendMoney).append(mElites ?
WordUtil.isNewZh()?"鑽石開通精英戰令!":"diamonds to activate the Elite BattlePass":
WordUtil.isNewZh()?"鑽石開通尊享戰令!":"diamonds to activate the Luxury BattlePass");
//英文版
//设置样式
String liberalBattlePassStr = liberalBattlePassHint.toString();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(liberalBattlePassStr);
int spendMoneyIndex = liberalBattlePassStr.indexOf(spendMoney);
int spendMoneySize = spendMoneyIndex + spendMoney.length();
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#CE2BFF")), spendMoneyIndex, spendMoneySize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
liberalBattlePass.setText(builder);
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.cancel), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.liberal_battle_sure), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext()).
upgradesBattlePass(mBattlePassTypeId, new HttpCallback<ResponseModel<Object>>() {
@Override
public void onSuccess(ResponseModel<Object> data) {
dialog.dismiss();
if (mPassCallback != null) {
mPassCallback.onCallback(data.getData().getCode(), data.getData().getMsg());
}
}
@Override
public void onError(String error) {
dialog.dismiss();
if (mPassCallback != null) {
mPassCallback.onCallback(102, error);
}
}
});
}
});
}
public interface LiberalBattlePassCallback {
void onCallback(int code, String msg);
}
}

View File

@@ -26,7 +26,7 @@ public class OpenAdBottomDialogPopup extends AbsDialogPopupWindow {
@Override
public void buildDialog(XPopup.Builder builder) {
builder.animationDuration(0);
}
@Override

View File

@@ -1,6 +1,7 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.util.Log;
import android.widget.ImageView;
import androidx.annotation.NonNull;
@@ -21,6 +22,10 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
private OpenAdModel model;
private OnItemClickListener<OpenAdModel> mListener;
public OpenAdCenterDialogPopup(@NonNull Context context) {
super(context);
}
public OpenAdCenterDialogPopup(@NonNull Context context, OpenAdModel model) {
super(context);
this.model = model;
@@ -33,6 +38,8 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
@Override
public void buildDialog(XPopup.Builder builder) {
builder.hasShadowBg(false);
builder.animationDuration(0);
}
@Override
@@ -53,6 +60,7 @@ public class OpenAdCenterDialogPopup extends AbsDialogFullScreenPopupWindow {
@Override
protected void onCreate() {
super.onCreate();
Log.e("-----弹窗-----", "onCreate: 创建弹窗" );
mImageView = findViewById(R.id.img);
mClose = findViewById(R.id.close);
findViewById(R.id.layout).setOnClickListener(v -> dismiss());

View File

@@ -0,0 +1,124 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.math.BigDecimal;
/**
* 战令等级 经验
*/
public class OrderLevelPopupWindow extends CenterPopupView {
private TextView orderLevel, orderLevelDiamond, balanceDiamond, current,expText;
private int currentExperience, totalExperience;//当前经验,全部经验
private String buyExp = "100", currentLevel, balance;
private ProgressBar progressBar;
private OrderLevelCallback orderLevelCallback;
private long maxExp;
public OrderLevelPopupWindow(@NonNull Context context,
int mCurrentExperience, int mTotalExperience,
String mCurrentLevel, String mBalance,long maxExp, OrderLevelCallback mOrderLevelCallback) {
super(context);
currentExperience = mCurrentExperience;
totalExperience = mTotalExperience;
currentLevel = mCurrentLevel;
balance = mBalance;
this.maxExp=maxExp;
orderLevelCallback = mOrderLevelCallback;
}
@Override
protected int getImplLayoutId() {
return R.layout.order_level_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
orderLevel = findViewById(R.id.tickets_plus_minus);
orderLevelDiamond = findViewById(R.id.order_level_diamond);
balanceDiamond = findViewById(R.id.balance_diamond);
current = findViewById(R.id.current);
progressBar = findViewById(R.id.progressBar);
expText = findViewById(R.id.exp_text);
orderLevel.setText(buyExp);
progressBar.setMax(totalExperience);
progressBar.setProgress(currentExperience);
expText.setText(String.format("%s/%s", currentExperience, totalExperience));
current.setText(String.format("Lv%s", currentLevel));
balanceDiamond.setText(balance);
findViewById(R.id.sub).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
float exp = new BigDecimal(buyExp).floatValue();
if (exp > 100) {
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).subtract(new BigDecimal("100"));
buyExp = String.valueOf(buyExpBigDecimal.intValue());
orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue()));
orderLevel.setText(buyExp);
}
}
});
findViewById(R.id.add).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
float exp = new BigDecimal(buyExp).floatValue();
if (exp < maxExp && exp < 10000) {
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).add(new BigDecimal("100"));
buyExp = String.valueOf(buyExpBigDecimal.intValue());
orderLevelDiamond.setText(String.valueOf(buyExpBigDecimal.floatValue()));
orderLevel.setText(buyExp);
}else if(exp>=maxExp){
ToastUtil.show(WordUtil.isNewZh()?"经验已滿":"Experience full");
}
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.war_order_close), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.buying_experience), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext())
.buyingExperiencePoint(buyExp, new HttpCallback<ResponseModel<Object>>() {
@Override
public void onSuccess(ResponseModel<Object> data) {
if (orderLevelCallback != null) {
orderLevelCallback.onCallback(data.getData().getCode(), data.getMsg());
}dialog.dismiss();
}
@Override
public void onError(String error) {
if (orderLevelCallback != null) {
orderLevelCallback.onCallback(102, error);
} dialog.dismiss();
}
});
}
});
}
public interface OrderLevelCallback {
void onCallback(int code, String msg);
}
}

View File

@@ -0,0 +1,91 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.content.Context;
import androidx.annotation.NonNull;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.BasePopupView;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.bean.BattlePassUserInfoBean;
import com.yunbao.common.utils.DeviceUtils;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
/**
* 升級精英/尊享戰令
*/
public class PromotionElitePopupWindow extends CenterPopupView {
private String enjoySpendMoney, quintessenceSpendMoney;//花费钱
private LiberalBattlePassPopupWindow.LiberalBattlePassCallback mPassCallback;
private String elitesTypeId,enjoyTypeId;
private BattlePassUserInfoBean data;
public PromotionElitePopupWindow(@NonNull Context context, String mEnjoySpendMoney,
String mQuintessenceSpendMoney, LiberalBattlePassPopupWindow.LiberalBattlePassCallback passCallback,
String elitesTypeId, String enjoyTypeId) {
super(context);
enjoySpendMoney = mEnjoySpendMoney;
quintessenceSpendMoney = mQuintessenceSpendMoney;
mPassCallback = passCallback;
this.elitesTypeId = elitesTypeId;
this.enjoyTypeId = enjoyTypeId;
}
public PromotionElitePopupWindow setUserData(BattlePassUserInfoBean data) {
this.data=data;
return this;
}
@Override
protected int getImplLayoutId() {
return R.layout.promotion_elite_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.close), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
dialog.dismiss();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.button_quintessence), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
if(data!=null && data.getBattlePassUserRecords2()==2){
ToastUtil.show(WordUtil.getNewString(R.string.battlepass_buy_max));
return;
}
dialog.dismiss();
new XPopup.Builder(getContext())
.enableDrag(false)
.maxWidth(DeviceUtils.getScreenHeight((Activity) getContext()) - DpUtil.dp2px(34))
.asCustom(new ActivateEliteBattleOrderPopupWindow(getContext(), quintessenceSpendMoney, true, mPassCallback, elitesTypeId))
.show();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.button_enjoy), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
if(data!=null && data.getBattlePassUserRecords3()==2){
ToastUtil.show(WordUtil.getNewString(R.string.battlepass_buy_max));
return;
}
dialog.dismiss();
new XPopup.Builder(getContext())
.enableDrag(false)
.maxWidth(DeviceUtils.getScreenHeight((Activity) getContext()) - DpUtil.dp2px(34))
.asCustom(new ActivateEliteBattleOrderPopupWindow(getContext(), enjoySpendMoney, false, mPassCallback, enjoyTypeId))
.show();
}
});
}
}

View File

@@ -0,0 +1,51 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
public class RuleOfWarPopupWindow extends CenterPopupView {
public RuleOfWarPopupWindow(@NonNull Context context) {
super(context);
}
private TextView rule;
@Override
protected int getImplLayoutId() {
return R.layout.rule_of_war_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
rule=findViewById(R.id.rule);
findViewById(R.id.close).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
initData();
}
private void initData(){
LiveNetManager.get(getContext())
.getBattlePassRule(new HttpCallback<String>() {
@Override
public void onSuccess(String data) {
rule.setText(data.replace("\n","\n\n"));
}
@Override
public void onError(String error) {
}
});
}
}

View File

@@ -0,0 +1,134 @@
package com.yunbao.common.dialog;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.lxj.xpopup.core.CenterPopupView;
import com.yunbao.common.R;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.ResponseModel;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import java.math.BigDecimal;
/**
* 战令兑换详情
*/
public class WarOrderExchangeDetailsPopupWindow extends CenterPopupView {
private TextView orderLevel, pointExchange;
private String buyExp = "1";
private int mPoint, mLimitQuantity, mScale;
private String mImageUrl;
private ImageView exchangeParticulars;
private String battlePassPointsId;
private WarOrderExchangeDetailsCallback orderExchangeDetailsCallback;
/***
*
* @param context
* @param limitQuantity 最大限制数量
* @param point 自己的积分
* @param scale 兑换比例
* @param imageUrl 物品图片的url
*/
public WarOrderExchangeDetailsPopupWindow(@NonNull Context context, int limitQuantity,
int point, int scale, String imageUrl, String battlePassPointsId, WarOrderExchangeDetailsCallback orderExchangeDetailsCallback) {
super(context);
mPoint = point;
mLimitQuantity = limitQuantity;
mScale = scale;
mImageUrl = imageUrl;
this.battlePassPointsId = battlePassPointsId;
this.orderExchangeDetailsCallback = orderExchangeDetailsCallback;
}
@Override
protected int getImplLayoutId() {
return R.layout.war_order_exchange_details_popup;
}
// 执行初始化操作比如findView设置点击或者任何你弹窗内的业务逻辑
@Override
protected void onCreate() {
super.onCreate();
orderLevel = findViewById(R.id.tickets_plus_minus);
exchangeParticulars = findViewById(R.id.exchange_particulars);
pointExchange = findViewById(R.id.point_exchange);
orderLevel.setText(buyExp);
BigDecimal needExpBigDecimal = new BigDecimal(buyExp).multiply(new BigDecimal(mScale));
pointExchange.setText(String.format("%s",needExpBigDecimal));
ImgLoader.display(getContext(), mImageUrl, exchangeParticulars);
findViewById(R.id.sub).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
float exp = new BigDecimal(buyExp).floatValue();
if (exp > 1) {
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).subtract(new BigDecimal("1"));
buyExp = String.valueOf(buyExpBigDecimal.intValue());
orderLevel.setText(buyExp);
BigDecimal needExpBigDecimal = buyExpBigDecimal.multiply(new BigDecimal(mScale));
pointExchange.setText(String.format("%s",needExpBigDecimal));
}
}
});
findViewById(R.id.add).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
int number = new BigDecimal(mScale).multiply(new BigDecimal(buyExp)).intValue();
int exp = new BigDecimal(buyExp).intValue();
if (exp < mLimitQuantity && number < mPoint) {
BigDecimal buyExpBigDecimal = new BigDecimal(buyExp).add(new BigDecimal("1"));
buyExp = String.valueOf(buyExpBigDecimal.intValue());
orderLevel.setText(buyExp);
BigDecimal needExpBigDecimal = buyExpBigDecimal.multiply(new BigDecimal(mScale));
pointExchange.setText(String.format("%s",needExpBigDecimal));
}else if(exp >= mLimitQuantity){
ToastUtil.show(WordUtil.getNewString(R.string.battlepass_exchange_buy_max));
}else {
ToastUtil.show(WordUtil.getNewString(R.string.battlepass_exchange_buy_integral));
}
}
});
findViewById(R.id.war_order_close).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.point_exchange_linear), new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
LiveNetManager.get(getContext())
.pointsExchange(battlePassPointsId, buyExp, new HttpCallback<ResponseModel<Object>>() {
@Override
public void onSuccess(ResponseModel<Object> data) {
dialog.dismiss();
if (orderExchangeDetailsCallback != null) {
orderExchangeDetailsCallback.onCallback(data.getData().getCode(), data.getData().getMsg());
}
}
@Override
public void onError(String error) {
dialog.dismiss();
if (orderExchangeDetailsCallback != null) {
orderExchangeDetailsCallback.onCallback(102, error);
}
}
});
}
});
}
public interface WarOrderExchangeDetailsCallback {
void onCallback(int code, String msg);
}
}

View File

@@ -1,6 +1,7 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.bean.VideoBean;
import java.util.ArrayList;
@@ -23,6 +24,16 @@ public class JavascriptInterfaceEvent extends BaseModel {
private String data;
private String name;
private String image;
private CoolConfig coolConfig;
public CoolConfig getCoolConfig() {
return coolConfig;
}
public JavascriptInterfaceEvent setCoolConfig(CoolConfig coolConfig) {
this.coolConfig = coolConfig;
return this;
}
public String getName() {
return name;

View File

@@ -0,0 +1,67 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class QuickGiftingEvent extends BaseModel {
private int index;
private String svgaName;
private boolean show =false;
private boolean reminder = false;
private String giftRemainingQuantity;
private String hotNum;
public String getHotNum() {
return hotNum;
}
public QuickGiftingEvent setHotNum(String hotNum) {
this.hotNum = hotNum;
return this;
}
public String getGiftRemainingQuantity() {
return giftRemainingQuantity;
}
public QuickGiftingEvent setGiftRemainingQuantity(String giftRemainingQuantity) {
this.giftRemainingQuantity = giftRemainingQuantity;
return this;
}
public boolean isReminder() {
return reminder;
}
public QuickGiftingEvent setReminder(boolean reminder) {
this.reminder = reminder;
return this;
}
public boolean isShow() {
return show;
}
public QuickGiftingEvent setShow(boolean show) {
this.show = show;
return this;
}
public int getIndex() {
return index;
}
public QuickGiftingEvent setIndex(int index) {
this.index = index;
return this;
}
public String getSvgaName() {
return svgaName;
}
public QuickGiftingEvent setSvgaName(String svgaName) {
this.svgaName = svgaName;
return this;
}
}

View File

@@ -0,0 +1,15 @@
package com.yunbao.common.event;
import com.yunbao.common.bean.BaseModel;
public class SlideEvent extends BaseModel {
private boolean isSlide;
public boolean isSlide() {
return isSlide;
}
public SlideEvent setSlide(boolean slide) {
isSlide = slide;
return this;
}
}

View File

@@ -70,6 +70,13 @@ public abstract class BaseFragment extends Fragment {
* 请求数据
*/
protected abstract void loadData();
public void updateData(){
}
protected <T extends View> T findViewById(int id){
return contentView.findViewById(id);
}
@Override
public void onDestroy() {

View File

@@ -17,9 +17,11 @@ public class LoadingDialog extends AbsDialogFragment {
private TextView hint;
private String showText = "";
public boolean isShow;
public void setShowText(String showText) {
this.showText = showText;
isShow = true;
}
@Override
@@ -44,19 +46,21 @@ public class LoadingDialog extends AbsDialogFragment {
hint = (TextView) findViewById(R.id.hint);
dots.start();
hint.setText(showText);
isShow = true;
}
public void setHintText(String text) {
if (hint != null) {
hint.setText(text);
}
isShow = true;
}
@Override
public void onDestroy() {
super.onDestroy();
dots.stop();
isShow = false;
}
@Override

View File

@@ -181,8 +181,6 @@ public class CommonHttpUtil {
JSONObject obj = JSON.parseObject(info[0]);
ConfigBean bean = JSON.toJavaObject(obj, ConfigBean.class);
CommonAppConfig.getInstance().setConfig(bean);
CommonAppConfig.getInstance().setLevel(obj.getString("level"));
CommonAppConfig.getInstance().setAnchorLevel(obj.getString("levelanchor"));
CommonAppConfig.getInstance().alert_time = obj.getInteger("alert_time");
CommonAppConfig.getInstance().alert_end_time = obj.getInteger("alert_end_time");
//解析粉丝徽章

View File

@@ -350,7 +350,11 @@ public class LiveHttpUtil {
.params("p", p)
.execute(callback);
}
public static void getContactMsg(int page, HttpCallback callback) {
HttpClient.getInstance().get("Live.getContactMsg", "getContactMsg")
.params("p", page)
.execute(callback);
}
/**
* 观众跟主播连麦时,获取自己的流地址

View File

@@ -5,10 +5,14 @@ import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BattlePassPoints;
import com.yunbao.common.bean.BattlePassTask;
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.ContributeModel;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.bean.DiscountsModel;
@@ -30,6 +34,7 @@ import com.yunbao.common.bean.ListInfoMessageModel;
import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.bean.LiveAnchorCallMeModel;
import com.yunbao.common.bean.LiveAnchorSayModel;
import com.yunbao.common.bean.LiveBattlePassRewardsBean;
import com.yunbao.common.bean.LiveDataInfoModel;
import com.yunbao.common.bean.LiveInfoModel;
import com.yunbao.common.bean.LiveRoomActivityBanner;
@@ -46,6 +51,7 @@ import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.QuickGiftSendGiftModel;
import com.yunbao.common.bean.RandomPkUserBean;
import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.bean.RedPacketDetailsBean;
@@ -553,7 +559,7 @@ public interface PDLiveApi {
/**
* 机器人删除话术
*/
@GET("/api/public/?service=Live.delAiAutomaticSpeech ")
@GET("/api/public/?service=Live.delAiAutomaticSpeech")
Observable<ResponseModel<List<String>>> delAiAutomaticSpeech(
@Query("type") String type,
@Query("id") String id
@@ -661,7 +667,9 @@ public interface PDLiveApi {
* 获取收件箱信息
*/
@GET("/api/public/?service=Live.getContactMsg")
Observable<ResponseModel<List<LiveUserMailBoxModel>>> getContactMsg();
Observable<ResponseModel<List<LiveUserMailBoxModel>>> getContactMsg(
@Query("p") int page
);
/**
* 删除联系方式信件
@@ -1061,9 +1069,70 @@ public interface PDLiveApi {
@GET("/api/public/?service=Sudgameserver.deductMoney")
Observable<ResponseModel<Object>> deductMoney(
@Query("room_id") String roomId
);
@GET("/api/public/?service=Sudgameserver.checkCurrency")
Observable<ResponseModel<CheckCurrencyModel>> checkCurrency(
);
@GET("/api/public/?service=Quickgift.sendGift")
Observable<ResponseModel<QuickGiftSendGiftModel>> quickGiftSendGift(
@Query("quick_gift_number") String quickGiftNumber,
@Query("liveuid") String liveUid,
@Query("stream") String stream
);
@GET("/api/public/?service=Quickgift.viewingDurationGetGift")
Observable<ResponseModel<QuickGiftSendGiftModel>> viewingDurationGetGift(
@Query("liveuid") String liveUid
);
@GET("/api/public/?service=cool.config")
Observable<ResponseModel<CoolConfig>> getCoolConfig();
@FormUrlEncoded
@POST("/api/public/?service=cool.buy_ticket")
Observable<ResponseModel<Object>> buyTicket(
@Field("quantity") String quantity
);
@GET("/api/public/?service=Livebattlepass.upgradesBattlePass")
Observable<ResponseModel<Object>> upgradesBattlePass(@Query("battle_pass_type_id") String battlePassTypeId);
@GET("/api/public/?service=Livebattlepass.buyingExperiencePoint")
Observable<ResponseModel<Object>> buyingExperiencePoint(@Query("exp_count") String expCount);
/**
* battle_pass_points_id => 兑换列表ID
* count => 兑换物品的数量
*
* @return
*/
@GET("/api/public/?service=Livebattlepass.pointsExchange")
Observable<ResponseModel<Object>> pointsExchange(
@Query("battle_pass_points_id") String battlePassPointsId,
@Query("count") String count
);
@GET("/api/public/?service=Livebattlepass.getBattlePassUserInfo")
Observable<ResponseModel<BattlePassUserInfoBean>> getBattlePassUserInfo();
@GET("/api/public/?service=Livebattlepass.getLiveBattlePassRewards")
Observable<ResponseModel<LiveBattlePassRewardsBean>> getLiveBattlePassRewards();
@GET("/api/public/?service=Livebattlepass.getRewards")
Observable<ResponseModel<List<BaseModel>>> getRewards(
@Query("live_battle_pass_level_id")String rewardLevelId,
@Query("live_battle_pass_rewards_id")String rewardId
);
@GET("/api/public/?service=Livebattlepass.getBattlePassTask")
Observable<ResponseModel<BattlePassTask>> getBattlePassTask();
@GET("/api/public/?service=Livebattlepass.getTask")
Observable<ResponseModel<List<BaseModel>>> getTask(@Query("task_id")String taskId);
@GET("/api/public/?service=Livebattlepass.getBattlePassPoints")
Observable<ResponseModel<List<BattlePassPoints>>> getBattlePassPoints();
@GET("/api/public/?service=Livebattlepass.battlePassRule")
Observable<ResponseModel<String>> battlePassRule();
@GET("/api/public/?service=Livebattlepass.addChatCount")
Observable<ResponseModel<List<BaseModel>>> addChatCount();
}

View File

@@ -8,9 +8,13 @@ import com.yunbao.common.Constants;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
import com.yunbao.common.bean.BaseModel;
import com.yunbao.common.bean.BattlePassPoints;
import com.yunbao.common.bean.BattlePassTask;
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.CoolConfig;
import com.yunbao.common.bean.CreateSudRoomModel;
import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.bean.DiscountsModel;
@@ -30,6 +34,7 @@ import com.yunbao.common.bean.ListInfoMessageModel;
import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.bean.LiveAnchorCallMeModel;
import com.yunbao.common.bean.LiveAnchorSayModel;
import com.yunbao.common.bean.LiveBattlePassRewardsBean;
import com.yunbao.common.bean.LiveDataInfoModel;
import com.yunbao.common.bean.LiveInfoModel;
import com.yunbao.common.bean.LiveRoomActivityBanner;
@@ -44,6 +49,7 @@ import com.yunbao.common.bean.OpenAdModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
import com.yunbao.common.bean.QuickGiftSendGiftModel;
import com.yunbao.common.bean.RandomPkUserBean;
import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.bean.RedPacketDetailsBean;
@@ -1261,20 +1267,25 @@ public class LiveNetManager {
*
* @param callback 回调
*/
public void getContactMsg(HttpCallback<List<LiveUserMailBoxModel>> callback) {
API.get().pdLiveApi(mContext)
.getContactMsg()
private Disposable contactMsgApi;
public synchronized void getContactMsg(int page, HttpCallback<List<LiveUserMailBoxModel>> callback) {
contactMsgApi = API.get().pdLiveApi(mContext)
.getContactMsg(page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(listResponseModel -> {
if (callback != null) {
callback.onSuccess(listResponseModel.getData().getInfo());
}
contactMsgApi = null;
}, throwable -> {
if (callback != null) {
callback.onError(throwable.getMessage());
}
}).isDisposed();
contactMsgApi = null;
});
}
/**
@@ -2317,21 +2328,21 @@ public class LiveNetManager {
}
public void deductMoney(String roomId) {
API.get().pdLiveApi(mContext)
.deductMoney(roomId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> objectResponseModel) throws Exception {
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
}).isDisposed();
// API.get().pdLiveApi(mContext)
// .deductMoney(roomId)
// .subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(new Consumer<ResponseModel<Object>>() {
// @Override
// public void accept(ResponseModel<Object> objectResponseModel) throws Exception {
//
// }
// }, new Consumer<Throwable>() {
// @Override
// public void accept(Throwable throwable) throws Exception {
//
// }
// }).isDisposed();
}
public void checkCurrency(HttpCallback<CheckCurrencyModel> callback) {
@@ -2384,6 +2395,168 @@ public class LiveNetManager {
}).isDisposed();
}
public void viewingDurationGetGift(String liveUid, HttpCallback<QuickGiftSendGiftModel> callback) {
API.get().pdLiveApi(mContext)
.viewingDurationGetGift(liveUid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<QuickGiftSendGiftModel>>() {
@Override
public void accept(ResponseModel<QuickGiftSendGiftModel> quickGiftSendGiftModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(quickGiftSendGiftModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void getCoolConfig(HttpCallback<CoolConfig> callback) {
API.get().pdLiveApi(mContext)
.getCoolConfig()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<CoolConfig>>() {
@Override
public void accept(ResponseModel<CoolConfig> coolConfigResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(coolConfigResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void buyTicket(String quantity, HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.buyTicket(quantity)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> objectResponseModel) throws Exception {
if (callback != null) {
if (objectResponseModel.getData().getCode() == 200) {
callback.onSuccess("1");
} else if (objectResponseModel.getData().getCode() == 500) {
callback.onSuccess("2");
} else {
callback.onError(objectResponseModel.getData().getMsg());
}
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void pointsExchange(String battlePassPointsId, String count, HttpCallback<ResponseModel<Object>> callback) {
API.get().pdLiveApi(mContext)
.pointsExchange(battlePassPointsId, count)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> objectResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(objectResponseModel);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void buyingExperiencePoint(String expCount, HttpCallback<ResponseModel<Object>> callback) {
API.get().pdLiveApi(mContext)
.buyingExperiencePoint(expCount)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
@Override
public void accept(ResponseModel<Object> objectResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(objectResponseModel);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void upgradesBattlePass(String battlePassTypeId, HttpCallback<ResponseModel<Object>> callback) {
API.get().pdLiveApi(mContext)
.upgradesBattlePass(battlePassTypeId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<Object>>() {
public void accept(ResponseModel<Object> objectResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(objectResponseModel);
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void quickGiftSendGift(String quickGiftNumber, String liveUid, String stream, HttpCallback<QuickGiftSendGiftModel> callback) {
API.get().pdLiveApi(mContext)
.quickGiftSendGift(quickGiftNumber, liveUid, stream)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseModel<QuickGiftSendGiftModel>>() {
@Override
public void accept(ResponseModel<QuickGiftSendGiftModel> quickGiftSendGiftModelResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(quickGiftSendGiftModelResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(mContext.getString(R.string.net_error));
}
}
}).isDisposed();
}
public void getRoomList(String sudGameId, String threshold, String roomHolderType, String liveUid, String currencyType, int page, HttpCallback<List<SudRoomListModel>> callback) {
API.get().pdLiveApi(mContext)
.getRoomList(sudGameId, threshold, roomHolderType, liveUid, currencyType, page)
@@ -2452,6 +2625,170 @@ public class LiveNetManager {
}).isDisposed();
}
public void getBattlePassUserInfo(HttpCallback<BattlePassUserInfoBean> callback) {
API.get().pdLiveApi(mContext)
.getBattlePassUserInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checkRemainingBalanceResponseModel -> {
if (callback != null) {
callback.onSuccess(checkRemainingBalanceResponseModel.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 getLiveBattlePassRewards(HttpCallback<LiveBattlePassRewardsBean> callback) {
API.get().pdLiveApi(mContext)
.getLiveBattlePassRewards()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checkRemainingBalanceResponseModel -> {
if (callback != null) {
callback.onSuccess(checkRemainingBalanceResponseModel.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 getRewards(String rewardLevelId, String rewardId, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.getRewards(rewardLevelId, rewardId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseModel -> {
if (callback != null) {
if (callback != null) {
callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.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 getBattlePassTask(HttpCallback<BattlePassTask> callback) {
API.get().pdLiveApi(mContext)
.getBattlePassTask()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checkRemainingBalanceResponseModel -> {
if (callback != null) {
callback.onSuccess(checkRemainingBalanceResponseModel.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 getBattlePassTaskOver(String taskId, HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.getTask(taskId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseModel -> {
if (callback != null) {
if (callback != null) {
callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.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 getBattlePassPoints(HttpCallback<List<BattlePassPoints>> callback) {
API.get().pdLiveApi(mContext)
.getBattlePassPoints()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checkRemainingBalanceResponseModel -> {
if (callback != null) {
callback.onSuccess(checkRemainingBalanceResponseModel.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 getBattlePassRule(HttpCallback<String> callback) {
API.get().pdLiveApi(mContext)
.battlePassRule()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(checkRemainingBalanceResponseModel -> {
if (callback != null) {
callback.onSuccess(checkRemainingBalanceResponseModel.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 addChatCount(HttpCallback<HttpCallbackModel> callback) {
API.get().pdLiveApi(mContext)
.addChatCount()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseModel -> {
if (callback != null) {
if (callback != null) {
callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.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();
}
/**
* 直播间取消网络请求
*/
@@ -2465,5 +2802,8 @@ public class LiveNetManager {
if (randomPkApi != null) {
randomPkApi.dispose();
}
if (contactMsgApi != null) {
contactMsgApi.dispose();
}
}
}

View File

@@ -58,7 +58,14 @@ public class IMLoginManager extends BaseCacheManager {
}
public boolean getRedPoint() {
return !TextUtils.isEmpty(getString("RedPoint")) && !TextUtils.equals(getString("RedPoint"), "1");
return !TextUtils.isEmpty(getString("RedPoint")) || !TextUtils.equals(getString("RedPoint"), "1");
}
public void setQuickGiftIfFirst() {
put("quick_gift_if_first", "1");
}
public boolean getQuickGiftIfFirst() {
return TextUtils.isEmpty(getString("quick_gift_if_first")) || !TextUtils.equals(getString("quick_gift_if_first"), "1");
}
public void setSudGameMin() {

View File

@@ -11,6 +11,8 @@ import com.yunbao.common.dialog.OpenAdBottomDialogPopup;
import com.yunbao.common.dialog.OpenAdCenterDialogPopup;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import java.util.ArrayList;
@@ -81,18 +83,34 @@ public class OpenAdManager {
});
}
private static long showTime=0;
public synchronized void show(int type, boolean isGuard) {
if (list == null) {
init(true);
return;
}
if(System.currentTimeMillis()-showTime<100){
return;
}
showTime=System.currentTimeMillis();
showType = type;
for (OpenAdModel model : list) {
if (model.getType() == type) {
if (type == OpenAdModel.TYPE_LIVE && !model.userIsPermission(isGuard)) {
continue;
}
if (model.getShowModel() == OpenAdModel.SHOW_ONE) {
if (SpUtil.getInstance().getBooleanValue("open_ad_popup_" + model.getId())) {
continue;
}
SpUtil.getInstance().setBooleanValue("open_ad_popup_" + model.getId(), true);
}
if (model.getShowModel() == OpenAdModel.SHOW_DIY) {
String value = SpUtil.getStringValue("open_ad_popup_time_" + model.getId());
if (!StringUtil.isEmpty(value) && System.currentTimeMillis() < Long.parseLong(value)) {
continue;
}
}
if (runnableMap.containsKey(model.getId())) {
AdRunnable runnable = runnableMap.get(model.getId());
if (runnable != null) {
@@ -165,7 +183,16 @@ public class OpenAdManager {
if (model.getType() != showType) {
return;
}
if(isShow(model)){
Log.i(TAG,"展示过:"+model);
return;
}
showMap.put(model.getId(), true);
if (model.getShowModel() == OpenAdModel.SHOW_DIY) {
String nextTime= String.valueOf(System.currentTimeMillis() + (Long.parseLong(model.getSection()) * 60 * 1000));
SpUtil.setStringValue("open_ad_popup_time_" + model.getId(), nextTime);
showMap.remove(model.getId());
}
if (model.getModel() == OpenAdModel.MODEL_BOTTOM) {
new OpenAdBottomDialogPopup(CommonAppContext.getTopActivity(), model).setListener((bean, position) -> {
}).showDialog();

View File

@@ -1,9 +1,12 @@
package com.yunbao.common.utils;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
/**
@@ -15,12 +18,13 @@ public class AndroidBug5497Workaround {
// For more information, see https://issuetracker.google.com/issues/36911528
// To use this class, simply invoke assistActivity() on an Activity that already has its content view set.
public static void assistActivity (Activity activity) {
public static void assistActivity(Activity activity) {
new AndroidBug5497Workaround(activity);
}
private View mChildOfContent;
private int usableHeightPrevious;
private int defHeight = ViewGroup.LayoutParams.MATCH_PARENT;
private FrameLayout.LayoutParams frameLayoutParams;
private AndroidBug5497Workaround(Activity activity) {
@@ -29,8 +33,14 @@ public class AndroidBug5497Workaround {
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
int heightDiff = mChildOfContent.getRootView().getHeight() - mChildOfContent.getHeight();
if (heightDiff < 100) {
frameLayoutParams.height = defHeight;
mChildOfContent.requestLayout();
}
}
});
frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
}
@@ -39,7 +49,7 @@ public class AndroidBug5497Workaround {
if (usableHeightNow != usableHeightPrevious) {
int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
int heightDifference = usableHeightSansKeyboard - usableHeightNow;
if (heightDifference > (usableHeightSansKeyboard/4)) {
if (heightDifference > (usableHeightSansKeyboard / 4)) {
// keyboard probably just became visible
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
} else {

View File

@@ -0,0 +1,54 @@
package com.yunbao.common.utils;
import android.app.Activity;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import com.momo.mcamera.util.JsonUtil;
import com.yunbao.common.bean.CoolConfig;
import com.yunbao.common.event.JavascriptInterfaceEvent;
public class JavascriptInterfacePlayLetUtils {
private Activity mContext;
private WebView mWebView;
private static JavascriptInterfacePlayLetUtils sInstance;
public static JavascriptInterfacePlayLetUtils getInstance() {
synchronized (JavascriptInterfacePlayLetUtils.class) {
sInstance = new JavascriptInterfacePlayLetUtils();
return sInstance;
}
}
public JavascriptInterfacePlayLetUtils setmContext(Activity mContext, WebView mWebView) {
this.mContext = mContext;
this.mWebView = mWebView;
// webView.evaluateJavascript("javascript:nativeCallback('" + params + "')", new ValueCallback<String>() {
// @Override
// public void onReceiveValue(String value) {
// }
// });
return this;
}
@JavascriptInterface
public void postEvent(String name, String data) {
Log.e("TAG", "postEvent name==" + name);
Log.e("TAG", "postEvent data==" + data);
}
@JavascriptInterface
public void postWeakBalance(String data) {
CoolConfig coolConfig = new JsonUtil().fromJson(data, CoolConfig.class);
Log.e("TAG", "postWeakBalance data==" + data);
Bus.get().post(new JavascriptInterfaceEvent()
.setCoolConfig(coolConfig)
.setMethod("postWeakBalance"));
}
}

View File

@@ -2,11 +2,13 @@ package com.yunbao.common.utils;
import static com.yunbao.common.CommonAppConfig.isGetNewWrap;
import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
import static com.yunbao.common.utils.RouteUtil.PATH_REWARD;
import android.app.Activity;
import android.app.Dialog;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
@@ -25,6 +27,7 @@ import com.yunbao.common.bean.VideoBean;
import com.yunbao.common.bean.VideoListBean;
import com.yunbao.common.event.JavascriptInterfaceEvent;
import com.yunbao.common.event.LiveRoomChangeEvent;
import com.yunbao.common.event.QuickGiftingEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.http.LiveHttpUtil;
@@ -124,10 +127,10 @@ public class JavascriptInterfaceUtils {
url = CommonAppConfig.HOST + url;
if (url.contains("?")) {
url += "&uid=" + CommonAppConfig.getInstance().getUid() + "&token="
+ CommonAppConfig.getInstance().getToken()+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
+ CommonAppConfig.getInstance().getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
} else {
url += "?uid=" + CommonAppConfig.getInstance().getUid() + "&token="
+ CommonAppConfig.getInstance().getToken()+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
+ CommonAppConfig.getInstance().getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
}
if (LiveZhuangBana) {
RouteUtil.forwardLiveZhuangBanActivity(url, false);
@@ -147,10 +150,10 @@ public class JavascriptInterfaceUtils {
url = CommonAppConfig.HOST + url;
if (url.contains("?")) {
url += "&uid=" + CommonAppConfig.getInstance().getUid() + "&token="
+ CommonAppConfig.getInstance().getToken()+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
+ CommonAppConfig.getInstance().getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
} else {
url += "?uid=" + CommonAppConfig.getInstance().getUid() + "&token="
+ CommonAppConfig.getInstance().getToken()+ "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
+ CommonAppConfig.getInstance().getToken() + "&isZh=" + (WordUtil.isNewZh() ? "1" : 0);
}
if (LiveZhuangBana) {
RouteUtil.forwardLiveZhuangBanActivity(url, title);
@@ -259,11 +262,12 @@ public class JavascriptInterfaceUtils {
/**
* 跳转直播并打开礼物栏选中礼物
*
* @param liveId 直播间id
* @param giftId 礼物id
*/
@JavascriptInterface
public void androidMethodLookToLiveGift(String liveId,String giftId){
public void androidMethodLookToLiveGift(String liveId, String giftId) {
LiveHttpUtil.getLiveInfo(liveId, new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
@@ -300,6 +304,7 @@ public class JavascriptInterfaceUtils {
}
});
}
@JavascriptInterface
public void androidMethodLookToLive(String liveId) {
Bus.get().post(new JavascriptInterfaceEvent()
@@ -598,6 +603,18 @@ public class JavascriptInterfaceUtils {
.setMethod("clickLogOffAccount"));
}
@JavascriptInterface
public void androidClickToTaskPage() {
ARouter.getInstance().build(PATH_REWARD).withString("url",
CommonAppConfig.HOST + "/index.php?g=Appapi&m=task&a=index" + "&uid=" + CommonAppConfig.getInstance().getUid()
+ "&token=" + CommonAppConfig.getInstance().getToken() + "&tabIndex=1"+ "&isZh=" + (WordUtil.isNewZh() ? "1" : "0")).navigation();
}
@JavascriptInterface
public void androidQuickGiftRemainingQuantity(int giftRemainingQuantity) {
Bus.get().post(new QuickGiftingEvent().setGiftRemainingQuantity(String.valueOf(giftRemainingQuantity)));
}
@JavascriptInterface
public void androidFansGroupBuy(String id) {
Bus.get().post(new JavascriptInterfaceEvent()
@@ -644,8 +661,9 @@ public class JavascriptInterfaceUtils {
Bus.get().post(new JavascriptInterfaceEvent()
.setMethod("androidCancelAnchorAttention"));
}
@JavascriptInterface
public void androidLnsufficientBalanceClick(String msg){
public void androidLnsufficientBalanceClick(String msg) {
DialogUitl.showSimpleDialog(mContext, msg, new DialogUitl.SimpleCallback2() {
@Override
public void onCancelClick() {
@@ -659,4 +677,5 @@ public class JavascriptInterfaceUtils {
}
});
}
}

View File

@@ -45,6 +45,7 @@ public class RouteUtil {
public static final String PATH_RED_PACKET_INFO = "/main/RedPacketInfoActivity";
public static final String PATH_RED_PACKET_USER = "/main/RedPacketUsersActivity";
public static final String PATH_SELECT_AVATAR="/main/UserAvatarSelectActivity";
public static final String PATH_BattlePassActivity="/main/BattlePassActivity";
public static void forwardFansActivity(String uid) {
ARouter.getInstance().build(PATH_FANSACTIVITY)
@@ -315,4 +316,12 @@ public class RouteUtil {
ARouter.getInstance().build(PATH_SELECT_AVATAR)
.navigation();
}
/**
* 战令
*/
public static void forwardBattlePass(){
ARouter.getInstance().build(PATH_BattlePassActivity)
.navigation();
}
}

View File

@@ -34,7 +34,8 @@ public class WordUtil {
}
public static boolean isNewZh() {
return IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE;
return IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE
|| IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.TRADITIONAL_CHINESE ;
}
public static String getNewString(int res) {

View File

@@ -34,7 +34,7 @@ public class InteractionGamesChildViewHolder extends RecyclerView.ViewHolder {
funGameName.setText(model.getTitle());
if (!TextUtils.isEmpty(model.getSudGameIsNew())||TextUtils.equals(model.getSudGameIsNew(),"1")){
if (!TextUtils.isEmpty(model.getSudGameIsNew())&&TextUtils.equals(model.getSudGameIsNew(),"1")){
itemView.findViewById(R.id.icon_new_game).setVisibility(View.VISIBLE);
}else {
itemView.findViewById(R.id.icon_new_game).setVisibility(View.GONE);

View File

@@ -0,0 +1,73 @@
package com.yunbao.common.views.weight;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class CircleProgress2 extends View {
private Paint mPaint;
private RectF mRectF;
private int mCurrent = 10, mMax = 100;
//圆弧(也可以说是圆环)的宽度
private float mArcWidth =7;
//控件的宽度
private float mWidth;
public CircleProgress2(Context context) {
this(context, null);
}
public CircleProgress2(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CircleProgress2(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mRectF = new RectF();
}
public void setCurrent(int mCurrent) {
this.mCurrent = mCurrent;
invalidate();
}
public void setMax(int mMax) {
this.mMax = mMax;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//getMeasuredWidth获取的是view的原始大小也就是xml中配置或者代码中设置的大小
//getWidth获取的是view最终显示的大小这个大小不一定等于原始大小
mWidth = getMeasuredWidth();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setStyle(Paint.Style.STROKE);
//设置圆弧的宽度(圆环的宽度)
mPaint.setStrokeWidth(mArcWidth);
mPaint.setColor(Color.TRANSPARENT);
//大圆的半径
float bigCircleRadius = mWidth / 2;
//小圆的半径
float smallCircleRadius = bigCircleRadius;
//绘制小圆
canvas.drawCircle(bigCircleRadius, bigCircleRadius, smallCircleRadius, mPaint);
mPaint.setColor(Color.parseColor("#FEC51B"));
mRectF.set(mArcWidth, mArcWidth, mWidth - mArcWidth, mWidth - mArcWidth);
//绘制圆弧
canvas.drawArc(mRectF, -90, mCurrent * 360 / mMax, false, mPaint);
setBackgroundColor(Color.TRANSPARENT);
}
}

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="#9946433F" />
<corners android:radius="200dp" />
</shape>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:bottomLeftRadius="0dp" android:bottomRightRadius="16dp" android:topLeftRadius="16dp" android:topRightRadius="0dp" />
<gradient android:angle="360" android:endColor="#F6F5FF" android:startColor="#D3E3FF" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:gravity="fill_vertical|fill_horizontal"
android:src="@drawable/background_order_dialog_out_layout" />
</item>
<item
android:bottom="3dp"
android:left="3dp"
android:right="4dp"
android:top="4dp">
<shape>
<solid android:color="#F5F5FF" />
<corners android:radius="10dp" />
<stroke
android:width="3dp"
android:color="#657FE4" />
</shape>
</item>
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 KiB

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--设置ProgressBar背景色-->
<item android:id="@android:id/background">
<shape>
<!--设置ProgressBar进度条圆角半径-->
<corners android:radius="3dp" />
<solid android:color="#B7AFCD" />
</shape>
</item>
<!--设置ProgressBar进度条颜色-->
<item android:id="@android:id/progress">
<clip android:clipOrientation="horizontal">
<shape>
<corners android:radius="3dp" />
<solid android:color="#CE2BFF" />
</shape>
</clip>
</item>
</layer-list>

View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp">
<ImageView
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:background="@drawable/background_order_dialog"
android:layout_width="0dp"
android:layout_height="0dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/war_order_close"
android:layout_width="19dp"
android:layout_height="19dp"
android:layout_gravity="end"
android:layout_marginTop="14dp"
android:layout_marginEnd="14dp"
android:src="@mipmap/icon_sud_rule_close" />
<ImageView
android:id="@+id/elites_image"
android:layout_width="211dp"
android:layout_height="27dp"
android:layout_gravity="center"
android:layout_marginTop="3dp"
android:src="@mipmap/icon_activate_the_elite_battle_order"
android:visibility="gone" />
<ImageView
android:id="@+id/enjoy_image"
android:layout_width="211dp"
android:layout_height="27dp"
android:layout_gravity="center"
android:layout_marginTop="3dp"
android:src="@mipmap/icon_enjoy_image"
android:visibility="visible" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="15dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@mipmap/icon_war_order_diamond" />
<TextView
android:id="@+id/gift_overvalue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/gift_overvalue"
android:textColor="#CE2BFF"
android:textSize="14sp"
android:visibility="gone" />
<TextView
android:id="@+id/gift_overvalue3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/gift_overvalue3"
android:textColor="#CE2BFF"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@mipmap/icon_order_score" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/more_integral"
android:textColor="#CE2BFF"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@mipmap/icon_war_order_gift" />
<TextView
android:id="@+id/gift3_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/unlock_more_gifts"
android:textColor="#CE2BFF"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="10dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="10dp"
android:text="@string/has_reached_level_after_opening"
android:textColor="#0D21B2"
android:textSize="13sp" />
<LinearLayout
android:id="@+id/button_war_order"
android:layout_width="150dp"
android:layout_height="48dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@mipmap/button_war_order"
android:gravity="center">
<TextView
android:id="@+id/button_war_order_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold"
tools:text="123" />
<ImageView
android:layout_width="20dp"
android:layout_height="wrap_content"
android:src="@mipmap/diamond" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="218dp"
android:layout_marginStart="22dp"
android:layout_marginEnd="22dp"
android:background="@drawable/background_order_dialog"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="30dp"
android:layout_marginTop="75dp"
android:layout_marginEnd="30dp"
android:gravity="center"
android:text="@string/this_activity_is_over"
android:textColor="#0D21B2"
android:textSize="14sp" />
<LinearLayout
android:id="@+id/confirm"
android:layout_width="116dp"
android:layout_height="38dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginTop="10dp"
android:layout_marginBottom="33dp"
android:background="@mipmap/button_buying_experience"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/edit_one_4"
android:textColor="#E03600"
android:textSize="14sp" />
</LinearLayout>
</FrameLayout>

View File

@@ -0,0 +1,171 @@
<?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="475dp"
android:layout_marginStart="21dp"
android:layout_marginEnd="21dp"
android:background="@mipmap/background_cinema_ticket"
android:orientation="vertical">
<ImageView
android:id="@+id/cinema_ticket_close"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="end"
android:layout_margin="12dp"
android:src="@mipmap/icon_cinema_ticket_close" />
<ImageView
android:layout_width="222dp"
android:layout_height="25dp"
android:layout_gravity="center"
android:src="@mipmap/icon_cinema_ticket_title" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="15dp">
<TextView
android:id="@+id/cinema_ticket"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="#DFEAFF"
android:textSize="15sp" />
<ImageView
android:layout_width="23dp"
android:layout_height="19dp"
android:layout_marginStart="5dp"
android:src="@mipmap/icon_cinema_ticket" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="35dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/conversion_quantity"
android:textColor="#FFFFFF"
android:textSize="14sp" />
<LinearLayout
android:layout_width="90dp"
android:layout_height="25dp"
android:background="@mipmap/backgroud_tickets_plus_minus">
<View
android:id="@+id/sub"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/tickets_plus_minus"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="center"
android:singleLine="true"
android:text="0"
android:textColor="#000000"
android:textSize="12dp" />
<View
android:id="@+id/add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="13dp"
android:gravity="center">
<TextView
android:id="@+id/quantity_need"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/conversion_quantity_need"
android:textColor="#DFEAFF"
android:textSize="12sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="3dp"
android:src="@mipmap/icon_collectibles2" />
</LinearLayout>
<ImageButton
android:id="@+id/cinema_ticket_exchange"
android:layout_width="140dp"
android:layout_height="55dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@mipmap/backgroundn_cinema_ticket_exchange" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="7dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="7dp"
android:layout_marginBottom="23dp"
android:background="@drawable/background_cinema_ticket_hint">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingStart="3dp"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/conversion_quantity_need_of_use"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:text="@string/conversion_quantity_need_of_use1"
android:textColor="#000000"
android:textSize="13sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/conversion_quantity_need_of_use2"
android:textColor="#000000"
android:textSize="13sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/conversion_quantity_need_of_use3"
android:textColor="#000000"
android:textSize="13sp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@@ -13,7 +13,7 @@
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="12dp"
android:scaleType="fitEnd"
android:scaleType="fitCenter"
app:layout_constraintBottom_toTopOf="@+id/close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

View File

@@ -0,0 +1,68 @@
<?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="218dp"
android:layout_marginStart="22dp"
android:layout_marginEnd="22dp"
android:background="@drawable/background_order_dialog"
android:orientation="vertical">
<TextView
android:id="@+id/liberal_battle_pass"
android:layout_width="match_parent"
android:gravity="center"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="73dp"
android:text="liberal_battle_pass2"
android:textColor="#0D21B2"
android:textSize="16sp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="57dp">
<LinearLayout
android:id="@+id/cancel"
android:layout_width="116dp"
android:layout_height="38dp"
android:layout_marginStart="19dp"
android:background="@mipmap/button_liberal_battle_cancel"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/cancel"
android:textColor="#FFFFFF"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/liberal_battle_sure"
android:layout_width="116dp"
android:layout_height="38dp"
android:layout_gravity="end"
android:layout_marginEnd="19dp"
android:background="@mipmap/button_liberal_battle_sure"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/confirm"
android:textColor="#E03600"
android:textSize="14sp" />
</LinearLayout>
</FrameLayout>
</LinearLayout>

View File

@@ -0,0 +1,182 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="218dp"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/background_order_dialog"
android:orientation="vertical">
<ImageView
android:id="@+id/war_order_close"
android:layout_width="19dp"
android:layout_height="19dp"
android:layout_gravity="end"
android:layout_marginTop="14dp"
android:layout_marginEnd="14dp"
android:src="@mipmap/icon_sud_rule_close" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="2dp"
android:text="@string/order_level"
android:textColor="#0D21B2"
android:textSize="16sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center_vertical">
<TextView
android:id="@+id/current"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="46dp"
android:text="Lv7"
android:textColor="#CE2BFF"
android:textSize="14sp" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="221dp"
android:layout_height="wrap_content"
android:layout_marginStart="7dp">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="221dp"
android:layout_height="6dp"
android:max="100"
android:progress="10"
android:progressDrawable="@drawable/order_level_progress_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/exp_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#000"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="500/1000" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="15dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buying_experience_point"
android:textColor="#0D21B2"
android:textSize="14sp" />
<LinearLayout
android:layout_width="90dp"
android:layout_height="25dp"
android:background="@mipmap/backgroud_tickets_plus_minus">
<View
android:id="@+id/sub"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/tickets_plus_minus"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@null"
android:gravity="center"
android:imeOptions="actionSend"
android:inputType="number"
android:singleLine="true"
android:text="0"
android:textColor="#000000"
android:textSize="12dp" />
<View
android:id="@+id/add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
<TextView
android:id="@+id/order_level_diamond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="100"
android:textColor="#0D21B2"
android:textSize="11sp" />
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginStart="5dp"
android:src="@mipmap/icon_diamond2" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/balance_diamond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="100"
android:textColor="#0D21B2"
android:textSize="11sp" />
<ImageView
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginStart="5dp"
android:src="@mipmap/icon_diamond2" />
</LinearLayout>
<LinearLayout
android:id="@+id/buying_experience"
android:layout_width="116dp"
android:layout_height="38dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@mipmap/button_buying_experience"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="@string/buying_experience"
android:textColor="#E03600"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content"
android:layout_marginStart="22dp"
android:layout_marginEnd="22dp"
android:background="@drawable/background_order_dialog"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/close"
android:layout_width="19dp"
android:layout_height="19dp"
android:layout_gravity="end"
android:layout_marginTop="14dp"
android:layout_marginEnd="14dp"
android:src="@mipmap/icon_sud_rule_close" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="@string/upgrade_elite"
android:textColor="#0D21B2"
android:textSize="23sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="15dp"
android:gravity="center"
android:text="@string/upgrade_elite2"
android:textColor="#0D21B2"
android:textSize="16sp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<Button
android:id="@+id/button_quintessence"
android:layout_width="116dp"
android:layout_height="38dp"
android:layout_marginStart="34dp"
android:background="@mipmap/bg_dialog_battlepass_btn"
android:text="@string/upgrade_elite_type1"
android:textAllCaps="false"
android:textColor="#F36100"
android:textSize="14sp" />
<Button
android:id="@+id/button_enjoy"
android:layout_width="116dp"
android:layout_height="38dp"
android:layout_gravity="end"
android:layout_marginEnd="34dp"
android:background="@mipmap/bg_dialog_battlepass_btn"
android:text="@string/upgrade_elite_type2"
android:textAllCaps="false"
android:textColor="#F36100"
android:textSize="14sp" />
</FrameLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,56 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="380dp"
android:background="@drawable/background_order_dialog"
android:orientation="vertical">
<ImageView
android:layout_width="111dp"
android:layout_height="62.5dp"
android:layout_gravity="center"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:src="@mipmap/icon_order_rule" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_marginBottom="15dp"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/rule"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="14dp"
android:layout_marginEnd="14dp"
android:textColor="#0D21B2"
tools:text="1.戰令開啟時,完成戰令任務,提升戰令等級,可獲得大量等級獎勵。\n2.所有用戶免費解鎖普通版,戰令開啟時隨時可進階為精英版和尊享版,獲得豐厚額外專屬獎勵。\n3.三種戰令都會獎勵積分,可在兌換商城中兌換心儀的寶貝,部分寶貝兌換有戰令等級要求或兌換數量限制。\n4.每日任務0點刷新未完成任務進度不再累計每季任務將會在新一季戰令開啟時刷新。\n5.任務達成時需主動領取經驗,未领取經驗將會在任務刷新時過期。\n6.活動最終解釋權歸PDLIVE所有。"
android:textSize="14sp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
<ImageView
android:id="@+id/close"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:src="@mipmap/icon_order_rule_close" />
</LinearLayout>

View File

@@ -0,0 +1,125 @@
<?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="282dp"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/background_order_dialog"
android:orientation="vertical">
<ImageView
android:id="@+id/war_order_close"
android:layout_width="19dp"
android:layout_height="19dp"
android:layout_gravity="end"
android:layout_marginTop="10dp"
android:layout_marginEnd="14dp"
android:src="@mipmap/icon_sud_rule_close" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/exchange_particulars"
android:textColor="#0D21B2"
android:textSize="16sp" />
<LinearLayout
android:background="@mipmap/bg_dialog_battlepass_exchange"
android:layout_width="99dp"
android:layout_height="99dp"
android:layout_gravity="center"
android:layout_marginTop="19dp">
<ImageView
android:id="@+id/exchange_particulars"
android:layout_width="99dp"
android:layout_height="99dp"
android:layout_gravity="center"
android:scaleType="centerCrop"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/point_exchange_number"
android:textColor="#0D21B2"
android:textSize="14sp" />
<LinearLayout
android:layout_width="90dp"
android:layout_height="25dp"
android:background="@mipmap/backgroud_tickets_plus_minus">
<View
android:id="@+id/sub"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/tickets_plus_minus"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@null"
android:gravity="center"
android:imeOptions="actionSend"
android:inputType="number"
android:singleLine="true"
android:text="0"
android:textColor="#000000"
android:textSize="12dp" />
<View
android:id="@+id/add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/point_exchange_linear"
android:layout_width="140dp"
android:layout_height="38dp"
android:layout_gravity="center"
android:layout_marginTop="17dp"
android:background="@mipmap/button_buying_experience"
android:gravity="center_horizontal">
<TextView
android:id="@+id/point_exchange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="#E03600"
android:textSize="14sp"
tools:text="123" />
<ImageView
android:layout_width="19dp"
android:layout_height="21dp"
android:layout_marginTop="6dp"
android:src="@mipmap/ic_integral" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:textColor="#E03600"
android:textSize="14sp"
android:text="@string/point_exchange2" />
</LinearLayout>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -411,7 +411,7 @@
<string name="live_link_mic_cannot_link_2">Connecting wheat is currently in progress~</string>
<string name="live_link_mic_cannot_pk">You are already in PK</string>
<string name="live_link_mic_pk_1">We</string>
<string name="live_link_mic_pk_2">Other party</string>
<string name="live_link_mic_pk_2">Opponent</string>
<string name="live_coin_not_enough">The balance is insufficient. Do you want to recharge it?</string>
<string name="live_online_anchor">Current online anchor</string>
<string name="link_mic_play_game">The other anchor is in the game</string>
@@ -1386,5 +1386,41 @@ Limited ride And limited avatar frame</string>
<string name="room_sill0_100">0-100 coins</string>
<string name="room_sill100_500">100-500 coins</string>
<string name="room_sill500_m">Above 500 coins</string>
<string name="combo">combo X</string>
<string name="conversion_quantity">Exchange quantity:</string>
<string name="conversion_quantity_need">Need %s</string>
<string name="conversion_quantity_need_of_use">Exchange&amp;Usage Rules:</string>
<string name="conversion_quantity_need_of_use1">1.One star coin can be exchanged for one ticket. You can customize the exchange quantity according to your needs. Once the ticket is exchanged, it cannot be revoked. Please confirm in advance;</string>
<string name="conversion_quantity_need_of_use2">2.One ticket can be used to watch one episode of a short drama. After successful redemption, you can return to the viewing page and use the ticket to continue watching the movie;</string>
<string name="conversion_quantity_need_of_use3">3.Ticket prohibit illegal activities such as offline trading and acquisitions, and PDLIVE will crack down severely on various profit-making trading activities.</string>
<string name="rule_of_war_hint1">1. When the BattlePass is activated, completing the BattlePass task and increasing the BattlePass level can earn a large amount of level rewards.\n</string>
<string name="rule_of_war_hint2">2. All users can unlock the regular version for free, and when the BattlePass is activated, they can upgrade to the elite version and the luxury version at any time, and receive rich additional exclusive rewards.\n</string>
<string name="upgrade_elite">Upgrade Elite/Luxury BattlePass</string>
<string name="upgrade_elite_type1">Upgrade Elite BattlePass</string>
<string name="upgrade_elite_type2">Upgrade Luxury BattlePass</string>
<string name="upgrade_elite2">You can receive a massive amount of points and exchange more rewards</string>
<string name="rule_of_war_hint3">3.三種戰令都會獎勵積分,可在兌換商城中兌換心 儀的寶貝,部分寶貝兌換有戰令等級要求或兌換數 量限制。</string>
<string name="rule_of_war_hint4">4.每日任務0點刷新未完成任務進度不再累計 每季任務將會在新一季戰令開啟時刷新。</string>
<string name="rule_of_war_hint5">5.任務達成時需主動領取經驗,未领取經驗將會在 任務刷新時自动领取。</string>
<string name="rule_of_war_hint6">6.活動最終解釋權歸PDLIVE所有。</string>
<string name="more_integral">More points</string>
<string name="gift_overvalue">Gifts worth over 200%</string>
<string name="gift_overvalue3">Gifts worth over 300%</string>
<string name="unlock_more_gifts">More Rare outfits</string>
<string name="unlock_more_gifts2">More Collectible outfits</string>
<string name="has_reached_level_after_opening">After openedthe rewards that have reached will be automatically unlocked!</string>
<string name="order_level">My level</string>
<string name="buying_experience_point">Purchase EXP value</string>
<string name="buying_experience">Buy</string>
<string name="this_activity_is_over">This activity has ended. Please collect the unclaimed rewards as soon as possible.Points can be reserved for future use</string>
<string name="exchange_particulars">Exchange Details</string>
<string name="point_exchange">%s(points) exchange</string>
<string name="point_exchange2">exchange</string>
<string name="point_exchange_number">Quantity</string>
<string name="battlepass_exchange_buy_integral">Insufficient points</string>
<string name="battlepass_exchange_buy_max">The quantity of goods exchanged has reached the upper limit</string>
<string name="battlepass_zl_get">Successfully opened</string>
<string name="battlepass_buy_max">You have purchased the BattlePass</string>
</resources>

View File

@@ -1383,4 +1383,40 @@
<string name="room_sill0_100">0-100星幣</string>
<string name="room_sill100_500">100-500星幣</string>
<string name="room_sill500_m">500以上星幣</string>
<string name="combo">連擊×</string>
<string name="conversion_quantity">兌換數量:</string>
<string name="conversion_quantity_need">需要 %s</string>
<string name="conversion_quantity_need_of_use">兌換&amp;使用規則:</string>
<string name="conversion_quantity_need_of_use1">1.1星幣兌換1張觀影券您可以根據需求自定義兌換數量觀影券一經兌換不可撤銷請提前確認</string>
<string name="conversion_quantity_need_of_use2">2.1張觀影券可觀看一集短劇,兌換成功後即可返回觀影頁面,使用觀影券繼續觀看影片;</string>
<string name="conversion_quantity_need_of_use3">3.觀影券禁止線下交易、收購等不正當行為PDLIVE將對各類以盈利為目的的交易行為進行嚴厲打擊。</string>
<string name="rule_of_war_hint1">1.戰令開啟時,完成戰令任務,提升戰令等級,可 獲得大量等級獎勵。</string>
<string name="rule_of_war_hint2">2.所有用戶免費解鎖普通版,戰令開啟時隨時可進 階為精英版和尊享版,獲得豐厚額外專屬獎勵。</string>
<string name="rule_of_war_hint3">3.三種戰令都會獎勵積分,可在兌換商城中兌換心 儀的寶貝,部分寶貝兌換有戰令等級要求或兌換數 量限制。</string>
<string name="rule_of_war_hint4">4.每日任務0點刷新未完成任務進度不再累計 每季任務將會在新一季戰令開啟時刷新。</string>
<string name="rule_of_war_hint5">5.任務達成時需主動領取經驗,未领取經驗將會在 任務刷新時自动领取。</string>
<string name="rule_of_war_hint6">6.活動最終解釋權歸PDLIVE所有。</string>
<string name="upgrade_elite">升級精英/尊享戰令</string>
<string name="upgrade_elite_type1">升級精英戰令</string>
<string name="upgrade_elite_type2">升級尊享戰令</string>
<string name="upgrade_elite2">可領取海量積分,兌換更多獎勵</string>
<string name="more_integral">更多積分</string>
<string name="gift_overvalue">禮物價值超 200%</string>
<string name="gift_overvalue3">禮物價值超 300%</string>
<string name="unlock_more_gifts">解鎖更多禮物 和全套珍稀裝扮</string>
<string name="unlock_more_gifts2">解鎖更多禮物 和全套典藏裝扮</string>
<string name="has_reached_level_after_opening">開通后已達到等級的獎勵將會自動解鎖!</string>
<string name="order_level">我的等級</string>
<string name="buying_experience_point">購買經驗值:</string>
<string name="buying_experience">購買</string>
<string name="this_activity_is_over">本期活動已結束,請儘快領取未領取的獎勵積分可保留下次使用</string>
<string name="exchange_particulars">兌換詳情</string>
<string name="point_exchange">%s(積分) 兌換</string>
<string name="point_exchange2">兌換</string>
<string name="point_exchange_number">數量:</string>
<string name="battlepass_exchange_buy_integral">積分不足</string>
<string name="battlepass_exchange_buy_max">商品兌換數量已達到上限</string>
<string name="battlepass_zl_get">開通成功</string>
<string name="battlepass_buy_max">您已購買該戰令</string>
</resources>

View File

@@ -1382,4 +1382,40 @@
<string name="room_sill0_100">0-100星幣</string>
<string name="room_sill100_500">100-500星幣</string>
<string name="room_sill500_m">500以上星幣</string>
<string name="combo">連擊×</string>
<string name="conversion_quantity">兌換數量:</string>
<string name="conversion_quantity_need">需要 %s</string>
<string name="conversion_quantity_need_of_use">兌換&amp;使用規則:</string>
<string name="conversion_quantity_need_of_use1">1.1星幣兌換1張觀影券您可以根據需求自定義兌換數量觀影券一經兌換不可撤銷請提前確認</string>
<string name="conversion_quantity_need_of_use2">2.1張觀影券可觀看一集短劇,兌換成功後即可返回觀影頁面,使用觀影券繼續觀看影片;</string>
<string name="conversion_quantity_need_of_use3">3.觀影券禁止線下交易、收購等不正當行為PDLIVE將對各類以盈利為目的的交易行為進行嚴厲打擊。</string>
<string name="rule_of_war_hint1">1.戰令開啟時,完成戰令任務,提升戰令等級,可 獲得大量等級獎勵。</string>
<string name="rule_of_war_hint2">2.所有用戶免費解鎖普通版,戰令開啟時隨時可進 階為精英版和尊享版,獲得豐厚額外專屬獎勵。</string>
<string name="rule_of_war_hint3">3.三種戰令都會獎勵積分,可在兌換商城中兌換心 儀的寶貝,部分寶貝兌換有戰令等級要求或兌換數 量限制。</string>
<string name="rule_of_war_hint4">4.每日任務0點刷新未完成任務進度不再累計 每季任務將會在新一季戰令開啟時刷新。</string>
<string name="rule_of_war_hint5">5.任務達成時需主動領取經驗,未领取經驗將會在 任務刷新時自动领取。</string>
<string name="rule_of_war_hint6">6.活動最終解釋權歸PDLIVE所有。</string>
<string name="upgrade_elite">升級精英/尊享戰令</string>
<string name="upgrade_elite_type1">升級精英戰令</string>
<string name="upgrade_elite_type2">升級尊享戰令</string>
<string name="upgrade_elite2">可領取海量積分,兌換更多獎勵</string>
<string name="more_integral">更多積分</string>
<string name="gift_overvalue">禮物價值超 200%</string>
<string name="gift_overvalue3">禮物價值超 300%</string>
<string name="unlock_more_gifts">解鎖更多禮物 和全套珍稀裝扮</string>
<string name="unlock_more_gifts2">解鎖更多禮物 和全套典藏裝扮</string>
<string name="has_reached_level_after_opening">開通后已達到等級的獎勵將會自動解鎖!</string>
<string name="order_level">我的等級</string>
<string name="buying_experience_point">購買經驗值:</string>
<string name="buying_experience">購買</string>
<string name="this_activity_is_over">本期活動已結束,請儘快領取未領取的獎勵積分可保留下次使用</string>
<string name="exchange_particulars">兌換詳情</string>
<string name="point_exchange">%s(積分) 兌換</string>
<string name="point_exchange2">兌換</string>
<string name="point_exchange_number">數量:</string>
<string name="battlepass_exchange_buy_integral">積分不足</string>
<string name="battlepass_exchange_buy_max">商品兌換數量已達到上限</string>
<string name="battlepass_zl_get">開通成功</string>
<string name="battlepass_buy_max">您已購買該戰令</string>
</resources>

View File

@@ -1382,5 +1382,40 @@
<string name="room_sill0_100">0-100星幣</string>
<string name="room_sill100_500">100-500星幣</string>
<string name="room_sill500_m">500以上星幣</string>
<string name="combo">連擊×</string>
<string name="conversion_quantity">兌換數量:</string>
<string name="conversion_quantity_need">需要 %s</string>
<string name="conversion_quantity_need_of_use">兌換&amp;使用規則:</string>
<string name="conversion_quantity_need_of_use1">1.1星幣兌換1張觀影券您可以根據需求自定義兌換數量觀影券一經兌換不可撤銷請提前確認</string>
<string name="conversion_quantity_need_of_use2">2.1張觀影券可觀看一集短劇,兌換成功後即可返回觀影頁面,使用觀影券繼續觀看影片;</string>
<string name="conversion_quantity_need_of_use3">3.觀影券禁止線下交易、收購等不正當行為PDLIVE將對各類以盈利為目的的交易行為進行嚴厲打擊。</string>
<string name="rule_of_war_hint1">1.戰令開啟時,完成戰令任務,提升戰令等級,可 獲得大量等級獎勵。</string>
<string name="rule_of_war_hint2">2.所有用戶免費解鎖普通版,戰令開啟時隨時可進 階為精英版和尊享版,獲得豐厚額外專屬獎勵。</string>
<string name="rule_of_war_hint3">3.三種戰令都會獎勵積分,可在兌換商城中兌換心 儀的寶貝,部分寶貝兌換有戰令等級要求或兌換數 量限制。</string>
<string name="rule_of_war_hint4">4.每日任務0點刷新未完成任務進度不再累計 每季任務將會在新一季戰令開啟時刷新。</string>
<string name="rule_of_war_hint5">5.任務達成時需主動領取經驗,未领取經驗將會在 任務刷新時自动领取。</string>
<string name="rule_of_war_hint6">6.活動最終解釋權歸PDLIVE所有。</string>
<string name="upgrade_elite">升級精英/尊享戰令</string>
<string name="upgrade_elite_type1">升級精英戰令</string>
<string name="upgrade_elite_type2">升級尊享戰令</string>
<string name="upgrade_elite2">可領取海量積分,兌換更多獎勵</string>
<string name="more_integral">更多積分</string>
<string name="gift_overvalue">禮物價值超 200%</string>
<string name="gift_overvalue3">禮物價值超 300%</string>
<string name="unlock_more_gifts">解鎖更多禮物 和全套珍稀裝扮</string>
<string name="unlock_more_gifts2">解鎖更多禮物 和全套典藏裝扮</string>
<string name="has_reached_level_after_opening">開通后已達到等級的獎勵將會自動解鎖!</string>
<string name="order_level">我的等級</string>
<string name="buying_experience_point">購買經驗值:</string>
<string name="buying_experience">購買</string>
<string name="this_activity_is_over">本期活動已結束,請儘快領取未領取的獎勵積分可保留下次使用</string>
<string name="exchange_particulars">兌換詳情</string>
<string name="point_exchange">%s(積分) 兌換</string>
<string name="point_exchange2">兌換</string>
<string name="point_exchange_number">數量:</string>
<string name="battlepass_exchange_buy_integral">積分不足</string>
<string name="battlepass_exchange_buy_max">商品兌換數量已達到上限</string>
<string name="battlepass_zl_get">開通成功</string>
<string name="battlepass_buy_max">您已購買該戰令</string>
</resources>

View File

@@ -411,7 +411,7 @@
<string name="live_link_mic_cannot_link_2">Connecting wheat is currently in progress~</string>
<string name="live_link_mic_cannot_pk">You are already in PK</string>
<string name="live_link_mic_pk_1">We</string>
<string name="live_link_mic_pk_2">Other party</string>
<string name="live_link_mic_pk_2">Opponent</string>
<string name="live_coin_not_enough">The balance is insufficient. Do you want to recharge it?</string>
<string name="live_online_anchor">Current online anchor</string>
<string name="link_mic_play_game">The other anchor is in the game</string>
@@ -1389,4 +1389,39 @@ Limited ride And limited avatar frame</string>
<string name="room_sill0_100">0-100 coins</string>
<string name="room_sill100_500">100-500 coins</string>
<string name="room_sill500_m">Above 500 coins</string>
<string name="combo">combo X</string>
<string name="conversion_quantity">Exchange quantity:</string>
<string name="conversion_quantity_need">Need %s</string>
<string name="conversion_quantity_need_of_use">Exchange&amp;Usage Rules:</string>
<string name="conversion_quantity_need_of_use1">1.One star coin can be exchanged for one ticket. You can customize the exchange quantity according to your needs. Once the ticket is exchanged, it cannot be revoked. Please confirm in advance;</string>
<string name="conversion_quantity_need_of_use2">2.One ticket can be used to watch one episode of a short drama. After successful redemption, you can return to the viewing page and use the ticket to continue watching the movie;</string>
<string name="conversion_quantity_need_of_use3">3.Ticket prohibit illegal activities such as offline trading and acquisitions, and PDLIVE will crack down severely on various profit-making trading activities.</string>
<string name="upgrade_elite">Upgrade Elite/Luxury BattlePass</string>
<string name="upgrade_elite_type1">Upgrade Elite BattlePass</string>
<string name="upgrade_elite_type2">Upgrade Luxury BattlePass</string>
<string name="upgrade_elite2">You can receive a massive amount of points and exchange more rewards</string>
<string name="rule_of_war_hint1">1. When the BattlePass is activated, completing the BattlePass task and increasing the BattlePass level can earn a large amount of level rewards.\n</string>
<string name="rule_of_war_hint2">2. All users can unlock the regular version for free, and when the BattlePass is activated, they can upgrade to the elite version and the luxury version at any time, and receive rich additional exclusive rewards.\n</string>
<string name="rule_of_war_hint3">3.三種戰令都會獎勵積分,可在兌換商城中兌換心 儀的寶貝,部分寶貝兌換有戰令等級要求或兌換數 量限制。</string>
<string name="rule_of_war_hint4">4.每日任務0點刷新未完成任務進度不再累計 每季任務將會在新一季戰令開啟時刷新。</string>
<string name="rule_of_war_hint5">5.任務達成時需主動領取經驗,未领取經驗將會在 任務刷新時自动领取。</string>
<string name="rule_of_war_hint6">6.活動最終解釋權歸PDLIVE所有。</string>
<string name="more_integral">More points</string>
<string name="gift_overvalue">Gifts worth over 200%</string>
<string name="gift_overvalue3">Gifts worth over 300%</string>
<string name="unlock_more_gifts">More Rare outfits</string>
<string name="unlock_more_gifts2">More Collectible outfits</string>
<string name="has_reached_level_after_opening">After openedthe rewards that have reached will be automatically unlocked!</string>
<string name="order_level">My level</string>
<string name="buying_experience_point">Purchase EXP value</string>
<string name="buying_experience">Buy</string>
<string name="this_activity_is_over">This activity has ended. Please collect the unclaimed rewards as soon as possible.Points can be reserved for future use</string>
<string name="exchange_particulars">Exchange Details</string>
<string name="point_exchange">%s(points) exchange</string>
<string name="point_exchange2">exchange</string>
<string name="point_exchange_number">Quantity</string>
<string name="battlepass_exchange_buy_integral">Insufficient points</string>
<string name="battlepass_exchange_buy_max">The quantity of goods exchanged has reached the upper limit</string>
<string name="battlepass_zl_get">Successfully opened</string>
<string name="battlepass_buy_max">You have purchased the BattlePass</string>
</resources>

View File

@@ -4,14 +4,14 @@ ext {
buildToolsVersion: "29.0.2",
minSdkVersion : 21,
targetSdkVersion : 33,
versionCode : 458,
versionName : "6.6.2"
versionCode : 459,
versionName : "6.6.3"
]
manifestPlaceholders = [
//正式、
serverHost : "https://napi.yaoulive.com",
// serverHost : "https://napi.yaoulive.com",
// 测试
//serverHost : " https://ceshi.yaoulive.com",
serverHost : " https://ceshi.yaoulive.com",
//百度语音识别
@@ -19,11 +19,12 @@ ext {
baiduAppKey : "zgCgFhUKEOV7I3ZXDFpTfnRB",
baiduAppSecretKey: "nEVSgmuGpU0pjPr6VleEGGAl0hzGW52S",
// true表示谷歌支付 false 0 链接包 1 谷歌包 2华为包
isGooglePlay : 1,
isGooglePlay : 0,
//是否上报异常日志
isUploadLog : true,
isUploadLog : true,
//是否打包成插件包模式
isPluginModel : false,
isPluginModel : true,
]
}

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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