Compare commits

..

202 Commits

Author SHA1 Message Date
edwinQQQ
c64c541a56 Bug fix 2025-03-06 14:24:33 +08:00
eggmanQQQ
964980c714 fix: fixbug 2025-03-04 16:35:11 +08:00
eggmanQQQ
2d417a258a bugfix 2025-03-04 14:16:44 +08:00
eggmanQQQ
288aaebc3b fix: bugfix 2025-03-03 18:43:44 +08:00
eggmanQQQ
47aa4a078b fix: bugfix 2025-03-03 15:26:59 +08:00
eggmanQQQ
201c12d381 feat : UI走查 2025-02-27 18:58:31 +08:00
eggmanQQQ
fe4a576b17 feat: bugFIx , 代理 翻译 2025-02-27 15:47:51 +08:00
eggmanQQQ
9f6f785dbb fix: 尝试修复 同个人上多个麦位的异常问题 2025-02-26 18:14:06 +08:00
eggmanQQQ
bb31162bb9 fix: 代理UI问题fix 2025-02-26 18:13:45 +08:00
eggmanQQQ
b25ad423d0 fix: bugfix 2025-02-26 14:08:27 +08:00
eggmanQQQ
c15b8581be fix ; bug fix 2025-02-26 14:05:00 +08:00
eggmanQQQ
368caf9392 feat : 登录页面修改 , fix 金币红包 金币统计 2025-02-26 10:42:23 +08:00
eggmanQQQ
769232137d feat : 代理 接口调整 2025-02-26 10:41:58 +08:00
eggmanQQQ
d3f866dc88 feat : 红包界面修改 2025-02-25 17:33:54 +08:00
eggmanQQQ
3cbbd6fb42 feat : 代理相关功能 接入 接口 2025-02-25 15:58:50 +08:00
eggmanQQQ
f1fdf6fb3f feat : 代理 UI , 确认自定消息 UI 2025-02-24 16:43:27 +08:00
eggmanQQQ
e7d206317f feat : 去掉公聊大厅代码 2025-02-21 14:45:39 +08:00
eggmanQQQ
07c02daae9 feat : 转赠主页 UI 2025-02-21 14:40:04 +08:00
eggmanQQQ
c73ebf5ae9 feat : 确认取消 自定义消息 2025-02-20 17:00:08 +08:00
eggmanQQQ
70475fc84e feat : 礼物数量 选择初步 提交 2025-02-19 11:13:13 +08:00
eggmanQQQ
96c9479203 fix: bugfix 2025-02-18 17:00:55 +08:00
eggmanQQQ
bad7564d67 feat : 优化首页 banner 加载 2025-02-18 10:41:03 +08:00
eggmanQQQ
3ceea1fae6 feat: 福袋 提测 2025-02-17 16:14:23 +08:00
eggmanQQQ
bb80b3ebb9 feat : 幸运礼包 初步可提测 2025-02-11 18:05:06 +08:00
eggmanQQQ
8931d17528 feat : 幸运礼包 UI图片 2025-02-08 17:09:13 +08:00
eggmanQQQ
a542955da2 feat: 幸运礼包 UI 2025-02-07 17:00:39 +08:00
eggmanQQQ
db2194fe02 fix: 尝试优化 banner + svga 的内存占用, 添加资源回收逻辑 2025-02-05 15:58:43 +08:00
eggmanQQQ
ef3810a0d5 fix 2025-01-21 15:41:39 +08:00
eggmanQQQ
1d569d4832 礼物弹窗优化, 超管逻辑 bugfix 2025-01-21 14:27:19 +08:00
eggmanQQQ
dff86396e4 feat : 飘屏调整 初次提交 2025-01-15 15:41:44 +08:00
eggmanQQQ
5c47f96b72 feat : 附带礼物 UI 初次提交 2025-01-14 18:21:23 +08:00
eggmanQQQ
ef86be9708 eat : 管理员 设置 吐司提示 - 代码补充 2025-01-14 18:19:56 +08:00
eggmanQQQ
e173b41c63 feat : 管理员 设置 吐司提示 2025-01-14 18:19:05 +08:00
eggmanQQQ
78960dd758 fix: bug fix 2025-01-14 18:15:58 +08:00
eggmanQQQ
5f6db6285e feat : 修复bug 2025-01-08 17:48:01 +08:00
eggmanQQQ
2e305164e8 地区增加也门 2025-01-08 16:46:25 +08:00
eggmanQQQ
4089cd2d4e fix : 修复bug 2025-01-08 16:32:21 +08:00
eggmanQQQ
8fa3310236 feat: UI 走查 2025-01-08 14:08:47 +08:00
eggmanQQQ
3764603c43 fix : 翻译问题 2025-01-07 17:59:31 +08:00
eggmanQQQ
a6ed7b8cfb feat : 注释 2025-01-07 16:57:57 +08:00
eggmanQQQ
d788783caa feat:翻译 2025-01-07 16:01:16 +08:00
eggmanQQQ
47d61f9063 fix: 修复bug 2025-01-06 18:01:38 +08:00
eggmanQQQ
b3ada5fd36 feat : fix 修复bug 2025-01-06 14:36:33 +08:00
eggmanQQQ
a4ea7027d4 fix : 隐藏显示后 房间悬浮按钮 不可点击 修复 2025-01-03 17:24:59 +08:00
eggmanQQQ
4a84f9f74a feat : 转赠 金币UI 2025-01-03 16:30:02 +08:00
eggmanQQQ
27f488b66c fix : 替换资源 2025-01-02 11:11:52 +08:00
eggmanQQQ
9e4646c28a fix : 悬浮按钮点击事件 2024-12-31 18:45:17 +08:00
eggmanQQQ
42ae9cb8c6 feat : 图片资源 压缩 2024-12-31 14:01:35 +08:00
eggmanQQQ
5b2fc450d3 fix : 中文图片修复 2024-12-31 11:37:39 +08:00
eggmanQQQ
fde366eaaa fix : 修复 兑换金币后砖石不刷新, 中文图片问题 2024-12-31 11:29:33 +08:00
eggmanQQQ
498837ea0d feat : 新增 banner 跳转 2024-12-31 10:50:18 +08:00
eggmanQQQ
b45eac2580 feat: 周星 闪屏 优化 2024-12-31 10:37:14 +08:00
eggmanQQQ
a5fd7bfd8d feat : 周星礼物 自动化 2024-12-30 17:30:16 +08:00
eggmanQQQ
c185808d60 feat : 房间右下角 悬浮按钮 折叠功能 2024-12-30 11:52:27 +08:00
eggmanQQQ
c90f3b648f feat : bug修复, 幸运礼物 数字改为 自动化大小 2024-12-27 17:56:54 +08:00
eggmanQQQ
2f9263f3c9 feat ; 预加载 麦位资源 2024-12-27 14:31:03 +08:00
eggmanQQQ
e5147ba8b1 feat : 排麦模式 兼容 10 15 19 20 麦房, 接入 设置管理员前的检查接口 2024-12-27 14:13:30 +08:00
eggmanQQQ
fed0acbd61 feat : 麦位上麦 检测判断接口 2024-12-26 19:42:30 +08:00
eggmanQQQ
ce706bf90f feat : 麦位皮肤 提交 2024-12-26 16:38:46 +08:00
eggmanQQQ
ef052fff6c feat : 修复麦位UI异常, 信誉等级 提交 2024-12-25 15:01:50 +08:00
eggmanQQQ
c9e43aff77 feat: 代充信誉值 初次提交 , 消息界面UI提交 2024-12-25 11:51:50 +08:00
eggmanQQQ
73cf388e17 feat : 19 麦位 初次提交 2024-12-24 15:51:18 +08:00
eggmanQQQ
db5044ee5d fix : 撤回 富文本泄露 修改 2024-12-19 18:46:31 +08:00
eggmanQQQ
712087dfaa fix : 修復 註冊也崩潰, 添加默認值 2024-12-18 21:31:27 +08:00
eggmanQQQ
3586905e9c fix: 修復 國家選項 文字問題 2024-12-18 21:13:58 +08:00
eggmanQQQ
b2dab994f3 fix ; bug fix 2024-12-18 21:05:28 +08:00
eggmanQQQ
52ee9fdfac fix: bugfix 2024-12-18 17:40:22 +08:00
eggmanQQQ
9c480c14df feat: 翻譯文本 2024-12-18 14:20:31 +08:00
eggmanQQQ
cabb123783 fix : 刷新不请求排行榜的问题 2024-12-18 11:07:55 +08:00
eggmanQQQ
ff1378339d feat : 房间内 推荐房间列表 去掉 人数显示 2024-12-18 10:52:16 +08:00
eggmanQQQ
359fc232e2 feat : 首页tab Layout ,阿拉伯适配 2024-12-18 10:44:11 +08:00
eggmanQQQ
82b9d931c7 feat: 第一次UI 走查 2024-12-17 19:17:42 +08:00
eggmanQQQ
2dd35ac0ce feat: 版本提测 2024-12-17 14:31:46 +08:00
eggmanQQQ
a1e908183d 1.feat : 房间用户资料卡片 , 初次提交 2024-12-12 19:05:38 +08:00
eggmanQQQ
52dd32c138 fix: 修复可能因为 网络问题拿不到钱包信息 导致的崩溃 2024-12-09 11:15:25 +08:00
eggmanQQQ
cc1a494102 feat : 压缩图片, 修复 viewbinding 反射崩溃, 富文本内存泄漏 2024-12-06 19:10:25 +08:00
eggmanQQQ
30e4765ad4 fix: 修复 可能存在的问题 2024-12-06 11:15:04 +08:00
eggmanQQQ
6b9b1bc8ca fix : 修复遗留bug 2024-12-05 17:38:24 +08:00
eggmanQQQ
521a0b0662 fix : fixbug 2024-12-04 20:08:31 +08:00
eggmanQQQ
5f72425b85 fix: bugfix 2024-12-04 18:55:01 +08:00
eggmanQQQ
257e40cb32 fix: bug fix 2024-12-04 14:40:44 +08:00
eggmanQQQ
b9dfb3e5ea fix : 修复bug 2024-12-03 19:32:51 +08:00
eggmanQQQ
f6db0c96ab fix : bugfix 2024-12-03 17:37:53 +08:00
eggmanQQQ
78dfe9c78b feat : 注册页面 加 年龄提示 2024-12-02 17:39:45 +08:00
eggmanQQQ
2666e98295 feat : bugfix , 封禁 初次提交 2024-12-02 16:18:15 +08:00
eggmanQQQ
c18b00c2eb feat : 礼物弹窗 送礼按钮 加大 2024-11-29 11:54:50 +08:00
eggmanQQQ
d07a550ef2 feat : bugfix , 连击时展示金币 , 音乐操作弹窗 更改 2024-11-29 11:41:28 +08:00
eggmanQQQ
f92d82486d feat : bug fix , 准备验收 2024-11-26 16:41:14 +08:00
eggmanQQQ
b5cbe0e146 feat: 翻译 2024-11-25 15:00:07 +08:00
eggmanQQQ
1123b26e88 feat : 提测 2024-11-22 19:40:15 +08:00
eggmanQQQ
cc591c4c3b feat : 首页 房间列表 改版 2024-11-20 16:06:36 +08:00
eggmanQQQ
e0b348f92a feat : 重写 装扮商城 , 我的装扮 , 装扮赠送 页面 2024-11-20 15:06:13 +08:00
eggmanQQQ
a48f768434 fix: 修复bug 2024-11-13 17:20:42 +08:00
eggmanQQQ
463855cf92 fix: 修复bug 2024-11-13 17:11:20 +08:00
eggmanQQQ
f5aa8ec8f1 fix: bug fix 2024-11-13 15:45:38 +08:00
eggmanQQQ
245dee330e fix : bugfix 2024-11-13 10:45:08 +08:00
eggmanQQQ
e2375029f0 fix: UI走查 2024-11-12 14:00:37 +08:00
eggmanQQQ
f1b92a291c fix: UI走查 2024-11-12 10:29:18 +08:00
eggmanQQQ
83fb1dc632 feat: bug fix 2024-11-11 17:01:10 +08:00
eggmanQQQ
f0a245f4cb feat: 铭牌, 翻译,图片资源 2024-11-08 19:08:03 +08:00
eggmanQQQ
2a3d716332 feat : 首页 第二banner 2024-11-07 18:36:33 +08:00
eggmanQQQ
e5794630c7 feat : 首页UI配置 接入 接口 2024-11-07 16:12:06 +08:00
eggmanQQQ
4dbba76ead feat: vip送礼飘屏,待联调 2024-11-07 11:05:10 +08:00
eggmanQQQ
47f3a05fd2 feat : vip 特權更改 2024-11-06 18:00:57 +08:00
eggmanQQQ
07dcede0ad fix : 房間背景 預覽播放問題 2024-11-06 17:48:31 +08:00
eggmanQQQ
7764add459 feat : 勿打擾 功能 2024-11-06 16:58:41 +08:00
eggmanQQQ
156c5aa52a fix: 修復 購買bug 2024-11-06 16:00:58 +08:00
eggmanQQQ
6df69e6e57 feat : 房間背景定制功能 2024-11-06 15:26:48 +08:00
eggmanQQQ
32359831b5 feat: 防打扰 功能预留 2024-11-04 16:30:26 +08:00
eggmanQQQ
117d1148fa feat: 首页UI配置 ,功能预留 2024-11-04 16:30:15 +08:00
eggmanQQQ
5d427d04a2 feat: 网络请求明文传输配置 2024-11-04 16:28:50 +08:00
eggmanQQQ
626d4885ac fix: 修复谷歌上报的崩溃 2024-11-04 16:27:53 +08:00
eggmanQQQ
8cb8734b3f feat : 私聊限制功能, 私聊消息发送前的拦截预留 2024-11-01 18:35:57 +08:00
eggmanQQQ
00bd56cf96 feat : 首页UI 自定义 工具类 2024-11-01 18:35:57 +08:00
eggmanQQQ
a60d48ec10 feat : 修改房间背景 弹窗, 首页 房间列表 banner item 2024-11-01 18:35:52 +08:00
eggmanQQQ
fd8844f9e7 fix : 聊天发送图片时的 权限申请文案 2024-11-01 10:54:52 +08:00
eggmanQQQ
a8c62182c3 feat : 房间外不飘屏 , MyUriUtil try carsh 处理 2024-11-01 10:16:30 +08:00
eggmanQQQ
4d56026d03 feat : 安卓10-12 音乐扫描兼容 2024-10-31 19:18:38 +08:00
eggmanQQQ
499f1af011 feat : 去掉 项目内 相册,图片选择,拍照 有关的 第三方库跟代码 2024-10-30 16:32:15 +08:00
eggmanQQQ
871c9a2b79 feat : 將 圖片選擇功能, 不用第三方,純用 系統自帶的 資源選擇器來實現, 並統一到一個入口 (IM模塊 單獨 處理) 2024-10-29 18:03:34 +08:00
eggmanQQQ
f465e6ad1a feat : 去掉 相机权限 2024-10-25 20:45:23 +08:00
eggmanQQQ
a889270e40 feat : 去掉 photoPick 可行判断 2024-10-25 18:43:56 +08:00
eggmanQQQ
b9d11dd276 fix 2024-10-25 17:57:18 +08:00
eggmanQQQ
610a1c4074 fix : bug fix 2024-10-25 17:19:07 +08:00
eggmanQQQ
d67458dac6 feat : 我的房間 國家 icon 2024-10-25 14:20:57 +08:00
eggmanQQQ
6916a96e4e feat : 刪除 提現相關內容 2024-10-25 13:44:21 +08:00
eggmanQQQ
6fde178c79 feat ; UI 走查問題 2024-10-25 13:43:48 +08:00
eggmanQQQ
ef38916fa1 fix: VIp 返回 null 时的处理 2024-10-25 10:32:31 +08:00
eggmanQQQ
e48bc137b8 feat : 优化 Vip中心 , 土耳其语言, 新版翻译 2024-10-24 17:29:14 +08:00
eggmanQQQ
a571555198 feat : 新增 用户地区接口 2024-10-24 14:16:10 +08:00
eggmanQQQ
b6dceb99bc fix : 增加修改头像成功的提示 , 区分 非vip9的头像选项 2024-10-23 18:00:17 +08:00
eggmanQQQ
0404d203b3 feat : 新增 土耳其语 ; bugfix 2024-10-23 17:11:50 +08:00
eggmanQQQ
9e590ada9e feat : 接入新H5 小游戏, 砸蛋换新图 , h5 弹窗打开游戏 逻辑优化 2024-10-23 15:26:27 +08:00
eggmanQQQ
1c0956d4b1 Merge branch 'dev/app_remove_liulishuo' into dev/app_vip_liulishuo
# Conflicts:
#	app/src/main/java/com/chwl/app/home/fragment/MeFragment.kt

feat ;  合并 去除liulishuo分支 到 vip分支
2024-10-22 17:22:37 +08:00
eggmanQQQ
19e820eae0 feat : 补全修改头像的弹窗 , 修复游戏房 boom图标异常 , 去掉开启游戏的模式限制 2024-10-22 17:11:28 +08:00
eggmanQQQ
71ce6ee37e feat : 补全 vip功能设置接口 及 相关功能 2024-10-22 15:35:30 +08:00
eggmanQQQ
e725a918e2 feat : 首页 国旗图标 预留 2024-10-22 14:32:13 +08:00
eggmanQQQ
55fe32db6e feat: vip 功能开关页面 2024-10-22 13:55:00 +08:00
eggmanQQQ
17a470e847 feat : 1.给自己送礼, 优化连击相关event 发送接收,修复资料弹窗唤起的礼物弹窗连击问题 2.工会头像,房间头像,用户头像区分 3.去掉小游戏 排麦模式等限制 4. vip 相关: 1.gif头像显示处理完毕 2024-10-21 17:17:33 +08:00
eggmanQQQ
b382d98839 feat: 优化 boomInfo 的 请求方式 2024-10-17 16:18:01 +08:00
eggmanQQQ
95fde27710 fix: 混淆后 632 解析问题, boom进度更新问题 2024-10-16 20:59:19 +08:00
eggmanQQQ
c84cfa3e4f update version & add ad_id 2024-10-15 21:30:20 +08:00
eggmanQQQ
e0f55ef03c update version 2024-10-15 20:04:40 +08:00
eggmanQQQ
a5725b32fd fix : boom 飘屏 房间标题修改 2024-10-15 20:00:30 +08:00
eggmanQQQ
c73c7425a7 feat : 麦位最小化时 回来异常 fix 2024-10-15 19:19:38 +08:00
eggmanQQQ
927059e873 try remove liulishuo download lib 2024-10-15 18:27:27 +08:00
eggmanQQQ
2d33a96376 fix : 清理公屏时没有清理另外两个tab的数据 2024-10-15 18:25:59 +08:00
eggmanQQQ
84ff7be54e feat : 游戏飘屏 修改 实现方案 2024-10-15 16:30:23 +08:00
eggmanQQQ
367a55654b feat : 火箭横幅位置下调 2024-10-15 15:10:20 +08:00
eggmanQQQ
7e48f77f1c fix: 修复bug 2024-10-15 14:23:33 +08:00
eggmanQQQ
11e5271193 feat: 游戏中奖飘屏,通用img飘屏,通用vga飘屏 添加dp68的 顶部间距 2024-10-15 11:01:09 +08:00
eggmanQQQ
20457a9bdf feat ; 接入 游戏飘屏, 修复bug 2024-10-15 10:29:03 +08:00
eggmanQQQ
47d1985d66 feat : 新增BOOM 公屏消息, 封禁弹窗功能修改 , 修复部分发现的bug 2024-10-11 18:01:23 +08:00
eggmanQQQ
4dc4dfc93b feat : 麦 人声音乐 开关功能, 初次提交 2024-10-10 19:42:26 +08:00
eggmanQQQ
04b71fa067 feat ; 房间消息公屏 分类 初次提交 2024-10-10 18:10:09 +08:00
eggmanQQQ
583173308e feat ; boom 功能 初步提测 2024-10-10 16:07:38 +08:00
eggmanQQQ
ce50e32a73 feat ; 去掉 carshCat 2024-09-26 16:11:20 +08:00
eggmanQQQ
7223db9e9c fix: 修复bug , 增加全局报错日志抓取 2024-09-26 15:28:07 +08:00
eggmanQQQ
4a2a9d4400 feat : 明文流量修改回退 2024-09-25 19:39:57 +08:00
eggmanQQQ
8049bdf6ea fix : bug 修复 2024-09-25 19:37:21 +08:00
eggmanQQQ
c90a961e2f feat : 修改权限 , 新增 定制礼物, 去掉友盟取设备号的sdk , 明文请求修改 2024-09-25 19:06:52 +08:00
eggmanQQQ
892f7c3e70 fix: vip 时间 2024-09-24 18:36:54 +08:00
eggmanQQQ
4c8182ee2f update version to 1.0.16 2024-09-24 18:26:33 +08:00
eggmanQQQ
343e73c6e3 feat: 修改 cp 相关bug 2024-09-24 18:18:53 +08:00
eggmanQQQ
eabe2ae7f8 feat : 修复bug 2024-09-24 11:31:29 +08:00
eggmanQQQ
36c011d18e feat : cp 功能 , 个人主页UI修改 , cp列表 , 房间cp飘屏,cp相关动画 , vip中心banner 显示剩余时间 2024-09-23 16:10:39 +08:00
eggmanQQQ
f929d78540 feat : 房間按鈕調整 (欠缺几个图片。app icon 和空状态图 未更改 2024-09-14 15:30:09 +08:00
eggmanQQQ
8184cdd6e1 feat: 房间 排行按钮, 音乐按钮 2024-09-13 13:53:13 +08:00
max
e4d44155dc feat: 更改类名 ,处理代码区分 2024-09-12 19:20:13 +08:00
max
06c974a6ed feat: 图片资源 格式转换 2024-09-12 19:03:23 +08:00
max
4bfbd19b53 fix: 修复bug, 调整升级弹窗不再弹出, 兼容旧版本连击横幅,礼物动画加快, 2024-09-12 18:55:55 +08:00
max
61a26f0c4f fix: 调整ui, 修复bug 2024-09-12 10:15:17 +08:00
max
e8cfc8a13b fix:异常注释 2024-09-11 16:23:24 +08:00
max
295de38074 feat: 幸运礼物 弹窗跟飘屏 , 替换 金币图标 2024-09-11 16:21:58 +08:00
max
e3c5f10d02 feat: 联机送礼功能 2024-09-09 18:39:22 +08:00
max
d949cfa7ff temp save 2024-09-05 19:24:44 +08:00
max
e30f4fd15f feat: 更正 tabbar size 2024-08-30 20:57:09 +08:00
max
90ece5366b feat: 更新数据明文处理 2024-08-30 20:54:13 +08:00
max
555b81589c feat: 修正 en 语言的部分 UI 2024-08-30 16:15:31 +08:00
max
e4cdc39ad8 feat: 修正反饋問題 2024-08-30 15:54:20 +08:00
max
09411df1ff feat:UI 調整 2024-08-29 19:21:07 +08:00
max
9cbc6cf39f fix: 修正 VIP 購買選項 model 2024-08-29 18:19:44 +08:00
max
444d043aa8 feat: 修改聯繫人列表 UI 2024-08-29 17:06:40 +08:00
max
f99d193598 feat: 修改信息列表 UI 2024-08-29 16:42:24 +08:00
max
4a57bd50c5 feat:UI 調整 2024-08-29 12:00:28 +08:00
eggmanQQQ
8a59f8a769 feat: 调整 RTL 布局 UI 2024-08-29 11:59:28 +08:00
max
2c1ecbb263 feat:UI 調整 2024-08-28 21:41:19 +08:00
max
aa2987cb0d feat:修正問題 2024-08-28 21:40:15 +08:00
eggmanQQQ
5e6864d87f feat: 更新 UI 2024-08-28 21:39:59 +08:00
eggmanQQQ
6aabeb3eb3 feat: 更新 UI 2024-08-28 17:36:16 +08:00
eggmanQQQ
9ff48bc500 feat: 移除资源,补充多语言 2024-08-28 13:55:59 +08:00
max
e9ba0b1929 feat:調整 VIP 顯示邏輯,移除公聊廳 2024-08-28 13:55:12 +08:00
max
adf2adc173 feat:調整 VIP 顯示邏輯,移除公聊廳 2024-08-27 16:51:46 +08:00
max
74b2d71821 調試 UI 2024-08-27 16:51:46 +08:00
eggmanQQQ
81a5c6ba65 feat: 補充卡片背景,補充 VIP 資源播放 MP4 的功能 2024-08-27 16:31:44 +08:00
eggmanQQQ
5f8a8113c6 feat:个人资料卡支持 MP4 资源 2024-08-27 11:53:49 +08:00
eggmanQQQ
b0bf9ce98d feat: 调整文案 2024-08-27 11:24:32 +08:00
eggmanQQQ
c3fcbc3942 feat: 更新资源,调整布局 2024-08-27 10:33:34 +08:00
max
6e08f397ee fix:Vip 頁面支持 MP4 播放,修正佈局問題 2024-08-26 16:58:19 +08:00
eggmanQQQ
3d29568b3c feat: 更新 VIP 页面 UI & 功能 2024-08-26 09:13:28 +08:00
eggmanQQQ
cb4dac8e81 feat: 更新 VIP 页面 UI & 功能 2024-08-23 19:29:38 +08:00
eggmanQQQ
f58701a2d6 version update 2024-08-20 10:53:52 +08:00
2191 changed files with 58678 additions and 37654 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -370,9 +370,18 @@
-keep class com.chwl.app.ui.widget.AppBarLayoutBehavior {*;}
#ViewBinding使用的反射生成的对应Binding
-keepclassmembers class * implements androidx.viewbinding.ViewBinding {
public static ** inflate(***);
-keep class * implements androidx.viewbinding.ViewBinding {
*;
}
-keep class * extends androidx.viewbinding.ViewBinding {
*;
}
#-keep class * implements androidx.databinding.ViewDataBinding {
# *;
#}
#-keep class * extends androidx.databinding.ViewDataBinding {
# *;
#}
#Flutter Wrapper
-dontwarn io.flutter.**

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -13,19 +13,18 @@
android:protectionLevel="signature" /> <!-- 谷歌内购权限 -->
<permission
android:name="${applicationId}.push.permission.MESSAGE"
android:protectionLevel="signature" /> <!-- Required -->
android:protectionLevel="signature" /> <!-- Required -->
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<queries>
<!-- <package android:name="com.facebook.katana" />-->
<!-- <package android:name="jp.naver.line.android" />-->
<!-- <package android:name="com.facebook.katana" />-->
<!-- <package android:name="jp.naver.line.android" />-->
<package android:name="com.android.vending" />
</queries>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
@@ -51,16 +50,22 @@
tools:node="remove" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission
tools:node="remove"
android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission
tools:node="remove"
android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
android:maxSdkVersion="28" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" />
android:maxSdkVersion="28" />
<uses-permission
android:name="android.permission.CAMERA"
tools:node="remove" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 如果需要实时音视频通话模块,下面的权限也是必须的。否则,可以不加 -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- SDK 权限申明, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
<!-- 和下面的 uses-permission 一起加入到你的 AndroidManifest 文件中。 -->
@@ -84,6 +89,7 @@
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" />
<application
android:name=".application.App"
android:allowBackup="false"
@@ -114,18 +120,18 @@
则需要考虑发起的intent会出现相同应用图标的选择对话框的情况
参考集成文档:https://www.linkedme.cc/docs/page4.html#link1
-->
<!-- <intent-filter>-->
<!-- <intent-filter>-->
<!-- &lt;!&ndash; 此处scheme值需要替换为后台设置中的scheme值 &ndash;&gt;-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<!-- &lt;!&ndash; 此处scheme值需要替换为后台设置中的scheme值 &ndash;&gt;-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
<!-- <data-->
<!-- android:host="main"-->
<!-- android:scheme="pikoapp" />-->
<!-- </intent-filter>-->
<!-- <data-->
<!-- android:host="main"-->
<!-- android:scheme="pikoapp" />-->
<!-- </intent-filter>-->
</activity>
<activity
@@ -146,56 +152,40 @@
</intent-filter>
</activity>
<!-- <meta-data-->
<!-- android:name="firebase_crashlytics_collection_enabled"-->
<!-- android:value="${CRASHLYTICS_COLLECTION_ENABLED}" /> &lt;!&ndash; 刘海屏适配 begin &ndash;&gt;-->
<!-- <meta-data-->
<!-- android:name="firebase_crashlytics_collection_enabled"-->
<!-- android:value="${CRASHLYTICS_COLLECTION_ENABLED}" /> &lt;!&ndash; 刘海屏适配 begin &ndash;&gt;-->
<!-- 小米 -->
<activity
android:name="com.soundcloud.crop.CropImageActivity"
android:screenOrientation="portrait" /> <!-- 华为 -->
<activity
android:name="com.darsh.multipleimageselect.activities.AlbumSelectActivity"
android:configChanges="orientation|screenSize"
android:exported="true"
android:theme="@style/MultipleImageSelectTheme">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.darsh.multipleimageselect.activities.ImageSelectActivity"
android:configChanges="orientation|screenSize"
android:exported="true"
android:theme="@style/MultipleImageSelectTheme">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity> <!-- 刘海屏适配 end -->
<!-- <activity-->
<!-- android:name="com.mob.tools.MobUIShell"-->
<!-- android:configChanges="keyboardHidden|orientation|screenSize"-->
<!-- android:theme="@android:style/Theme.Translucent.NoTitleBar"-->
<!-- android:windowSoftInputMode="stateHidden|adjustResize" /> &lt;!&ndash; 云信配置 begin ##################################################### &ndash;&gt;-->
<!-- 刘海屏适配 end -->
<!-- <activity-->
<!-- android:name="com.mob.tools.MobUIShell"-->
<!-- android:configChanges="keyboardHidden|orientation|screenSize"-->
<!-- android:theme="@android:style/Theme.Translucent.NoTitleBar"-->
<!-- android:windowSoftInputMode="stateHidden|adjustResize" /> &lt;!&ndash; 云信配置 begin ##################################################### &ndash;&gt;-->
<!--
APP key, 可以在这里设置,也可以在 SDKOptions 中提供。
如果 SDKOptions 中提供了,取 SDKOptions 中的值。
-->
<!-- <activity-->
<!-- android:name="app.molistar.fun.lineapi.LineAuthenticationCallbackActivity"-->
<!-- android:exported="true"-->
<!-- android:launchMode="singleTask"-->
<!-- android:noHistory="true">-->
<!-- <activity-->
<!-- android:name="app.molistar.fun.lineapi.LineAuthenticationCallbackActivity"-->
<!-- android:exported="true"-->
<!-- android:launchMode="singleTask"-->
<!-- android:noHistory="true">-->
<!-- &lt;!&ndash; 集成line客户端登录授权需要添如下格式的过滤器 &ndash;&gt;-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<!-- &lt;!&ndash; 集成line客户端登录授权需要添如下格式的过滤器 &ndash;&gt;-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- <data android:scheme="lineauth" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
<!-- <data android:scheme="lineauth" />-->
<!-- </intent-filter>-->
<!-- </activity>-->
<!--
声明云信后台服务,如需保持后台推送,使用独立进程效果会更好。
ca46478c438dda51d25306f52fe7506b
@@ -269,6 +259,9 @@
<activity
android:name=".avroom.activity.RoomTypeSwitchActivity"
android:screenOrientation="portrait" />
<activity
android:name=".DemoActivity"
android:screenOrientation="portrait" />
<activity
android:name=".avroom.activity.RoomBgSettingActivity"
android:screenOrientation="portrait" />
@@ -289,6 +282,11 @@
android:label="@string/main_androidmanifest_010"
android:screenOrientation="portrait"
android:theme="@style/AVRoomTheme" />
<activity
android:name="com.chwl.app.music.activity.AddLocalMusicListSpecialActivity"
android:label="@string/main_androidmanifest_010"
android:screenOrientation="portrait"
android:theme="@style/AVRoomTheme" />
<activity
android:name="com.chwl.app.music.activity.MusicListActivity"
android:label="@string/main_androidmanifest_011"
@@ -316,6 +314,18 @@
android:name=".ui.user.activity.UserInfoActivity"
android:label="@string/main_androidmanifest_016"
android:screenOrientation="portrait" />
<activity
android:name=".ui.user.activity.UserCpListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.user.activity.UserForbidActivity"
android:screenOrientation="portrait" />
<activity
android:name=".decoration.ui.activity.DressUpTabActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.search.SearchUserActivity"
android:screenOrientation="portrait" />
<activity
android:name=".audio.AudioRecordActivity"
android:label="@string/main_androidmanifest_017"
@@ -334,6 +344,9 @@
<activity
android:name=".ui.setting.SettingActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.setting.VipSetActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.relation.AttentionListActivity"
android:screenOrientation="portrait" />
@@ -349,9 +362,6 @@
<activity
android:name=".bills.activities.TotalBillsActivity"
android:screenOrientation="portrait" />
<activity
android:name=".bills.activities.WithdrawBillsActivity"
android:screenOrientation="portrait" />
<activity
android:name=".bills.activities.ChargeBillsActivity"
android:screenOrientation="portrait" />
@@ -491,6 +501,10 @@
android:name=".ui.widget.LevelUpDialog"
android:launchMode="singleTop"
android:theme="@style/dialogactivity" />
<activity
android:name=".base.PhotoPickActivity"
android:launchMode="singleTop"
android:theme="@style/dialogactivity" />
<activity android:name=".home.activity.NewUserListActivity" />
<activity
android:name=".ui.widget.RecallDialog"
@@ -548,10 +562,6 @@
<activity
android:name=".module_hall.team.activity.SelectTeamMemberActivity"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.team.activity.TeamInfoShowActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name=".module_hall.team.activity.TeamEditActivity"
android:screenOrientation="portrait"
@@ -692,7 +702,7 @@
<activity
android:name=".ui.webview.room_banner.RoomBannerWebDialogActivity"
android:theme="@style/dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" />
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.webview.TarotPayWebViewActivity"
android:theme="@style/dialog_web_view_activity" />
@@ -733,8 +743,8 @@
android:name=".ui.setting.PermissionGuideActivity"
android:screenOrientation="portrait" />
<activity
android:name=".vip.VipMainActivity"
android:screenOrientation="portrait" /> <!-- 隐私设置 -->
android:name=".vip.VipCenterActivity"
android:screenOrientation="portrait" />
<activity
android:name=".vip.VipSettingActivity"
android:screenOrientation="portrait" /> <!-- 通知提醒设置 -->
@@ -784,11 +794,6 @@
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".earn.activity.BindWithdrawMsgActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".earn.activity.GoldDetailActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
@@ -843,9 +848,9 @@
android:name="flutterEmbedding"
android:value="2" />
<!-- <meta-data-->
<!-- android:name="Mob-Https"-->
<!-- android:value="yes" />-->
<!-- <meta-data-->
<!-- android:name="Mob-Https"-->
<!-- android:value="yes" />-->
<provider
android:name="com.netease.nimlib.ipc.NIMContentProvider"
@@ -888,8 +893,9 @@
android:foregroundServiceType="remoteMessaging"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":core" />
<service android:name="com.netease.nimlib.service.ResponseService"
android:foregroundServiceType="remoteMessaging"/>
<service
android:name="com.netease.nimlib.service.ResponseService"
android:foregroundServiceType="remoteMessaging" />
<service
android:name=".service.DaemonService"
android:foregroundServiceType="mediaPlayback"
@@ -899,7 +905,8 @@
<activity android:name=".ui.language.LanguageActivity" />
<activity android:name=".public_chat.ui.message.PublicChatRoomMessageActivity"
<activity
android:name=".public_chat.ui.message.PublicChatRoomMessageActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
@@ -922,6 +929,14 @@
android:name=".pay.activity.GiveGoldActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldAgentsActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldBiliActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldDetailActivity"
android:screenOrientation="portrait"
@@ -953,10 +968,12 @@
android:windowSoftInputMode="adjustPan"
android:name=".ui.feedback.FeedbackActivity"
android:screenOrientation="portrait" />
<activity android:name=".ui.debug.DebugActivity"
android:screenOrientation="portrait"/>
<activity android:name=".ui.game_team.record.GameTeamRecordActivity"
android:screenOrientation="portrait"/>
<activity
android:name=".ui.debug.DebugActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.game_team.record.GameTeamRecordActivity"
android:screenOrientation="portrait" />
</application>
</manifest>

View File

@@ -1 +1,32 @@
[{"name":"Taiwan","abbr":"TW","mcc":"466","code":"886"},{"name":"Hong Kong","abbr":"HK","mcc":"454","code":"852"},{"name":"Singapore","abbr":"SG","mcc":"525","code":"65"},{"name":"Malaysia","abbr":"MY","mcc":"502","code":"60"},{"name":"China","abbr":"CN","mcc":"460","code":"86"}]
[
{
"name": "Taiwan",
"abbr": "TW",
"mcc": "466",
"code": "886"
},
{
"name": "Hong Kong",
"abbr": "HK",
"mcc": "454",
"code": "852"
},
{
"name": "Singapore",
"abbr": "SG",
"mcc": "525",
"code": "65"
},
{
"name": "Malaysia",
"abbr": "MY",
"mcc": "502",
"code": "60"
},
{
"name": "China",
"abbr": "CN",
"mcc": "460",
"code": "86"
}
]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,55 @@
package com.chwl.app
import android.content.Context
import android.content.Intent
import android.view.ViewGroup
import com.chwl.app.base.BaseViewBindingActivity
import com.chwl.app.bindadapter.BaseBindingAdapter
import com.chwl.app.bindadapter.BaseBindingViewHolder
import com.chwl.app.databinding.ActivityDemoBinding
import com.chwl.app.databinding.ListItemMicroBinding
import com.chwl.core.widget.layoutmanager.pagergridlayoutmanager.PagerGridLayoutManager.LayoutParams
import com.chwl.library.common.util.ClickUtils.click
import com.chwl.library.common.util.setViewWH
import com.chwl.library.common.util.setVis
class DemoActivity : BaseViewBindingActivity<ActivityDemoBinding>() {
companion object{
@JvmStatic
fun start(context: Context) {
val starter = Intent(context, DemoActivity::class.java)
context.startActivity(starter)
}
}
override fun init() {
var isOpen = false
binding.b1.click {
binding.btnLayout.setViewWH(height = if (!isOpen) ViewGroup.LayoutParams.WRAP_CONTENT else 1 , isDP = false)
isOpen = !isOpen
}
}
class DemoAdapter : BaseBindingAdapter<ListItemMicroBinding,Int>() {
override fun convert(helper: BaseBindingViewHolder<ListItemMicroBinding>, item: Int) {
val bindingAdapterPosition = helper.bindingAdapterPosition
helper.binding.root.setViewWH(width = LayoutParams.MATCH_PARENT, height = LayoutParams.MATCH_PARENT , false)
helper.binding.avatar.setVis(true)
helper.binding.avatar.setImageResource(R.drawable.user_info_ic_id)
helper.binding.llCharmClick.setVis(true)
helper.binding.tvCharmValue.setVis(true)
helper.binding.tvCharmValue.text = "${ bindingAdapterPosition + 1}"
}
}
}

View File

@@ -1,173 +0,0 @@
package com.chwl.app;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.jph.takephoto.app.TakePhotoActivity;
import com.jph.takephoto.compress.CompressConfig;
import com.jph.takephoto.model.CropOptions;
import com.jph.takephoto.model.TResult;
import com.chwl.app.common.permission.PermissionActivity;
import com.chwl.library.utils.file.JXFileUtils;
import java.io.File;
public class ErbanTakePhotoActivity extends TakePhotoActivity {
private static final String CAMERA_PREFIX = "picture_";
private static final int REQ_CODE = 1000;
private static TakePhotoCallBack takePhotoCallBack;
public final static String OPERATION_TYPE = "OPERATION_TYPE";
public final static int SELECT_PHOTO = 1;
public final static int TAKE_PHOTO = 2;
public final static int SELECT_MULTIPLE_PHOTO = 3;
public final static String MULTIPLE_SELECT_PHOTO_LIMIT = "MULTIPLE_SELECT_PHOTO_LIMIT";
/**
* 选择一张图片
* @param context
*/
public static void startToSelectPhoto(Context context, TakePhotoCallBack callBack) {
Bundle bundle = new Bundle();
bundle.putInt(OPERATION_TYPE, SELECT_PHOTO);
start(context, bundle, callBack);
}
/**
* 选择多张图片
* @param context
* @param limit
*/
public static void startToMultipleSelectPhoto(Context context, TakePhotoCallBack callBack, int limit){
Bundle bundle = new Bundle();
bundle.putInt(OPERATION_TYPE, SELECT_MULTIPLE_PHOTO);
bundle.putInt(MULTIPLE_SELECT_PHOTO_LIMIT, limit);
start(context, bundle, callBack);
}
/**
* 照相
* @param context
*/
public static void startToTakePhoto(Context context, TakePhotoCallBack callBack){
Bundle bundle = new Bundle();
bundle.putInt(OPERATION_TYPE,TAKE_PHOTO);
start(context, bundle, callBack);
}
private static void start(Context context, Bundle bundle, TakePhotoCallBack callBack){
takePhotoCallBack = callBack;
Intent intent = new Intent(context, ErbanTakePhotoActivity.class);
intent.putExtras(bundle);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int operationType = getIntent().getIntExtra(OPERATION_TYPE, SELECT_PHOTO);
int limit = getIntent().getIntExtra(MULTIPLE_SELECT_PHOTO_LIMIT,1);
if (operationType == SELECT_PHOTO){
selectPhoto();
} else if (operationType == TAKE_PHOTO){
checkPermissionAndStartCamera();
} else if (operationType == SELECT_MULTIPLE_PHOTO){
multipleSelectPhoto(limit);
}
}
@Override
protected void onDestroy() {
takePhotoCallBack = null;
super.onDestroy();
}
@Override
public void takeSuccess(TResult result) {
if (takePhotoCallBack != null){
takePhotoCallBack.takeSuccess(result);
}
finish();
}
@Override
public void takeFail(TResult result, String msg) {
if (takePhotoCallBack != null){
takePhotoCallBack.takeFail(result,msg);
}
finish();
}
@Override
public void takeCancel() {
if (takePhotoCallBack != null){
takePhotoCallBack.takeCancel();
}
finish();
}
private void selectPhoto(){
String mCameraCapturingName = CAMERA_PREFIX + System.currentTimeMillis() + ".jpg";
File cameraOutFile = JXFileUtils.getTempFile(ErbanTakePhotoActivity.this, mCameraCapturingName);
if (!cameraOutFile.getParentFile().exists()) {
cameraOutFile.getParentFile().mkdirs();
}
Uri uri = Uri.fromFile(cameraOutFile);
CompressConfig compressConfig = new CompressConfig.Builder().create();
getTakePhoto().onEnableCompress(compressConfig, true);
CropOptions options = new CropOptions.Builder().setWithOwnCrop(true).create();
getTakePhoto().onPickFromGalleryWithCrop(uri, options);
}
private void multipleSelectPhoto(int limit){
String mCameraCapturingName = CAMERA_PREFIX + System.currentTimeMillis() + ".jpg";
File cameraOutFile = JXFileUtils.getTempFile(ErbanTakePhotoActivity.this, mCameraCapturingName);
if (!cameraOutFile.getParentFile().exists()) {
cameraOutFile.getParentFile().mkdirs();
}
Uri uri = Uri.fromFile(cameraOutFile);
CompressConfig compressConfig = new CompressConfig.Builder().create();
getTakePhoto().onEnableCompress(compressConfig, true);
CropOptions options = new CropOptions.Builder().setWithOwnCrop(true).create();
getTakePhoto().onPickMultipleWithCrop(limit, options);
}
private void checkPermissionAndStartCamera() {
//低版本授权检查
checkPermission(checkPermissionListener, R.string.ask_camera, android.Manifest.permission.CAMERA);
}
PermissionActivity.CheckPermListener checkPermissionListener = new PermissionActivity.CheckPermListener() {
@Override
public void superPermission() {
takePhoto();
}
};
private void takePhoto() {
String mCameraCapturingName = CAMERA_PREFIX + System.currentTimeMillis() + ".jpg";
File cameraOutFile = JXFileUtils.getTempFile(ErbanTakePhotoActivity.this, mCameraCapturingName);
if (!cameraOutFile.getParentFile().exists()) {
cameraOutFile.getParentFile().mkdirs();
}
Uri uri = Uri.fromFile(cameraOutFile);
CompressConfig compressConfig = new CompressConfig.Builder().create();
getTakePhoto().onEnableCompress(compressConfig, false);
CropOptions options = new CropOptions.Builder().setWithOwnCrop(true).create();
getTakePhoto().onPickFromCaptureWithCrop(uri, options);
}
public interface TakePhotoCallBack{
public void takeSuccess(TResult result);
public void takeFail(TResult result, String msg);
public void takeCancel();
}
}

View File

@@ -11,7 +11,6 @@ import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -23,7 +22,13 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.ViewModelProvider;
import com.chwl.app.application.App;
import com.chwl.app.application.IReportConstants;
import com.chwl.app.application.ReportManager;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.base.GlobalViewModelOwner;
import com.chwl.app.common.widget.CircleImageView;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.app.community.square.SquareFragment;
import com.chwl.app.game.core.GameStateAbility;
@@ -31,31 +36,6 @@ import com.chwl.app.game.data.GameModel2;
import com.chwl.app.game.ui.game.GameActivity;
import com.chwl.app.game.ui.game.GameIntent;
import com.chwl.app.game.ui.home.GameHomeFragment;
import com.chwl.app.star.StarFragment;
import com.chwl.app.support.PreloadResourceViewModel;
import com.chwl.app.ui.login.LoginPasswordActivity;
import com.chwl.core.home.bean.MainTabInfo;
import com.chwl.core.settings.SettingsModel;
import com.chwl.library.utils.JavaUtil;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.RecentContact;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.orhanobut.logger.Logger;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.chwl.app.application.IReportConstants;
import com.chwl.app.application.ReportManager;
import com.chwl.app.application.App;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.common.widget.CircleImageView;
import com.chwl.app.common.widget.DragLayout;
import com.chwl.app.home.HomeViewModel;
import com.chwl.app.home.dialog.NewUserHelloDialog;
import com.chwl.app.home.dialog.ProtocolUpdateDialog;
@@ -68,9 +48,11 @@ import com.chwl.app.home.widget.AnchorCardView;
import com.chwl.app.module.Extras;
import com.chwl.app.module_hall.secretcode.PwdCodeMgr;
import com.chwl.app.service.DaemonService;
import com.chwl.app.support.PreloadResourceViewModel;
import com.chwl.app.ui.im.ImInitHelper;
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
import com.chwl.app.ui.login.BindPhoneActivity;
import com.chwl.app.ui.login.LoginPasswordActivity;
import com.chwl.app.ui.login.fragment.AddUserInfoFragment;
import com.chwl.app.ui.patriarch.help.LimitEnterRoomHelper;
import com.chwl.app.ui.patriarch.help.PmDialogShowMrg;
@@ -80,7 +62,9 @@ import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.ui.widget.LivingIconView;
import com.chwl.app.ui.widget.MainTabLayout;
import com.chwl.app.utils.CleanLeakUtils;
import com.chwl.app.utils.HomeUIManager;
import com.chwl.app.utils.PushMessageHandler;
import com.chwl.app.utils.ResourceManager;
import com.chwl.core.Constants;
import com.chwl.core.DemoCache;
import com.chwl.core.UriProvider;
@@ -91,6 +75,8 @@ import com.chwl.core.auth.event.LogoutEvent;
import com.chwl.core.channel_page.model.ChannelPageModel;
import com.chwl.core.community.event.SquareTaskEvent;
import com.chwl.core.community.event.UnReadCountEvent;
import com.chwl.core.home.bean.BannerInfo;
import com.chwl.core.home.bean.MainTabInfo;
import com.chwl.core.home.bean.MainTabType;
import com.chwl.core.home.event.VisitorUnreadCountEvent;
import com.chwl.core.home.model.GameHomeModel;
@@ -98,6 +84,7 @@ import com.chwl.core.home.model.HomeModel;
import com.chwl.core.initial.InitialModel;
import com.chwl.core.linked.LinkedModel;
import com.chwl.core.linked.bean.LinkedInfo;
import com.chwl.core.manager.AudioEngineManager;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.IMBroadcastManager;
import com.chwl.core.manager.IMMessageManager;
@@ -106,17 +93,34 @@ import com.chwl.core.patriarch.event.CloseMinRoomEvent;
import com.chwl.core.patriarch.event.ImPushMsgPmLimitTimeEvent;
import com.chwl.core.patriarch.event.PmDismissAllLimitDialogEvent;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.core.settings.SettingsModel;
import com.chwl.core.user.UserModel;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.core.user.event.LoadLoginUserInfoEvent;
import com.chwl.core.user.event.LoginUserInfoUpdateEvent;
import com.chwl.core.user.event.NeedBindPhoneEvent;
import com.chwl.core.user.event.NeedCompleteInfoEvent;
import com.chwl.core.utils.myutil.MyUtil;
import com.chwl.core.utils.SharedPreferenceUtils;
import com.chwl.core.utils.StringFormatUtils;
import com.chwl.core.utils.WLog;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.common.util.OtherExtKt;
import com.chwl.library.threadmgr.ThreadPoolManager;
import com.chwl.library.utils.JavaUtil;
import com.chwl.library.utils.ResUtil;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.RecentContact;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.orhanobut.logger.Logger;
import com.trello.rxlifecycle3.android.ActivityEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -159,6 +163,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
private Fragment tempFragment = null;
private DialogManager resumeGameDialogManager;
private PreloadResourceViewModel mPreLoadViewModel;
@Nullable
private Runnable touchRunnable;
@@ -236,10 +242,17 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
.doOnError(throwable -> onNeedLogin())
.subscribe();
initView();
List<MainTabInfo> mainTabInfo = InitialModel.get().getMainTabInfosLiveData().getValue();
if (mainTabInfo != null) {
mMainTabLayout.setMainTabInfoList(mainTabInfo);
List<MainTabInfo> homeTabIcons = HomeUIManager.INSTANCE.getHomeTabIcons();
if (homeTabIcons != null && !homeTabIcons.isEmpty()) {
mMainTabLayout.setMainTabInfoList(homeTabIcons);
} else {
List<MainTabInfo> mainTabInfo = InitialModel.get().getMainTabInfosLiveData().getValue();
if (mainTabInfo != null) {
mMainTabLayout.setMainTabInfoList(mainTabInfo);
}
}
initMaterialView();
onParseIntent();
updateDatas();
@@ -255,6 +268,11 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
}
});
checkResumeGame();
WLog.INSTANCE.init(context,"logFile.txt");
HomeUIManager.INSTANCE.setHomeTabBg(findViewById(R.id.main_tab_layout_bg));
ResourceManager.INSTANCE.initResource();
}
private void otherModelInit() {
@@ -269,43 +287,45 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@SuppressLint("CheckResult")
private void checkResumeGame() {
GameModel2.INSTANCE.getResumeGameRoomInfo().compose(bindToLifecycle()).subscribe(gameRoomInfo -> {
if (gameRoomInfo != null && gameRoomInfo.getData() != null) {
Integer state = gameRoomInfo.getData().getMatchStatus();
if (state != null && (state == GameStateAbility.STATE_MATCH_SUCCESS || state == GameStateAbility.STATE_MATCHING)) {
if (resumeGameDialogManager == null) {
resumeGameDialogManager = new DialogManager(this);
}
resumeGameDialogManager.showOkCancelDialog(getString(R.string.resume_game_tips), getString(R.string.join_organization_ok), getString(R.string.join_organization_no), false, new DialogManager.OkCancelDialogListener() {
@Override
public void onOk() {
long gameId = JavaUtil.str2long(gameRoomInfo.getData().getMgId());
int gameMode = 0;
GameActivity.Companion.start(context, new GameIntent(gameId, gameMode));
}
@Override
public void onCancel() {
DialogManager.OkCancelDialogListener.super.onCancel();
Long roomId = gameRoomInfo.getRoomId();
if (roomId != null) {
GameModel2.INSTANCE.closeGameRx(roomId).compose(bindToLifecycle()).subscribe(s -> {
}, throwable -> {
});
GameModel2.INSTANCE.getResumeGameRoomInfo().compose(bindToLifecycle())
.doOnSuccess(gameRoomInfo -> {
if (gameRoomInfo != null && gameRoomInfo.getData() != null) {
Integer state = gameRoomInfo.getData().getMatchStatus();
if (state != null && (state == GameStateAbility.STATE_MATCH_SUCCESS || state == GameStateAbility.STATE_MATCHING)) {
if (resumeGameDialogManager == null) {
resumeGameDialogManager = new DialogManager(this);
}
resumeGameDialogManager.showOkCancelDialog(getString(R.string.resume_game_tips), getString(R.string.join_organization_ok), getString(R.string.join_organization_no), false, new DialogManager.OkCancelDialogListener() {
@Override
public void onOk() {
long gameId = JavaUtil.str2long(gameRoomInfo.getData().getMgId());
int gameMode = 0;
GameActivity.Companion.start(context, new GameIntent(gameId, gameMode));
}
@Override
public void onCancel() {
DialogManager.OkCancelDialogListener.super.onCancel();
Long roomId = gameRoomInfo.getRoomId();
if (roomId != null) {
GameModel2.INSTANCE.closeGameRx(roomId).compose(bindToLifecycle()).subscribe(s -> {
}, throwable -> {
});
}
}
});
}
});
}
}
}, throwable -> {
});
}
}).doOnError(e->{
}).subscribe();
}
private void initPreloadResource() {
PreloadResourceViewModel viewModel = new ViewModelProvider(
mPreLoadViewModel = new ViewModelProvider(
GlobalViewModelOwner.Companion.getInstance()
).get(PreloadResourceViewModel.class);
viewModel.start();
mPreLoadViewModel.start(context);
}
@Override
@@ -391,6 +411,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
mMainTabLayout.setOnTabClickListener(this);
anchorCardView = findViewById(R.id.vs_anchor_card);
mMainTabLayout.setDefaultTabType(mCurrentTabType);
MyUtil.INSTANCE.initAppWidth(findViewById(R.id.rootWidth));
}
private void updateDatas() {
@@ -437,6 +458,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@Override
protected void onDestroy() {
CleanLeakUtils.fixInputMethodManagerLeak(MainActivity.this);
if (mPreLoadViewModel != null) {
mPreLoadViewModel.stopPreLoad();
}
super.onDestroy();
if (resumeGameDialogManager != null) {
resumeGameDialogManager.dismissDialog();
@@ -490,6 +514,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginEvent(LoginEvent event) {
onLogin(AuthModel.get().getCurrentUid());
// UserModel.get().getUserInfoDetailCache(AuthModel.get().getCurrentUid()).subscribe();
}
/**
@@ -507,9 +532,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@SuppressLint("CheckResult")
public void onLogin(long uid) {
Logger.e(TAG, "onLogin Success ~~~~");
Log.i("checkLostUser", "onLogin");
OtherExtKt.doLogW("onLogin Success ~~~~");
OtherExtKt.doLogW("onLogin");
int unreadCount = IMMessageManager.get().queryUnreadMsg();
mMainTabLayout.setMsgNum(unreadCount);
@@ -518,6 +542,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
OtherExtKt.doLog("消息时间 接收到 LoadLoginUserInfoEvent 消息");
firstLoadedUserInfo();
InitialModel.get().regionCheck();
}
@@ -666,6 +691,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@Override
public void exitRoom(RoomInfo roomInfo) {
AudioEngineManager.get().setNotRecord(false);
closeOpenRoomAnimation();
DaemonService.stop(MainActivity.this);
}
@@ -785,16 +811,17 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
* @return true 如果处理了跳转
*/
private boolean handleSplashJump() {
OtherExtKt.doLog("闪屏页 -> handleSplashJump 处理 闪屏页跳转");
if (getIntent().hasExtra("url") && getIntent().hasExtra("type")) {
LogUtil.print(getString(R.string.clicked_the_splash_screen));
//如果没有渠道页,就按原来的逻辑即可
int type = getIntent().getIntExtra("type", 0);
String url = getIntent().getStringExtra("url");
if (type == 3) {
if (type == BannerInfo.SKIP_TYP_H5 || type == BannerInfo.SKIP_TYP_H5_CP || type == BannerInfo.SKIP_TYP_H5_WEE_STAR || type == BannerInfo.SKIP_TYP_H5_CUSTOM) {
Intent intent = new Intent(context, CommonWebViewActivity.class);
intent.putExtra("url", url);
startActivity(intent);
} else if (type == 2) {
} else if (type == BannerInfo.SKIP_TYP_CHAT_ROOM) {
AVRoomActivity.start(context, Long.parseLong(url));
} else {
return false;

View File

@@ -9,41 +9,16 @@ import android.content.res.Configuration;
import android.graphics.Color;
import android.net.http.HttpResponseCache;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.util.Supplier;
import androidx.multidex.MultiDex;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.request.target.ViewTarget;
import com.chwl.app.support.IMUserInfoProvider;
import com.chwl.library.language.LanguageHelper;
import com.coorchice.library.utils.LogUtils;
import com.example.lib_utils.ServiceTime;
import com.hjq.toast.ToastUtils;
import com.liulishuo.filedownloader.FileDownloader;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.NotificationFoldStyle;
import com.netease.nimlib.sdk.SDKOptions;
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
import com.netease.nimlib.sdk.mixpush.MixPushConfig;
import com.netease.nimlib.sdk.mixpush.NIMPushClient;
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.util.NIMUtil;
import com.opensource.svgaplayer.SVGAParser;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.tencent.vasdolly.helper.ChannelReaderUtil;
import com.chwl.app.BuildConfig;
import com.chwl.app.NimMiddleActivity;
import com.chwl.app.R;
@@ -51,11 +26,12 @@ import com.chwl.app.common.app.ActivityStack;
import com.chwl.app.common.util.AppLifeCycleHelper;
import com.chwl.app.module_hall.HallDataManager;
import com.chwl.app.radish.wallet.RadishWalletManager;
import com.chwl.app.support.IMUserInfoProvider;
import com.chwl.app.utils.PushMessageHandler;
import com.chwl.core.XConstants;
import com.chwl.core.Constants;
import com.chwl.core.DemoCache;
import com.chwl.core.UriProvider;
import com.chwl.core.XConstants;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.bean.response.ServiceResult;
import com.chwl.core.channel.ChannelModel;
@@ -81,6 +57,8 @@ import com.chwl.core.utils.net.ServerException;
import com.chwl.library.common.application.BaseApp;
import com.chwl.library.common.application.Env;
import com.chwl.library.common.file.FileHelper;
import com.chwl.library.error.CrashCat;
import com.chwl.library.language.LanguageHelper;
import com.chwl.library.net.rxnet.RxNet;
import com.chwl.library.net.rxnet.converter.GsonConverterPlugins;
import com.chwl.library.utils.AppMetaDataUtil;
@@ -91,6 +69,28 @@ import com.chwl.library.utils.SystemUtils;
import com.chwl.library.utils.VersionUtil;
import com.chwl.library.utils.codec.MD5Utils;
import com.chwl.library.utils.config.BasicConfig;
import com.coorchice.library.utils.LogUtils;
import com.example.lib_utils.ServiceTime;
import com.hjq.toast.ToastUtils;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.NotificationFoldStyle;
import com.netease.nimlib.sdk.SDKOptions;
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
import com.netease.nimlib.sdk.mixpush.MixPushConfig;
import com.netease.nimlib.sdk.mixpush.NIMPushClient;
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.util.NIMUtil;
import com.opensource.svgaplayer.SVGAParser;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.tencent.vasdolly.helper.ChannelReaderUtil;
import org.greenrobot.eventbus.EventBus;
@@ -261,6 +261,8 @@ public class App extends BaseApp {
AuthModel.get().cleanLogInfo();
}
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
}else if (serviceResult.getCode() == ServiceResult.CODE_ROOM_MANAGER_LIMIT) {
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
}
}
return null;
@@ -458,7 +460,6 @@ public class App extends BaseApp {
.build();
Realm.setDefaultConfiguration(config);
FileDownloader.setup(BasicConfig.INSTANCE.getAppContext());
LogUtil.i(TAG, channel);
}
@@ -535,6 +536,11 @@ public class App extends BaseApp {
HashMap<String, Object> map = new HashMap<>(2);
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_ACTIVATE);
ReportManager.get().reportEvent(IReportConstants.ACTIVATE_FIRST, map);
//todo do 崩溃日志拦截
if (BuildConfig.DEBUG) {
CrashCat.getInstance(getApplicationContext(), Environment.getExternalStorageDirectory().getPath()+ "/Log","log.txt").start();
}
}
/**

View File

@@ -97,7 +97,7 @@ public class GlobalHandleManager {
Activity activity = getActivity();
if (activity == null) return;
if (AvRoomDataManager.get().isSelfGamePlaying()) return;
LevelUpDialog.start(activity, event.getLevelName(), true);
// LevelUpDialog.start(activity, event.getLevelName(), true);
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -105,7 +105,7 @@ public class GlobalHandleManager {
Activity activity = getActivity();
if (activity == null) return;
if (AvRoomDataManager.get().isSelfGamePlaying()) return;
LevelUpDialog.start(activity, event.getLevelName(), false);
// LevelUpDialog.start(activity, event.getLevelName(), false);
}
private static final class Helper {

View File

@@ -9,7 +9,7 @@ public abstract class BottomViewListenerWrapper {
}
public void onOpenMicBtnClick() {
public void onOpenMicBtnClick(int type) {
}

View File

@@ -4,23 +4,20 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import com.netease.nim.uikit.business.uinfo.UserInfoHelper;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.orhanobut.logger.Logger;
import com.chwl.app.R;
import com.chwl.app.UIHelper;
import com.chwl.app.avroom.widget.ViewItem;
import com.chwl.app.common.util.DialogCommonUtil;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.app.room_chat.activity.RoomMsgActivity;
import com.chwl.app.ui.im.avtivity.NimFriendModel;
import com.chwl.app.ui.im.avtivity.NimP2PMessageActivity;
import com.chwl.app.ui.widget.ButtonItem;
import com.chwl.app.ui.widget.GiftDialog;
import com.chwl.app.vip.util.VipHelper;
import com.chwl.app.room_chat.activity.RoomMsgActivity;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.bean.response.ServiceResult;
import com.chwl.core.initial.InitialModel;
import com.chwl.core.initial.bean.InitInfo;
import com.chwl.core.kick.KickModel;
@@ -35,10 +32,19 @@ import com.chwl.core.super_admin.util.SAdminOptUtil;
import com.chwl.core.super_admin.util.SaAttachmentFactory;
import com.chwl.core.super_admin.util.SuperAdminUtil;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.common.util.OtherExtKt;
import com.chwl.library.net.rxnet.callback.CallBack;
import com.chwl.library.utils.JavaUtil;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import com.chwl.library.utils.config.BasicConfig;
import com.example.lib_utils.ktx.ResourcesKtxKt;
import com.hjq.toast.ToastUtils;
import com.netease.nim.uikit.business.uinfo.UserInfoHelper;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.orhanobut.logger.Logger;
import java.util.ArrayList;
import java.util.HashMap;
@@ -100,6 +106,7 @@ public class ButtonItemFactory {
if (isMySelf) {
return null;
}
String nick = getNick(chatRoomMember, account);
List<ViewItem> buttonItems = new ArrayList<>();
//ture则表示需要传入此类型button
boolean gift = false;
@@ -149,18 +156,18 @@ public class ButtonItemFactory {
}
}
if (gift) {
if (!SuperAdminUtil.isSuperAdmin()) {
buttonItems.add(createSendGiftItem(context, uid, isInRoom, listener));
}
}
// if (gift) {
// if (!SuperAdminUtil.isSuperAdmin()) {
// buttonItems.add(createSendGiftItem(context, uid, isInRoom, listener));
// }
// }
// 私聊
buttonItems.add(createPrivateChatItem(context, account, isInRoom));
// buttonItems.add(createPrivateChatItem(context, account, isInRoom));
//关注
buttonItems.add(createAttentItem());
//关注
buttonItems.add(createAtItem());
// buttonItems.add(createAttentItem());
//aite @
// buttonItems.add(createAtItem());
final RoomInfo currentRoom = AvRoomDataManager.get().mCurrentRoomInfo;
if (currentRoom == null) return buttonItems;
@@ -173,13 +180,13 @@ public class ButtonItemFactory {
if (kickOutRoom) {
buttonItems.add(createKickOutRoomItem(context, userInfo, String.valueOf(currentRoom.getRoomId()),
account, getNick(chatRoomMember, account)));
account, nick));
}
if (mark_manager) {
buttonItems.add(createMarkManagerListItem(String.valueOf(currentRoom.getRoomId()), account, true));
buttonItems.add(createMarkManagerListItem(context,String.valueOf(currentRoom.getRoomId()), account, nick,true));
}
if (no_mark_manager) {
buttonItems.add(createMarkManagerListItem(String.valueOf(currentRoom.getRoomId()), account, false));
buttonItems.add(createMarkManagerListItem(context,String.valueOf(currentRoom.getRoomId()), account, nick,false));
}
if (mart_black) {
buttonItems.add(createMarkBlackListItem(
@@ -187,22 +194,14 @@ public class ButtonItemFactory {
userInfo,
String.valueOf(currentRoom.getRoomId()),
account,
getNick(chatRoomMember, account))
nick)
);
}
return buttonItems;
}
/**
* 踩TA当该人再房间中的时候进入他所在的房间
*
* @return
*/
private static ViewItem createFindMeItem() {
ViewItem viewItem = new ViewItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_01), R.drawable.icon_dialog_find_ta, null);
viewItem.isFindTa = true;
return viewItem;
}
/**
* 根据account获取昵称
@@ -221,6 +220,19 @@ public class ButtonItemFactory {
}
/**
* 踩TA当该人再房间中的时候进入他所在的房间
*
* @return
*/
private static ViewItem createFindMeItem() {
ViewItem viewItem = new ViewItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_01), R.drawable.icon_dialog_find_ta, null);
viewItem.isFindTa = true;
return viewItem;
}
/**
* 私聊
*/
@@ -254,7 +266,7 @@ public class ButtonItemFactory {
}
/**
* 踢出房间: 先强制下麦,再踢出房间
* 踢出房间: 先强制下麦,再踢出房间 todo do
*/
public static ViewItem createKickOutRoomItem(Context context, UserInfo userInfo, final String roomId,
final String account, String nick) {
@@ -262,6 +274,11 @@ public class ButtonItemFactory {
@Override
public void onClick() {
if (VipHelper.notKick(userInfo)) {
ToastUtils.show(ResUtil.getString(R.string.vipPower,userInfo.getUserVipInfoVO().getVipLevel()));
return;
}
String tips = (AvRoomDataManager.get().isGamePlaying(Long.parseLong(account)) ? ResUtil.getString(R.string.erban_avroom_buttonitemfactory_07) : "") + ResUtil.getString(R.string.erban_avroom_buttonitemfactory_08);
if (VipHelper.notKick(userInfo)) {
if (AvRoomDataManager.get().isRoomOwner()) {
@@ -330,26 +347,48 @@ public class ButtonItemFactory {
}
//设置管理员
public static ViewItem createMarkManagerListItem(final String roomId, final String account, final boolean mark) {
public static ViewItem createMarkManagerListItem(final Context context,final String roomId, final String account, final String nick, final boolean mark) {
String title = BasicConfig.INSTANCE.getAppContext().getString(mark ? R.string.set_manager : R.string.remove_manager);
int icon = mark ? R.drawable.icon_dialog_set_manager_ture : R.drawable.icon_dialog_set_manager_false;
return new ViewItem(title, icon, () -> {
//todo do 设置管理员
if (AvRoomDataManager.get().isSuperAdmin()) {
AvRoomModel.get().markManager(Long.parseLong(account), mark).subscribe();
} else {
IMNetEaseManager.get().markManagerListBySdk(roomId, account, mark, null);
IMNetEaseManager.get().markManagerListBySdk(roomId, account, mark, new CallBack<ChatRoomMember>() {
@Override
public void onSuccess(ChatRoomMember data) {
if (mark) {
OtherExtKt.doToast(ResourcesKtxKt.getString(R.string._ver_23_setManagerAddSuccess, nick));
} else {
OtherExtKt.doToast(ResourcesKtxKt.getString(R.string._ver_23_setManagerRemoveSuccess, nick));
}
}
@Override
public void onFail(int code, String error) {
if (code == ServiceResult.CODE_ROOM_MANAGER_LIMIT) {
DialogCommonUtil.showManagerLimit(context);
} else {
OtherExtKt.doToast(error);
}
}
});
}
});
}
//加入黑名单
//加入黑名单 todo do
public static ViewItem createMarkBlackListItem(final Context context,
UserInfo userInfo,
final String roomId,
final String account,
String nick) {
return new ViewItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_015), R.drawable.icon_dialog_mark_black_list, () -> {
if (VipHelper.notKick(userInfo)) {
ToastUtils.show(ResUtil.getString(R.string.vipPower,userInfo.getUserVipInfoVO().getVipLevel()));
return;
}
int roomBlackListSize = 200;
InitInfo initInfo = InitialModel.get().getCacheInitInfo();
if (initInfo != null && initInfo.getRoomBlackListSize() != 0) {
@@ -436,7 +475,7 @@ public class ButtonItemFactory {
}
/**
* 拉黑
* 拉黑 todo do
*/
public static ButtonItem createAddToBlackListItem(DialogManager dialogManager, String account) {
return new ButtonItem(ResUtil.getString(R.string.me_block), () -> {
@@ -446,9 +485,6 @@ public class ButtonItemFactory {
public void onOk() {
NimFriendModel.get().addToBlackList(account)
.subscribe((aBoolean, throwable) -> {
// Toast.makeText(BasicConfig.INSTANCE.getAppContext(),
// (throwable == null) ? ResUtil.getString(R.string.erban_avroom_buttonitemfactory_032) : ResUtil.getString(R.string.erban_avroom_buttonitemfactory_033),
// Toast.LENGTH_SHORT).show();
SingleToastUtil.showToastShort((throwable == null) ? ResUtil.getString(R.string.erban_avroom_buttonitemfactory_034) : ResUtil.getString(R.string.erban_avroom_buttonitemfactory_035));
});
}
@@ -463,28 +499,28 @@ public class ButtonItemFactory {
return new ButtonItem(ResUtil.getString(R.string.erban_avroom_buttonitemfactory_036), () -> UIHelper.showReportPage(context, uid, reportType));
}
public static List<ViewItem> createMiniWorldGroupButtonItems(
Context context,
long uid,
boolean isInRoom,
GiftDialog.OnGiftDialogBtnClickListener listener) {
if (uid <= 0) return null;
String currentUid = String.valueOf(AuthModel.get().getCurrentUid());
String account = String.valueOf(uid);
//account和chatRoomMember 不会同时为空,如果同时为空,则是前面传参出错
boolean isMySelf = Objects.equals(currentUid, account);
if (isMySelf) {
return null;
}
List<ViewItem> buttonItems = new ArrayList<>();
//不在房间内,也不需要魔法
buttonItems.add(createSendGiftItem(context, uid, true, true, listener));
// 私聊
buttonItems.add(createPrivateChatItem(context, account, isInRoom));
//装扮和关注目前是都有的操作
// buttonItems.add(createSendDecorationItem(context, uid));
buttonItems.add(createAttentItem());
buttonItems.add(createFindMeItem());
return buttonItems;
}
// public static List<ViewItem> createMiniWorldGroupButtonItems(
// Context context,
// long uid,
// boolean isInRoom,
// GiftDialog.OnGiftDialogBtnClickListener listener) {
// if (uid <= 0) return null;
// String currentUid = String.valueOf(AuthModel.get().getCurrentUid());
// String account = String.valueOf(uid);
// //account和chatRoomMember 不会同时为空,如果同时为空,则是前面传参出错
// boolean isMySelf = Objects.equals(currentUid, account);
// if (isMySelf) {
// return null;
// }
// List<ViewItem> buttonItems = new ArrayList<>();
// //不在房间内,也不需要魔法
// buttonItems.add(createSendGiftItem(context, uid, true, true, listener));
// // 私聊
// buttonItems.add(createPrivateChatItem(context, account, isInRoom));
// //装扮和关注目前是都有的操作
// // buttonItems.add(createSendDecorationItem(context, uid));
// buttonItems.add(createAttentItem());
// buttonItems.add(createFindMeItem());
// return buttonItems;
// }
}

View File

@@ -39,26 +39,6 @@ import androidx.viewpager2.widget.ViewPager2;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chwl.app.notify.RoomNotifyManager;
import com.chwl.app.ui.webview.baishun.BaiShunGameWebFragment;
import com.chwl.app.ui.webview.baishun.IBaiShunGameListener;
import com.chwl.library.widget.SVGAView;
import com.chwl.core.monsterhunting.bean.MonsterDataBean;
import com.chwl.core.room.game.bean.BaiShunGameConfig;
import com.chwl.core.support.room.AudioRoomContext;
import com.chwl.core.support.room.RoomWidget;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.model.BroadcastMessage;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.orhanobut.logger.Logger;
import com.chwl.app.R;
import com.chwl.app.avroom.dialog.NewUserGiftDialog;
import com.chwl.app.avroom.dialog.SingleRoomTipDialog;
@@ -71,18 +51,23 @@ import com.chwl.app.avroom.presenter.HomePartyPresenter;
import com.chwl.app.avroom.view.IAvRoomView;
import com.chwl.app.avroom.widget.VerticalViewPagerAdapter;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.library.common.util.Utils;
import com.chwl.app.common.widget.CircleImageView;
import com.chwl.app.common.widget.CustomImageSpan;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.app.home.dialog.HelloMessageDialog;
import com.chwl.app.notify.GlobalNotifyManager;
import com.chwl.app.notify.RoomNotifyManager;
import com.chwl.app.ui.patriarch.help.LimitEnterRoomHelper;
import com.chwl.app.ui.user.activity.UserInfoActivity;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.app.ui.webview.CommonWebViewActivity;
import com.chwl.app.ui.webview.baishun.BaiShunGameWebFragment;
import com.chwl.app.ui.webview.baishun.IBaiShunGameListener;
import com.chwl.app.ui.webview.baishun.LeaderccGameWebFragment;
import com.chwl.app.ui.widget.NobleOpenNoticeView;
import com.chwl.app.ui.widget.dialog.AllServiceGiftLevelDialog;
import com.chwl.app.ui.widget.dialog.MonsterDialog;
import com.chwl.app.utils.RoomBoomManager;
import com.chwl.app.utils.UserUtils;
import com.chwl.core.Constants;
import com.chwl.core.DemoCache;
@@ -103,18 +88,20 @@ import com.chwl.core.im.custom.bean.RoomPkBean;
import com.chwl.core.im.custom.bean.TarotAttachment;
import com.chwl.core.im.custom.bean.TarotMsgBean;
import com.chwl.core.initial.InitialModel;
import com.chwl.core.manager.AudioEngineManager;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.IMNetEaseManager;
import com.chwl.core.manager.RoomEvent;
import com.chwl.core.module_hall.hall.HallModel;
import com.chwl.core.module_hall.hall.bean.SuperAdminInfo;
import com.chwl.core.monsterhunting.bean.MonsterDataBean;
import com.chwl.core.monsterhunting.bean.MonsterHuntingResult;
import com.chwl.core.monsterhunting.bean.MonsterInfo;
import com.chwl.core.monsterhunting.manager.MonsterDataManager;
import com.chwl.core.noble.bean.AllServiceGiftProtocol;
import com.chwl.core.noble.bean.NobleInfo;
import com.chwl.core.noble.NobleResourceType;
import com.chwl.core.noble.NobleUtil;
import com.chwl.core.noble.bean.AllServiceGiftProtocol;
import com.chwl.core.noble.bean.NobleInfo;
import com.chwl.core.patriarch.event.CloseMinRoomEvent;
import com.chwl.core.patriarch.event.ImPushMsgPmLimitTimeEvent;
import com.chwl.core.patriarch.event.PmDismissAllLimitDialogEvent;
@@ -127,21 +114,40 @@ import com.chwl.core.room.dragonball.DragonBallModel;
import com.chwl.core.room.event.FinishAvRoomEvent;
import com.chwl.core.room.event.RoomExitEvent;
import com.chwl.core.room.event.RoomTaskTipsEvent;
import com.chwl.core.room.game.bean.BaiShunGameConfig;
import com.chwl.core.room.pk.event.PKStateEvent;
import com.chwl.core.super_admin.util.SAdminOptUtil;
import com.chwl.core.super_admin.util.SuperAdminUtil;
import com.chwl.core.support.room.AudioRoomContext;
import com.chwl.core.support.room.RoomContext;
import com.chwl.core.support.room.RoomView;
import com.chwl.core.support.room.RoomWidget;
import com.chwl.core.treasurefairy.bean.FairyMsgInfoBean;
import com.chwl.core.user.UserModel;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.core.utils.LogUtils;
import com.chwl.core.utils.StringFormatUtils;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.common.util.OtherExtKt;
import com.chwl.library.common.util.Utils;
import com.chwl.library.language.LanguageHelper;
import com.chwl.library.rxbus.RxBus;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import com.chwl.library.utils.UIUtils;
import com.chwl.library.widget.SVGAView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomKickOutEvent;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.model.BroadcastMessage;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.orhanobut.logger.Logger;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -231,6 +237,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
private RoomNotifyManager roomNotify;
private BaiShunGameWebFragment baiShunGameFragment;
private LeaderccGameWebFragment leaderccGameFragment;
public static void start(Context context, long roomUid) {
startForFromType(context, roomUid, FROM_TYPE_NORMAL, null, null);
@@ -301,6 +308,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
context.startActivity(intent);
}
public static void setBackBg(Context context, RoomInfo roomInfo, SVGAImageView svgaRoomBg, String[] bgPicture) {
if (roomInfo != null && svgaRoomBg != null) {
if (!StringFormatUtils.isBlank(roomInfo.getBackPic())) {
@@ -427,6 +435,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
} else {
roomUid = intent.getLongExtra(Constants.ROOM_UID, 0);
}
OtherExtKt.doLog("initIntentExtra 进房 fromType = "+fromType);
}
@SuppressLint("CheckResult")
@@ -507,6 +516,9 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (UserUtils.getUserInfo().isFirstCharge()) {
getMvpPresenter().checkFirstCharge();
}
LogUtils.d("roomLog RoomBoomManager 第二次进 ");
RoomBoomManager.INSTANCE.setMRoomUid(AvRoomDataManager.get().getRoomUid());
IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.MSG_SELF_ENTER_ROOM));
}
});
@@ -521,6 +533,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
});
roomNotify.start();
AvRoomDataManager.get().hasAvRoomAct = true;
}
@Override
@@ -751,7 +764,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (avatarBg == null || avatar == null || nick == null) return;
if (userInfo != null) {
ImageLoadUtils.loadImageWithBlurTransformation(this, userInfo.getAvatar(), avatarBg);
ImageLoadUtils.loadBigAvatar(this, userInfo.getAvatar(), avatar, false);
ImageLoadUtils.loadAvatarBig(userInfo.getAvatar(), avatar);
Drawable badgeDrawable = null;
if (userInfo.getNobleInfo() != null) {
// 勋章
@@ -857,6 +870,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (!justClosePage) {
getMvpPresenter().exitRoom();
}
AudioEngineManager.get().setNotRecord(false);
finish();
}
@@ -873,6 +887,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
@Override
protected void onDestroy() {
AvRoomDataManager.get().hasAvRoomAct = false;
//关闭这么多弹窗,鬼知道哪个出问题了,简单的try catch下
try {
// 确保关闭 dialog避免出现 leak window 异常
@@ -913,6 +928,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
svgaCache.clear();
}
svgaCache = null;
GlobalNotifyManager.INSTANCE.clearQueue();
super.onDestroy();
}
@@ -1072,6 +1088,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
DemoCache.saveNewUserChargeGift(1);
}
dismissLoadingDialog();
LogUtils.d("roomLog RoomBoomManager 第一次进 ");
RoomBoomManager.INSTANCE.setMRoomUid(AvRoomDataManager.get().getRoomUid());
IMNetEaseManager.get().getChatRoomEventObservable().onNext(new RoomEvent().setEvent(RoomEvent.MSG_SELF_ENTER_ROOM));
}
@Override
@@ -1492,6 +1513,24 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
getSupportFragmentManager().beginTransaction().add(R.id.layout_baishun_game, baiShunGameFragment).commitAllowingStateLoss();
}
public void showLeaderccGame(String url, BaiShunGameConfig config) {
closeBaiShunGame();
StringBuffer newUrl = new StringBuffer(url);
newUrl.append("&uid="+AuthModel.get().getCurrentUid());
newUrl.append("&token="+config.getCode());
newUrl.append("&lang=").append(LanguageHelper.INSTANCE.getH5GameLeaderccLan());
newUrl.append("&roomid=").append(AvRoomDataManager.get().getRoomId());
leaderccGameFragment = LeaderccGameWebFragment.Companion.newInstance(newUrl.toString(), config);
leaderccGameFragment.setListener(new IBaiShunGameListener() {
@Override
public void onGameClose() {
closeBaiShunGame();
}
});
findViewById(R.id.layout_baishun_game).setVisibility(VISIBLE);
getSupportFragmentManager().beginTransaction().add(R.id.layout_baishun_game, leaderccGameFragment).commitAllowingStateLoss();
}
private boolean closeBaiShunGame() {
boolean isClose = false;
if (baiShunGameFragment != null) {
@@ -1500,8 +1539,15 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
isClose = true;
}
}
if (leaderccGameFragment != null) {
if (leaderccGameFragment.isAdded()) {
getSupportFragmentManager().beginTransaction().remove(leaderccGameFragment).commitAllowingStateLoss();
isClose = true;
}
}
findViewById(R.id.layout_baishun_game).setVisibility(View.GONE);
baiShunGameFragment = null;
leaderccGameFragment = null;
return isClose;
}
}

View File

@@ -8,9 +8,6 @@ import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.RoomNormalListAdapter;
import com.chwl.app.avroom.presenter.RoomBlackPresenter;
@@ -30,6 +27,9 @@ import com.chwl.library.coremanager.CoreEvent;
import com.chwl.library.utils.JavaUtil;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.trello.rxlifecycle3.android.ActivityEvent;
import java.util.List;
import java.util.ListIterator;
@@ -99,7 +99,7 @@ public class RoomBlackListActivity extends BaseMvpActivity<IRoomBlackView, RoomB
public void accept(String s, String error) {
super.accept(s, error);
if (error == null) {
toast(ResUtil.getString(R.string.avroom_activity_roomblacklistactivity_04));
toast(ResUtil.getString(R.string.doSuccess));
loadData();
} else {
toast(error);

View File

@@ -7,13 +7,6 @@ import android.text.TextUtils;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.chwl.core.room.bean.RoomOnlineUserBean;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.RoomInviteAdapter;
import com.chwl.app.avroom.presenter.RoomInvitePresenter;
@@ -21,11 +14,18 @@ import com.chwl.app.avroom.view.IRoomInviteView;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.core.Constants;
import com.chwl.core.noble.NobleResourceType;
import com.chwl.core.room.bean.RoomOnlineUserBean;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.sys.NetworkUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener;
import java.util.List;
import java.util.Map;
@@ -130,11 +130,20 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
@Override
public void onRequestMemberByPageSuccess(List<ChatRoomMember> memberList, int page) {
// Iterator<ChatRoomMember> iterator = memberList.iterator();
// while (iterator.hasNext()) {
// RoomOnlineUserBean next = iterator.next();
// if (next.isSuperAdmin()) {
// iterator.remove();
// }
// }
mPage = page;
if (mPage == Constants.PAGE_START) {
List<ChatRoomMember> chatRoomMemberList = mRoomInviteAdapter.getChatRoomMemberList();
if (!ListUtils.isListEmpty(chatRoomMemberList))
chatRoomMemberList.clear();
if (!ListUtils.isListEmpty(chatRoomMemberList)) chatRoomMemberList.clear();
mRefreshLayout.finishRefresh(0);
if (ListUtils.isListEmpty(memberList)) {
showNoData(ResUtil.getString(R.string.avroom_activity_roominviteactivity_02));

View File

@@ -8,19 +8,21 @@ import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.RoomNormalListAdapter;
import com.chwl.app.avroom.presenter.RoomManagerPresenter;
import com.chwl.app.avroom.view.IRoomManagerView;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.common.util.DialogCommonUtil;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.core.bean.response.ServiceResult;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.room.bean.RoomInfo;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import java.util.List;
import java.util.ListIterator;
@@ -140,7 +142,9 @@ public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, R
@Override
public void markManagerListFail(int code, String error) {
if (code == ServiceResult.CODE_ROOM_MANAGER_LIMIT) {
DialogCommonUtil.showManagerLimit(context);
}
}
@Override

View File

@@ -1,8 +1,11 @@
package com.chwl.app.avroom.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.TextUtils;
@@ -11,23 +14,21 @@ import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import com.chwl.app.avroom.giftvalue.GiftValueDialogUiHelper;
import com.chwl.core.super_admin.util.SuperAdminUtil;
import com.chwl.core.utils.net.DontWarnObserver;
import com.chwl.core.utils.net.RxHelper;
import com.chwl.library.utils.SingleToastUtil;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.chwl.app.R;
import com.chwl.app.application.App;
import com.chwl.app.avroom.dialog.SelectLabelDialog;
import com.chwl.app.avroom.giftvalue.GiftValueDialogUiHelper;
import com.chwl.app.avroom.presenter.RoomSettingPresenter;
import com.chwl.app.avroom.view.IRoomSettingView;
import com.chwl.app.avroom.widget.EditRoomTitleDialog;
import com.chwl.app.base.BaseMvpActivity;
import com.chwl.app.base.PhotoPickActivity;
import com.chwl.app.common.util.BitmapUtil;
import com.chwl.app.common.widget.dialog.DialogManager;
import com.chwl.app.databinding.ActivityRoomSettingBinding;
import com.chwl.app.ui.webview.CommonWebViewActivity;
@@ -36,6 +37,7 @@ import com.chwl.core.UriProvider;
import com.chwl.core.auth.AuthModel;
import com.chwl.core.auth.event.KickOutEvent;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.file.FileModel;
import com.chwl.core.im.custom.bean.CustomAttachment;
import com.chwl.core.im.custom.bean.RoomNoticeAttachment;
import com.chwl.core.kick.KickModel;
@@ -51,14 +53,28 @@ import com.chwl.core.room.giftvalue.helper.GiftValueMrg;
import com.chwl.core.room.model.AvRoomModel;
import com.chwl.core.room.model.RoomSettingModel;
import com.chwl.core.room.queue.bean.MicMemberInfo;
import com.chwl.core.super_admin.util.SuperAdminUtil;
import com.chwl.core.utils.LogUtils;
import com.chwl.core.utils.myutil.MyUriUtils;
import com.chwl.core.utils.net.BeanObserver;
import com.chwl.core.utils.net.DontWarnObserver;
import com.chwl.core.utils.net.RxHelper;
import com.chwl.library.base.factory.CreatePresenter;
import com.chwl.library.common.file.FileHelper;
import com.chwl.library.common.util.PhotoCompressCallback;
import com.chwl.library.common.util.PhotoCompressUtil;
import com.chwl.library.net.rxnet.callback.CallBack;
import com.chwl.library.utils.CommonUtils;
import com.chwl.library.utils.JavaUtil;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import com.chwl.library.utils.codec.DESUtils;
import com.hjq.toast.ToastUtils;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.yalantis.ucrop.UCrop;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -71,14 +87,14 @@ import java.util.Objects;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import kotlinx.coroutines.Job;
/**
* @author chenran
* @date 2017/9/26
*/
@CreatePresenter(RoomSettingPresenter.class)
public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomSettingPresenter>
implements View.OnClickListener, IRoomSettingView {
public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomSettingPresenter> implements View.OnClickListener, IRoomSettingView {
private RelativeLayout managerLayout;
private RelativeLayout blackLayout;
@@ -98,6 +114,13 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
private ActivityRoomSettingBinding binding;
private Uri mUri;
private Job mJob;
private final int PERMISSION_CODE_STORAGE = 12;
private final int REQUEST_CODE_OPEN_PHOTO_PROVIDER = 111; // 从相册中选择
private final int REQUEST_CODE_STORAGE = 42;
private final int MAX_BITMAP_SIZE = 100 * 1024 * 1024; // 剪切的图片最大为100 MB
public static void start(Context context) {
Intent intent = new Intent(context, RoomSettingActivity.class);
context.startActivity(intent);
@@ -135,17 +158,22 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
binding.layoutSingleRoomSort.setVisibility(
AvRoomDataManager.get().isRoomOwner() && AvRoomDataManager.get().isSingleRoom()
? View.VISIBLE : View.GONE);
binding.setRoomAvatar.setVisibility((AvRoomDataManager.get().isRoomOwner() || AvRoomDataManager.get().isRoomAdmin()) ? View.VISIBLE : View.GONE);
//调用更改房间信息接口后会发消息ROOM_INFO_UPDATE在此处接收ui改动
IMNetEaseManager.get().getChatRoomEventObservable()
.compose(bindToLifecycle())
.filter(roomEvent -> roomEvent.getEvent() == RoomEvent.ROOM_INFO_UPDATE)
.subscribe(roomEvent -> updateRoomInfoView());
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
if (mJob != null) {
mJob.cancel(null);
}
}
private void initView() {
@@ -198,7 +226,7 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
}
}
private void loadGiftValueState(){
private void loadGiftValueState() {
if (SuperAdminUtil.isSuperAdmin()) {
binding.layoutGiftValue.setVisibility(View.GONE);
return;
@@ -260,8 +288,7 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
}
private void save(final String name, final String pwd, String label) {
save(name, pwd, label, false,
roomInfo.isHasAnimationEffect());
save(name, null, pwd, label, false, roomInfo.isHasAnimationEffect());
}
/**
@@ -273,7 +300,7 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
* @param isUpdateGiftEffect 是否改动了礼物特效
* @param giftEffect 是否开启礼物特效
*/
private void save(final String name, final String pwd, String label, boolean isUpdateGiftEffect,
private void save(final String name, final String avatar, final String pwd, String label, boolean isUpdateGiftEffect,
boolean giftEffect) {
String desc = null;
getDialogManager().showProgressDialog(this, ResUtil.getString(R.string.avroom_activity_roomsettingactivity_06));
@@ -293,13 +320,14 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
@Override
public void onSuccess(RoomInfo info) {
getDialogManager().dismissDialog();
ToastUtils.show(R.string.avroom_activity_roommanagerlistactivity_013);
if (isUpdateGiftEffect && !giftEffect) {
getMvpPresenter().updateGiftEffect(info);
}
}
};
if (AvRoomDataManager.get().isRoomOwner()) {
model.updateRoomInfo(name, desc, roomInfo.getIntroduction(), pwd, label, id,
model.updateRoomInfo(name, avatar, desc, roomInfo.getIntroduction(), pwd, label, id,
AuthModel.get().getCurrentUid(),
AuthModel.get().getTicket(),
giftEffect,
@@ -311,7 +339,7 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
.compose(bindToLifecycle())
.subscribe(observer);
} else if (AvRoomDataManager.get().isRoomAdmin()) {
model.updateByAdmin(roomInfo.getUid(), name, desc, roomInfo.getIntroduction(), pwd, label, id,
model.updateByAdmin(roomInfo.getUid(), name, avatar, desc, roomInfo.getIntroduction(), pwd, label, id,
AuthModel.get().getCurrentUid(),
AuthModel.get().getTicket(),
giftEffect,
@@ -404,13 +432,13 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
@Override
public void onOk() {
save(null, null, null, true, false);
save(null, null, null, null, true, false);
}
});
return;
}
//开启礼物特效
save(null, null, null, true, true);
save(null, null, null, null, true, true);
break;
case R.id.switch_screen:
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
@@ -552,11 +580,19 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
case R.id.switch_gift_value:
switchGiftValue();
break;
case R.id.setRoomAvatar:
checkStoragePermission();
break;
default:
}
}
private void switchGiftValue(){
private void checkStoragePermission() {
PhotoPickActivity.start(this, PhotoPickActivity.IMG);
}
private void switchGiftValue() {
if (AvRoomDataManager.get().isCpRoom()) {
return;
}
@@ -894,4 +930,104 @@ public class RoomSettingActivity extends BaseMvpActivity<IRoomSettingView, RoomS
imageView.setImageResource(isSelected ?
R.drawable.icon_room_set_lock_true : R.drawable.icon_room_set_lock_false);
}
@SuppressLint("CheckResult")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PhotoPickActivity.PICK_ACT_RESULT:
if (data != null) {
Uri uri = data.getData();
mUri = Uri.parse("file://" + FileHelper.getRootCacheDir().getPath() + "/" + System.nanoTime() + ".jpg");
if (uri != null && mUri != null) {
boolean isCopy = MyUriUtils.INSTANCE.copyFileToUrl(this, uri, mUri);
if (isCopy) {
crop(mUri, 1, mUri);
} else {
ToastUtils.show(R.string.exception_try_again);
}
}
}
break;
case UCrop.REQUEST_CROP:
if (mUri != null && mUri.getPath() != null) {
try {
if (mJob != null) {
mJob.cancel(null);
}
mJob = PhotoCompressUtil.compress(
this,
mUri.getPath(),
PhotoCompressUtil.getCompressCachePath("roomAvatar"), new PhotoCompressCallback() {
@Override
public void onSuccess(@NonNull String compressedImg) {
getDialogManager().showProgressDialog(RoomSettingActivity.this, ResUtil.getString(R.string.ui_user_userinfomodifyactivity_09));
FileModel.get()
.uploadFile(compressedImg)
.compose(bindToLifecycle())
.subscribe((url, throwable) -> {
if (throwable != null) {
onUploadFail(throwable);
} else {
onUpload(url);
}
});
}
@Override
public void onFail(@NonNull Throwable e) {
toast(e.getMessage());
}
});
mJob.start();
} catch (Exception e) {
}
}
break;
}
}
}
/**
* 第三方图片裁剪框架Ucrop
*/
private void crop(Uri sourceUri, long sourceSize, Uri destinationUri) {
if (sourceUri == null || destinationUri == null) {
return;
} //防止too large导致oom大于100m不处理内存大小
if (BitmapUtil.getSdBitmapSize(sourceUri) >= MAX_BITMAP_SIZE) {
toast(R.string.text_bitmap_too_large);
return;
}
UCrop.Options options = new UCrop.Options();
options.setCompressionQuality(100);
options.setShowCropGrid(false);
options.setToolbarColor(ContextCompat.getColor(App.gContext, android.R.color.black));
options.setStatusBarColor(ContextCompat.getColor(App.gContext, android.R.color.black));
options.setHideBottomControls(true);
options.setCompressionFormat(Bitmap.CompressFormat.JPEG);
options.setToolbarCancelDrawable(R.drawable.user_ucrop_ic_closs);
options.setToolbarCropDrawable(R.drawable.user_ucrop_ic_sure);
options.setToolbarWidgetColor(ContextCompat.getColor(App.gContext, R.color.color_white));
UCrop.of(sourceUri, destinationUri).withOptions(options).withAspectRatio(1f, 1f).withMaxResultSize(800, 800).start(this);
}
private void onUpload(String url) {
LogUtils.d(" 请求接口 更新房间封面 url = " + url);
save(null, url, null, null, false, roomInfo.isHasAnimationEffect());
}
private void onUploadFail(Throwable throwable) {
toast(ResUtil.getString(R.string.ui_user_userinfomodifyactivity_08) + ":" + throwable.getMessage());
getDialogManager().dismissDialog();
}
}

View File

@@ -119,7 +119,7 @@ public class RoomTitleEditActivity extends BaseBindingActivity<ActivityRoomTitle
String ticket = AuthModel.get().getTicket();
if (AvRoomDataManager.get().isRoomOwner()) {
mDialogManager.showProgressDialog(this);
Disposable disposable = roomSettingModel.updateRoomInfo(info.title, desc, introduction, info.roomPwd, info.getRoomTag(), info.tagId, currentUid,
Disposable disposable = roomSettingModel.updateRoomInfo(info.title,null,desc, introduction, info.roomPwd, info.getRoomTag(), info.tagId, currentUid,
ticket, info.isHasAnimationEffect(), info.getAudioQuality(), info.getLimitType(),info.isPureMode(), info.getType(),
info.getMgId())
.subscribe(this);
@@ -128,7 +128,7 @@ public class RoomTitleEditActivity extends BaseBindingActivity<ActivityRoomTitle
} else if (AvRoomDataManager.get().isRoomAdmin()) {
mDialogManager.showProgressDialog(this);
Disposable disposable = roomSettingModel.updateByAdmin(info.getUid(), info.title, desc, introduction, info.roomPwd, info.getRoomTag(), info.tagId, currentUid,
Disposable disposable = roomSettingModel.updateByAdmin(info.getUid(), info.title,null, desc, introduction, info.roomPwd, info.getRoomTag(), info.tagId, currentUid,
ticket, info.isHasAnimationEffect(), info.getAudioQuality(),info.isPureMode())
.subscribe(this);

View File

@@ -1,43 +1,70 @@
package com.chwl.app.avroom.activity
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.view.View
import androidx.core.view.isVisible
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingActivity
import com.chwl.app.bindadapter.BaseBindingAdapter
import com.chwl.app.bindadapter.BaseBindingViewHolder
import com.chwl.app.databinding.ItemRoomModeBinding
import com.chwl.app.databinding.RoomTypeSwitchActivityBinding
import com.chwl.app.home.helper.OpenRoomHelper
import com.chwl.app.ui.utils.load
import com.chwl.app.ui.utils.loadFromUrl
import com.chwl.app.ui.webview.CommonWebViewActivity
import com.chwl.app.utils.NumberUtils
import com.chwl.core.UriProvider
import com.chwl.core.bean.response.ServiceResult
import com.chwl.core.gift.bean.RoomLevelInfo
import com.chwl.core.gift.bean.RoomMicDress
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.room.bean.RoomInfo
import com.chwl.core.super_admin.util.SuperAdminUtil
import com.chwl.core.utils.net.RxHelper
import com.chwl.library.common.util.ClickUtils.click
import com.chwl.library.common.util.doToast
import com.chwl.library.common.util.isVerify
import com.chwl.library.common.util.setVis
import com.chwl.library.common.util.toColor
import com.chwl.library.net.rxnet.RxNet
import com.chwl.library.utils.ResUtil
import com.chwl.library.utils.SingleToastUtil
import com.example.lib_utils.ktx.singleClick
import com.netease.nim.uikit.StatusBarUtil
import com.example.lib_utils.ktx.getString
import io.reactivex.Single
import retrofit2.http.GET
import retrofit2.http.Query
//切换麦位页面
class RoomTypeSwitchActivity : BaseViewBindingActivity<RoomTypeSwitchActivityBinding>() {
private var currentType: Int? = null
private var selectType: Int? = null
companion object {
fun isCanSwitch(): Boolean {
if (SuperAdminUtil.isSuperAdmin()) {
return false
}
if (AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_HOME_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_PARTY && AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_REVELRY) {
if (AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_HOME_PARTY
&& AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_PARTY
&& AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_REVELRY
&& AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_19_ROOM
&& AvRoomDataManager.get().roomType != RoomInfo.ROOMTYPE_20_ROOM
) {
return false
}
if (AvRoomDataManager.get().isDatingMode) {
return false
}
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo
if (roomInfo == null || roomInfo.isPermitRoom == 1) {
return false
}
return AvRoomDataManager.get().isManager
}
@@ -46,97 +73,324 @@ class RoomTypeSwitchActivity : BaseViewBindingActivity<RoomTypeSwitchActivityBin
}
}
private var mCurrentMicType: Int? = null
private var mCurrentMicSkins: Int? = null
private var mCurrentMicEffects: Int? = null
private var mCurrentLevel = 0
private val mMicTypeAdapter = RoomModeAdapter()
private val mMicSkinsAdapter = RoomModeAdapter()
private val mMicEffectsAdapter = RoomModeAdapter()
private var mTypeSet = true
private var micSkinsEffectsSet = true
override fun init() {
initWhiteTitleBar(ResUtil.getString(R.string.room_type))
initEvent()
this.currentType = AvRoomDataManager.get().mCurrentRoomInfo?.type
updateSelectView(currentType)
initView()
initListener()
initData()
}
private fun initEvent() {
binding.tvSubmit.singleClick {
selectType?.let {
if (currentType != it) {
trySwitchRoomType(it)
private fun initView() {
initDarkTitleBar(R.string.Room_Mode.getString())
setListView(binding.rvListType, mMicTypeAdapter)
setListView(binding.rvListSkins, mMicSkinsAdapter)
setListView(binding.rvListEffects, mMicEffectsAdapter)
}
private fun initListener() {
binding.btnConfirm.click {
switchRoomMicType()
}
binding.btnMore.click {
CommonWebViewActivity.start(this, UriProvider.getRoomLevelRule())
}
}
private fun initData() {
val mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo
mCurrentMicType = mCurrentRoomInfo?.type
getBoomLevelInfo(AvRoomDataManager.get().roomUid).compose(bindToLifecycle())
.doOnSuccess {
if (it != null) {
val levelExp = it.nextLevelExp - it.currentLevelExp
val proExp = it.roomVal - it.currentLevelExp
val nexExp = levelExp - proExp
binding.proExp.max = levelExp.toInt()
binding.proExp.progress = proExp.toInt()
binding.avatar.load(mCurrentRoomInfo?.avatar)
binding.nick.text = mCurrentRoomInfo?.title
binding.levelIcon.load(it.getCurrentLevelIcon())
binding.roomValue.text = R.string.Room_Value_s.getString(it.roomVal.toLong().toString())
binding.roomAdmin.text = R.string.Room_Admin_s.getString(it.currentManagerNum,it.managerLimitNum)
binding.currentLevel.text = R.string.LV_s.getString(it.currentLevel)
binding.nextLevel.text = R.string.LV_s.getString(it.nextLevel)
binding.nextExp.text = R.string.Next_LV_EXP_s.getString(NumberUtils.format(nexExp))
if (it.nextLevel == 0) {
binding.nextExp.setVis(false,true)
binding.proExp.max = 1
binding.proExp.progress = 1
binding.nextLevel.text = R.string.LV_s.getString(it.currentLevel)
binding.currentLevel.text = R.string.LV_s.getString(it.currentLevel-1)
}
mCurrentMicSkins = it.usedMicSkinId
mCurrentMicEffects = it.usedMicEffectId
mCurrentLevel = it.currentLevel
val typeArr = mutableListOf(
RoomInfo.ROOMTYPE_HOME_PARTY,
RoomInfo.ROOMTYPE_PARTY,
RoomInfo.ROOMTYPE_REVELRY,
RoomInfo.ROOMTYPE_20_ROOM,
RoomInfo.ROOMTYPE_19_ROOM,
)
val typeNArr = arrayOf(
R.drawable.ic_room_mic_type_9_n,
R.drawable.ic_room_mic_type_10_n,
R.drawable.ic_room_mic_type_15_n,
R.drawable.ic_room_mic_type_20_n,
R.drawable.ic_room_mic_type_19_n,
)
val typeSArr = arrayOf(
R.drawable.ic_room_mic_type_9_s,
R.drawable.ic_room_mic_type_10_s,
R.drawable.ic_room_mic_type_15_s,
R.drawable.ic_room_mic_type_20_s,
R.drawable.ic_room_mic_type_19_s,
)
val nameArr = arrayOf(
R.string.Classic,
R.string.Party,
R.string.Carnival,
R.string.Celebration,
R.string.Unique,
)
if (!it.isHasUnique) {
typeArr.remove(RoomInfo.ROOMTYPE_19_ROOM)
typeArr.remove(RoomInfo.ROOMTYPE_20_ROOM)
}
val typeData = mutableListOf<RoomMicDress>()
typeArr.filterIndexed { index, micType ->
typeData.add(RoomMicDress().apply {
id = micType
dressType = RoomMicDress.RoomDressType.T_Type
isSelect = micType == mCurrentMicType
normalRes = typeNArr[index]
selectRes = typeSArr[index]
name = nameArr[index].getString()
})
}
mMicTypeAdapter.setNewData(typeData as List<RoomMicDress>?)
if (it.getMicSkins().isVerify()) {
val micSkins = it.getMicSkins()
micSkins.add(0, RoomMicDress().apply {
id = 0
normalRes = R.drawable.icon_room_up_micro
})
micSkins.forEach { it.isSelect = (it.id == mCurrentMicSkins) }
mMicSkinsAdapter.setNewData(micSkins)
}
if (it.getMicEffects().isVerify()) {
val micEffects = it.getMicEffects()
micEffects.add(0, RoomMicDress().apply {
id = 0
normalRes = R.drawable.shape_463a26_circle
})
micEffects.forEach { it.isSelect = (it.id == mCurrentMicEffects) }
mMicEffectsAdapter.setNewData(it.getMicEffects())
}
}
}.doOnError { it?.message?.doToast() }.subscribe()
}
private fun setListView(rvList: RecyclerView, adapter: RoomModeAdapter) {
adapter.setOnItemClickListener { adapter, view, position ->
val clickData = adapter?.data?.get(position)
if (clickData != null && clickData is RoomMicDress){
if (mCurrentLevel < clickData.reachLevel) {
R.string.roomLevelErrorTips.doToast()
return@setOnItemClickListener
}
}
adapter?.data?.forEachIndexed { index, feData ->
if (feData is RoomMicDress) {
feData.isSelect = index == position
}
}
adapter?.notifyDataSetChanged()
}
rvList.layoutManager = GridLayoutManager(context, 3, RecyclerView.VERTICAL, false)
rvList.adapter = adapter
}
private fun switchRoomMicType() {
var typeId = -1
var skinsId = -1
var effectId = -1
var isLevelError = false
mMicTypeAdapter.data?.forEach {
if (it.isSelect) {
typeId = it.id
}
}
mMicSkinsAdapter.data?.forEach {
if (it.isSelect) {
if (it.id > 0) {
skinsId = it.id
}
if (mCurrentLevel < it.reachLevel) {
isLevelError = true
}
}
}
addTypeSelectClick(binding.iv9, RoomInfo.ROOMTYPE_HOME_PARTY)
addTypeSelectClick(binding.iv10, RoomInfo.ROOMTYPE_PARTY)
addTypeSelectClick(binding.iv15, RoomInfo.ROOMTYPE_REVELRY)
}
private fun addTypeSelectClick(view: View, type: Int) {
view.setOnClickListener {
updateSelectView(type)
}
}
private fun updateSelectView(type: Int?) {
this.selectType = type
val views = mapOf(
RoomInfo.ROOMTYPE_HOME_PARTY to binding.iv9Border,
RoomInfo.ROOMTYPE_PARTY to binding.iv10Border,
RoomInfo.ROOMTYPE_REVELRY to binding.iv15Border
)
val displayRes = mapOf(
RoomInfo.ROOMTYPE_HOME_PARTY to R.drawable.room_type_bg_9,
RoomInfo.ROOMTYPE_PARTY to R.drawable.room_type_bg_10,
RoomInfo.ROOMTYPE_REVELRY to R.drawable.room_type_bg_15
)
views.forEach {
it.value.isVisible = it.key == type
}
val resId = displayRes.get(type)
if (resId != null) {
binding.ivSelected.setImageResource(resId)
} else {
binding.ivSelected.setImageDrawable(null)
}
if (type == currentType) {
binding.tvSubmit.setText(R.string.room_type_using)
} else {
binding.tvSubmit.setText(R.string.room_type_use)
}
}
private fun trySwitchRoomType(type: Int) {
val currentType = this.currentType
if (currentType != null && currentType > type) {
dialogManager.showOkCancelDialog(
ResUtil.getString(R.string.switch_room_type_tips),
ResUtil.getString(R.string.login_fragment_adduserinfofragment_04)
) {
requestSwitchRoomType(type)
mMicEffectsAdapter.data?.forEach {
if (it.isSelect) {
if (it.id > 0) {
effectId = it.id
}
if (mCurrentLevel < it.reachLevel) {
isLevelError = true
}
}
} else {
requestSwitchRoomType(type)
}
}
@SuppressLint("CheckResult")
private fun requestSwitchRoomType(type: Int) {
dialogManager.showProgressDialog(context)
OpenRoomHelper.updateRoomInfoRx(
AvRoomDataManager.get().mCurrentRoomInfo,
type,
0
).compose(bindToLifecycle()).subscribe({
dialogManager.dismissDialog()
finish()
}, {
SingleToastUtil.showToast(it.message)
dialogManager.dismissDialog()
})
if (isLevelError) {
R.string.roomLevelErrorTips.doToast()
} else {
if ((typeId != -1 && typeId != mCurrentMicType) || (effectId != mCurrentMicEffects) || (skinsId != mCurrentMicSkins)) {
dialogManager.showOkCancelDialog(
ResUtil.getString(R.string.switch_room_type_tips),
ResUtil.getString(R.string.login_fragment_adduserinfofragment_04)
) {
binding.btnConfirm.post {
mTypeSet = false
dialogManager.showProgressDialog(context)
val newRoomInfo = RoomInfo()
newRoomInfo.uid = AvRoomDataManager.get().roomUid
newRoomInfo.type = typeId
newRoomInfo.usedMicSkinId = skinsId
newRoomInfo.usedMicEffectId = effectId
OpenRoomHelper.updateRoomInfoEx(newRoomInfo)
.compose(bindToLifecycle())
.doOnSuccess {
mTypeSet = true
dialogManager.dismissDialog()
// val mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo
// mCurrentRoomInfo?.type = typeId
// mCurrentRoomInfo?.usedMicSkinId = skinsId
// mCurrentRoomInfo?.usedMicEffectId = effectId
finish()
}
.doOnError {
SingleToastUtil.showToast(it.message)
dialogManager.dismissDialog()
}
.subscribe()
}
}
} else {
finish()
}
}
}
override fun needSteepStateBar(): Boolean {
return true
}
override fun setStatusBar() {
super.setStatusBar()
StatusBarUtil.transparencyBar(this)
StatusBarUtil.StatusBarLightMode(this)
override fun transparencyBar() = true
class RoomModeAdapter : BaseBindingAdapter<ItemRoomModeBinding, RoomMicDress>() {
override fun convert(
helper: BaseBindingViewHolder<ItemRoomModeBinding>,
item: RoomMicDress
) {
helper?.binding?.let { binding ->
binding.bg.changeStrikeColor(if (item.isSelect) "#ff8c03".toColor() else "#1b1b1d".toColor())
binding.bg.changeSoildColor(if (item.isSelect) "#261800".toColor() else "#1b1b1d".toColor())
binding.tvName.alpha = (if (item.isSelect) 1f else 0.5f)
binding.tvName.setVis(item.dressType == RoomMicDress.RoomDressType.T_Type)
binding.tvName.text = item.name
binding.ivType.setVis(false)
binding.ivSkins.setVis(false)
binding.ivEffect.setVis(false)
if (item.id == 0) {
binding.ivSkins.setImageResource(item.normalRes)
binding.ivSkins.setVis(true)
} else {
if (item.dressType == RoomMicDress.RoomDressType.T_Type) {
binding.ivType.setImageResource(if (item.isSelect) item.selectRes else item.normalRes)
binding.ivType.setVis(true)
} else if (item.dressType == RoomMicDress.RoomDressType.T_Skin) {
binding.ivSkins.load(item.normalMicUrl)
binding.ivSkins.setVis(true)
} else if (item.dressType == RoomMicDress.RoomDressType.T_Effects) {
binding.ivEffect.setVis(true)
binding.ivEffect.loadFromUrl(item.normalMicUrl)
}
}
}
}
}
private fun getBoomLevelInfo(roomUid: Long): Single<RoomLevelInfo> {
return api.getBoomLevelInfo(roomUid)
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers())
}
private val api: Api = RxNet.create(Api::class.java);
interface Api {
//房间 等级信息
@GET("/room/level/info")
fun getBoomLevelInfo(@Query("roomUid") roomUid: Long): Single<ServiceResult<RoomLevelInfo>>
}
}

View File

@@ -7,32 +7,31 @@ import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.RecyclerView;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.utils.AvatarHelper;
import com.chwl.library.widget.SVGAView;
import com.chwl.core.utils.extension.StringExtensionKt;
import com.coorchice.library.SuperTextView;
import com.example.lib_utils.StringUtils2;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.opensource.svgaplayer.SVGAImageView;
import com.chwl.app.R;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.common.widget.CircleImageView;
import com.chwl.app.ui.utils.ImageLoadKt;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.app.ui.webview.DialogWebViewActivity;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.app.utils.AvatarHelper;
import com.chwl.app.utils.RegexUtil;
import com.chwl.app.utils.ResourceManager;
import com.chwl.core.UriProvider;
import com.chwl.core.bean.RoomMicInfo;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.decoration.headwear.bean.HeadWearInfo;
import com.chwl.core.gift.bean.RoomMicDress;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.noble.NobleResourceType;
import com.chwl.core.noble.NobleUtil;
@@ -43,8 +42,14 @@ import com.chwl.core.room.pk.bean.PKTeamInfo;
import com.chwl.core.room.queue.bean.MicMemberInfo;
import com.chwl.core.user.UserModel;
import com.chwl.core.utils.ActivityUtil;
import com.chwl.core.utils.extension.StringExtensionKt;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.config.BasicConfig;
import com.chwl.library.widget.SVGAView;
import com.coorchice.library.SuperTextView;
import com.example.lib_utils.StringUtils2;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.opensource.svgaplayer.SVGAImageView;
/**
* @author xiaoyu
@@ -61,6 +66,8 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
public static final String MICRO_TYPE_SINGLE = "single";
public static final String MICRO_TYPE_PARTY = "party";
public static final String MICRO_TYPE_REVELRY = "revelry";
public static final String MICRO_TYPE_REVELRY_19 = "revelry_19";
public static final String MICRO_TYPE_REVELRY_20 = "revelry_20";
protected static final int TYPE_KING = 2;
protected static final int TYPE_BOSS = 1;
@@ -140,12 +147,15 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
}
public class NormalMicroViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View rootView;
LinearLayout llNick;
View microLayout;
TextView tvNick;
ImageView ivUpImage;
ImageView ivLockImage;
ImageView ivMuteImage;
CircleImageView ivAvatar;
ImageView ivAvatar;
SVGAImageView ivHalo;
@Nullable
@@ -160,8 +170,12 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
int position = TYPE_INVALID;
int micPositionNameOffset = 2;
int micType = 0; //特殊麦位type , 麦位图片特殊处理
NormalMicroViewHolder(View itemView) {
super(itemView);
rootView = itemView.findViewById(R.id.rootView);
microLayout = itemView.findViewById(R.id.micro_layout);
ivHalo = itemView.findViewById(R.id.iv_halo);
ivUpImage = itemView.findViewById(R.id.up_image);
ivLockImage = itemView.findViewById(R.id.lock_image);
@@ -169,6 +183,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
ivAvatar = itemView.findViewById(R.id.avatar);
ivHeadWear = itemView.findViewById(R.id.iv_head_wear);
tvNick = itemView.findViewById(R.id.nick);
llNick = itemView.findViewById(R.id.ll_nick);
ivCharmLevelTag = itemView.findViewById(R.id.iv_charm_level_tag);
ivKickGuard = itemView.findViewById(R.id.iv_kick_guard);
@@ -197,7 +212,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
}
}
void bind(RoomQueueInfo info, int position) {
void bind(@NonNull RoomQueueInfo info, int position) {
this.info = info;
this.position = position;
RoomMicInfo roomMicInfo = info.mRoomMicInfo;
@@ -206,6 +221,20 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
ivCharmLevelTag.setVisibility(View.GONE);
}
if (micType == 0) {
// 麦位皮肤
// ivUpImage = up_image = icon_room_up_micro - 可上麦
// ivLockImage = lock_image = icon_room_lock_micro - 锁麦
RoomMicDress roomMicSkins = ResourceManager.INSTANCE.getRoomMicSkins();
if (roomMicSkins != null) {
ImageLoadKt.loadImage(ivUpImage,roomMicSkins.normalMicUrl);
ImageLoadKt.loadImage(ivLockImage,roomMicSkins.normalMicLockUrl);
}else {
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
ivLockImage.setImageResource(R.drawable.icon_room_lock_micro);
}
}
if (roomMicInfo == null) {
ivUpImage.setVisibility(View.VISIBLE);
ivLockImage.setVisibility(View.GONE);
@@ -230,7 +259,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
ivUpImage.setVisibility(View.GONE);
ivAvatar.setVisibility(View.VISIBLE);
setSelectText(position, chatRoomMember.getNick(), chatRoomMember.getGender());
ImageLoadUtils.loadAvatar(BasicConfig.INSTANCE.getAppContext(), chatRoomMember.getAvatar(), ivAvatar);
ImageLoadUtils.loadAvatar(chatRoomMember.getAvatar(), ivAvatar);
// 加载贵族
updateNobleView(chatRoomMember);
//增加贵族昵称颜色

View File

@@ -11,7 +11,7 @@ class CreateRoomGameAdapter :
BaseQuickAdapter<GameInfo, BaseViewHolder>(R.layout.item_room_create_game) {
override fun convert(helper: BaseViewHolder, item: GameInfo) {
helper.getView<ImageView>(R.id.iv_cover).load(item.pic,12f)
helper.getView<ImageView>(R.id.iv_cover).load(item.pic?:"",12f)
helper.itemView.isSelected = item.isSelect
}

View File

@@ -10,7 +10,7 @@ class CreateRoomGameGuideAdapter :
BaseQuickAdapter<GameInfo, BaseViewHolder>(R.layout.item_room_create_game_guide) {
override fun convert(helper: BaseViewHolder, item: GameInfo) {
GlideUtils.instance().load(item.pic,R.drawable.default_cover,helper.getView(R.id.iv_cover))
GlideUtils.instance().load(item.pic?:"",R.drawable.default_cover,helper.getView(R.id.iv_cover))
}
}

View File

@@ -6,6 +6,7 @@ import com.chwl.app.R
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.utils.extension.subAndReplaceDot
import com.chwl.library.common.util.isVerify
class ExitRoomAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_exit_room) {
@@ -16,5 +17,6 @@ class ExitRoomAdapter :
ImageLoadUtils.loadImage(mContext, item.tagPict, helper.getView(R.id.iv_tag))
helper.setText(R.id.tv_online_num, item.onlineNum.toString())
.setText(R.id.tv_title, item.title.subAndReplaceDot(8))
helper.setVisible(R.id.iv_tag, item.tagPict.isVerify())
}
}

View File

@@ -0,0 +1,144 @@
package com.chwl.app.avroom.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import com.chwl.app.R;
import com.chwl.app.ui.utils.ImageLoadKt;
import com.chwl.app.ui.widget.recyclerview.layoutmanager.BoosRoomLayoutManager;
import com.chwl.app.utils.ResourceManager;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.gift.bean.RoomMicDress;
import com.chwl.library.common.util.OtherExtKt;
import com.chwl.library.widget.SVGAView;
import com.example.lib_utils.ktx.ResourcesKtxKt;
import com.opensource.svgaplayer.SVGAImageView;
public class Mic19ViewAdapter extends BaseMicroViewAdapter {
//麦位 从-1 开始的 , 所以 8好麦的pos是6
int BossPos = 7;
public Mic19ViewAdapter(Context context) {
super(context);
}
/**
* Set LayoutManager and bind this to RecyclerView
*/
@Override
public void bindToRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new BoosRoomLayoutManager(5));
recyclerView.setAdapter(this);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
OtherExtKt.doLog(" Mic19ViewAdapter onCreateViewHolder ");
View item ;
item = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_micro,parent,false);
MicroViewHolder microViewHolder = new MicroViewHolder(item);
return microViewHolder;
}
private void setViewDiff(View[] views , boolean isDiff) {
for (int i = 0; i <views.length; i++) {
int width = 0;
View view = views[i];
//头像,锁头,上麦图 宽度
if (isDiff) {
width = ResourcesKtxKt.getDimensionToInt(R.dimen.dp_62);
} else {
width = ResourcesKtxKt.getDimensionToInt(R.dimen.dp_50);
}
if (view instanceof SVGAView){
// 头饰
width = (int) (width / 0.7575);
}else if (view instanceof SVGAImageView){
//光圈
width = (int) (width / 0.5555);
}else if (view.getId() == R.id.micro_layout){
//头像布局 , 特殊更改
width = ResourcesKtxKt.getDimensionToInt(R.dimen.dp_66);
if (isDiff) {
width = (int) (ResourcesKtxKt.getDimensionToInt(R.dimen.dp_66) / 0.7575);
}
}
OtherExtKt.setViewWH(view, width, width,false);
}
}
@Override
public String microType() {
return BaseMicroViewAdapter.MICRO_TYPE_REVELRY_19;
}
@Override
public int getItemViewType(int position) {
return position != BossPos ? TYPE_NORMAL : TYPE_BOSS;
}
@Override
public int getItemCount() {
return 19;
}
class MicroViewHolder extends GiftValueViewHolder {
MicroViewHolder(View itemView) {
super(itemView);
micType = -1;
}
@Override
public void bind(RoomQueueInfo info, int position) {
// int width = MyUtil.INSTANCE.getMAppWidth() / 5;
OtherExtKt.setViewWH(rootView,ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,false);
setViewDiff(new View[]{ivHalo,ivHeadWear, ivAvatar, ivLockImage, ivUpImage,microLayout}, position == 6);
super.bind(info, position);
// ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
// 麦位皮肤
// ivUpImage = up_image = icon_room_up_micro - 可上麦
// ivLockImage = lock_image = icon_room_lock_micro - 锁麦
RoomMicDress roomMicSkins = ResourceManager.INSTANCE.getRoomMicSkins();
if (roomMicSkins != null) {
if (getItemViewType() == TYPE_BOSS) {
OtherExtKt.doLog("麦位 加载 麦位 图 boss position = "+position+" = "+roomMicSkins.bossMicUrl);
ImageLoadKt.loadImage(ivUpImage,roomMicSkins.bossMicUrl);
ImageLoadKt.loadImage(ivLockImage,roomMicSkins.bossMicLockUrl);
} else {
OtherExtKt.doLog("麦位 加载 麦位 图 normal position = "+position+" = "+roomMicSkins.bossMicUrl);
ImageLoadKt.loadImage(ivUpImage,roomMicSkins.normalMicUrl);
ImageLoadKt.loadImage(ivLockImage,roomMicSkins.normalMicLockUrl);
}
}else {
OtherExtKt.doLog("麦位 加载 麦位 图 def position = "+position);
if (getItemViewType() == TYPE_BOSS) {
ivUpImage.setImageResource(R.drawable.icon_room_up_micro_boss);
ivLockImage.setImageResource(R.drawable.icon_room_lock_micro);
} else {
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
ivLockImage.setImageResource(R.drawable.icon_room_lock_micro);
}
}
}
@SuppressLint("SetTextI18n")
@Override
public void setDefalutText(int index) {
super.setDefalutText(index);
}
}
}

View File

@@ -0,0 +1,70 @@
package com.chwl.app.avroom.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chwl.app.R;
import com.chwl.core.bean.RoomQueueInfo;
public class Mic20ViewAdapter extends BaseMicroViewAdapter {
public Mic20ViewAdapter(Context context) {
super(context);
}
/**
* Set LayoutManager and bind this to RecyclerView
*/
@Override
public void bindToRecyclerView(RecyclerView recyclerView) {
recyclerView.setLayoutManager(new GridLayoutManager(context,5,RecyclerView.VERTICAL,false));
recyclerView.setAdapter(this);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View item;
item = LayoutInflater.from(parent.getContext()).
inflate(R.layout.list_item_micro, parent, false);
return new Mic20ViewAdapter.MicroViewHolder(item);
}
@Override
public String microType() {
return BaseMicroViewAdapter.MICRO_TYPE_REVELRY_20;
}
@Override
public int getItemViewType(int position) {
return TYPE_NORMAL;
}
@Override
public int getItemCount() {
return 20;
}
class MicroViewHolder extends GiftValueViewHolder {
MicroViewHolder(View itemView) {
super(itemView);
}
@Override
public void bind(RoomQueueInfo info, int position) {
super.bind(info, position);
// ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
}
@SuppressLint("SetTextI18n")
@Override
public void setDefalutText(int index) {
super.setDefalutText(index);
}
}
}

View File

@@ -87,7 +87,7 @@ public class MicroViewAdapter extends BaseMicroViewAdapter {
// if (position == 7) {
// ivUpImage.setImageResource(R.drawable.icon_room_up_micro_vip);
// } else {
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
// ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
// }
}

View File

@@ -12,7 +12,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chwl.app.R;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.manager.AvRoomDataManager;
/**
* @author xiaoyu
@@ -67,7 +66,7 @@ public class PartyMicroViewAdapter extends BaseMicroViewAdapter {
@Override
public void bind(RoomQueueInfo info, int position) {
super.bind(info, position);
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
// ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
}
@SuppressLint("SetTextI18n")

View File

@@ -12,7 +12,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chwl.app.R;
import com.chwl.core.bean.RoomQueueInfo;
import com.chwl.core.manager.AvRoomDataManager;
/**
* @author xiaoyu
@@ -67,7 +66,7 @@ public class RevelryMicroViewAdapter extends BaseMicroViewAdapter {
@Override
public void bind(RoomQueueInfo info, int position) {
super.bind(info, position);
ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
// ivUpImage.setImageResource(R.drawable.icon_room_up_micro);
}
@SuppressLint("SetTextI18n")

View File

@@ -109,9 +109,9 @@ public class RoomConsumeListAdapter extends BaseMultiItemQuickAdapter<RoomContri
}
ivAvatar.setVisibility(View.VISIBLE);
if (roomConsumeInfo.isHide()) {
ImageLoadUtils.loadBigAvatar(mContext, context.getResources().getString(R.string.url_mystery_man), ivAvatar, true);
ImageLoadUtils.loadAvatarBig(context.getResources().getString(R.string.url_mystery_man), ivAvatar);
} else {
ImageLoadUtils.loadBigAvatar(mContext, roomConsumeInfo.getAvatar(), ivAvatar, true);
ImageLoadUtils.loadAvatarBig(roomConsumeInfo.getAvatar(), ivAvatar);
}
ivRankIcon.setImageResource(emptyPic);

View File

@@ -90,7 +90,7 @@ public class RoomConsumerListAdapterTemp extends BaseMultiItemQuickAdapter<RoomR
if (i == 0) {
if (!TextUtils.isEmpty(userInfo.getAvatar()))
ImageLoadUtils.loadBigAvatar(mContext, userInfo.getAvatar(), ciTopOne, true);
ImageLoadUtils.loadAvatarBig(userInfo.getAvatar(), ciTopOne);
ivGenderOne.setVisibility(isEmptyBean ? View.GONE : View.VISIBLE);
@@ -113,7 +113,7 @@ public class RoomConsumerListAdapterTemp extends BaseMultiItemQuickAdapter<RoomR
} else if (i == 1) {
if (!TextUtils.isEmpty(userInfo.getAvatar()))
ImageLoadUtils.loadBigAvatar(mContext, userInfo.getAvatar(), ciTopTwo, true);
ImageLoadUtils.loadAvatarBig(userInfo.getAvatar(), ciTopTwo);
ivGenderTwo.setVisibility(isEmptyBean ? View.GONE : View.VISIBLE);
ivGenderTwo.setImageResource(userInfo.getGender() == 1 ? R.drawable.ic_gender_male : R.drawable.ic_gender_female);
@@ -135,7 +135,7 @@ public class RoomConsumerListAdapterTemp extends BaseMultiItemQuickAdapter<RoomR
} else if (i == 2) {
if (!TextUtils.isEmpty(userInfo.getAvatar()))
ImageLoadUtils.loadBigAvatar(mContext, userInfo.getAvatar(), ciTopThree, true);
ImageLoadUtils.loadAvatarBig(userInfo.getAvatar(), ciTopThree);
ivGenderThree.setVisibility(isEmptyBean ? View.GONE : View.VISIBLE);
ivGenderThree.setImageResource(userInfo.getGender() == 1 ? R.drawable.ic_gender_male : R.drawable.ic_gender_female);
@@ -170,7 +170,7 @@ public class RoomConsumerListAdapterTemp extends BaseMultiItemQuickAdapter<RoomR
RoomContributeUserInfo roomContributeUserInfo = (RoomContributeUserInfo) roomConsumeInfo.getData();
CircleImageView avatarView = baseViewHolder.getView(R.id.avatar_view);
ImageLoadUtils.loadAvatar(mContext, roomContributeUserInfo.getAvatar(), avatarView, true);
ImageLoadUtils.loadAvatar(mContext, roomContributeUserInfo.getAvatar(), avatarView);
AppCompatImageView ivNobleLevel = baseViewHolder.getView(R.id.iv_noble_level);
ivNobleLevel.setVisibility(View.GONE);

View File

@@ -11,8 +11,8 @@ import com.chwl.core.room.game.bean.GameInfo
class RoomGameListAdapter :
BaseQuickAdapter<GameInfo, BaseViewHolder>(R.layout.room_gameplay_item2) {
override fun convert(helper: BaseViewHolder, item: GameInfo?) {
helper.setText(R.id.tv_name, item?.name)
helper.setText(R.id.tv_name, item?.name?:"")
val iconView = helper.getView<ImageView>(R.id.iv_icon)
iconView.load(item?.pic2)
iconView.load(item?.pic2?:"")
}
}

View File

@@ -1,6 +1,7 @@
package com.chwl.app.avroom.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -10,22 +11,25 @@ import android.widget.TextView;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.chwl.app.R;
import com.chwl.app.avroom.ChatMemberDiffUtilCallback;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.core.manager.AvRoomDataManager;
import com.chwl.core.manager.IMNetEaseManager;
import com.chwl.core.manager.RoomEvent;
import com.chwl.core.user.bean.UserInfo;
import com.chwl.library.common.util.OtherExtKt;
import com.chwl.library.utils.ListUtils;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Objects;
import io.reactivex.disposables.Disposable;
@@ -163,10 +167,37 @@ public class RoomInviteAdapter extends RecyclerView.Adapter<RoomInviteAdapter.Ro
sexImage.setVisibility(View.GONE);
}
}
holder.mViewLine.setVisibility(position == getItemCount() - 1 ? View.GONE : View.VISIBLE);
ImageLoadUtils.loadAvatar(mContext, chatRoomMember.getAvatar(), holder.mIvAvatar);
holder.mTvMemberName.setText(chatRoomMember.getNick());
try {
Map<String, Object> map = (Map<String, Object>) chatRoomMember.getExtension().get(chatRoomMember.getAccount());
String nick = map.get(UserInfo.NICK).toString();
String avatar = map.get(UserInfo.AVATAR).toString();
boolean enterHide = (boolean) map.get(UserInfo.ENTER_HIDE);
if (enterHide) {
holder.mIvAvatar.setImageResource(R.drawable.ic_mystery);
} else {
if (chatRoomMember.getAvatar() == null || TextUtils.isEmpty(chatRoomMember.getAvatar())) {
ImageLoadUtils.loadAvatar(mContext, avatar, holder.mIvAvatar);
}
CharSequence nickText = holder.mTvMemberName.getText();
if (!OtherExtKt.isVerify(nickText)){
if (OtherExtKt.isVerify(nick)) {
holder.mTvMemberName.setText(nick);
}
}
}
}catch (Exception e){
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

View File

@@ -8,10 +8,12 @@ import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.chwl.app.R;
import com.chwl.app.common.widget.CircleImageView;
import com.chwl.app.ui.utils.ImageLoadUtils;
import com.chwl.core.user.UserModel;
import com.chwl.library.common.util.OtherExtKt;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import java.util.List;
@@ -54,6 +56,13 @@ public class RoomNormalListAdapter extends RecyclerView.Adapter<RoomNormalListAd
holder.operationImg.setTag(chatRoomMember);
holder.operationImg.setOnClickListener(this);
ImageLoadUtils.loadAvatar(context, chatRoomMember.getAvatar(), holder.avatar);
if (UserModel.get().getCacheLoginUserInfo() != null && UserModel.get().getCacheLoginUserInfo().isSuperAdmin()) {
OtherExtKt.setVis(holder.operationImg, false, false);
} else {
OtherExtKt.setVis(holder.operationImg,true,false);
}
}
@Override

View File

@@ -57,7 +57,7 @@ public class RoomRankHalfHourListAdapter extends BaseMultiItemQuickAdapter<RoomR
baseViewHolder.setText(R.id.tv_room_rank_title, roomRankHalfHourRankInfo.getRoomTitle());
// 头像
CircleImageView avatarView = baseViewHolder.getView(R.id.iv_room_rank_avatar);
ImageLoadUtils.loadAvatar(mContext, roomRankHalfHourRankInfo.getAvatar(), avatarView, true);
ImageLoadUtils.loadAvatar(roomRankHalfHourRankInfo.getAvatar(),avatarView);
baseViewHolder.setText(R.id.tv_room_rank_id, "ID:" + roomRankHalfHourRankInfo.getErbanNo());
}
}

View File

@@ -15,6 +15,7 @@ import com.chwl.library.utils.ResUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import io.reactivex.Single;
import io.reactivex.functions.Consumer;
@@ -39,15 +40,24 @@ public class UpMicAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
this.upUid = upUid;
List<String> list = new ArrayList<>();
int size;
if (AvRoomDataManager.get().isCpRoom()) {
size = 2;
} else if (AvRoomDataManager.get().isSingleRoom()) {
size = 4;
} else if (AvRoomDataManager.get().isOpenGame()) {
size = 6;
} else {
size = 9;
}
size = AvRoomDataManager.get().getMicSize();
// if (AvRoomDataManager.get().isCpRoom()) {
// size = 2;
// } else if (AvRoomDataManager.get().isSingleRoom()) {
// size = 4;
// } else if (AvRoomDataManager.get().isHomeParty()) {
// size = 9;
// }else if (AvRoomDataManager.get().isPartyRoom()) {
// size = 10;
// } else if (AvRoomDataManager.get().isRevelryRoom()) {
// size = 15;
// }else if (AvRoomDataManager.get().is19Room()) {
// size = 19;
// } else if (AvRoomDataManager.get().is20Room()) {
// size = 20;
// } else {
// size = 9;
// }
for (int i = 0; i < size; i++) {
list.add("");
}
@@ -62,26 +72,33 @@ public class UpMicAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
if (roomQueueInfo == null) return;
ImageView imageView = helper.getView(R.id.iv_mic);
//todo do 19麦房间时 老板麦位特殊特殊图标 待更换
//麦上没人,且不是离开模式房主位,相亲模式的管理才能上房主位
if (roomQueueInfo.mChatRoomMember == null &&
(!AvRoomDataManager.get().isLeaveMode() || position != 0) &&
(!AvRoomDataManager.get().isDatingMode() || AvRoomDataManager.get().isManager(String.valueOf(upUid)) || position != 0)) {
imageView.setImageResource(position == 0 ? R.drawable.icon_up_mic_true_preside : R.drawable.icon_up_mic_ture);
if (roomQueueInfo.mChatRoomMember == null
&& (!AvRoomDataManager.get().isLeaveMode() || position != 0)
&& (!AvRoomDataManager.get().isDatingMode() || AvRoomDataManager.get().isManager(String.valueOf(upUid)) || position != 0)) {
imageView.setImageResource((position == AvRoomDataManager.ITEM_POS_19_ROOM_BOSS && AvRoomDataManager.get().is19Room()) ? R.drawable.icon_room_up_micro_king : R.drawable.icon_up_mic_ture);
helper.itemView.setClickable(true);
helper.itemView.setOnClickListener(v -> Single.just(position).subscribe(consumer));
} else {
imageView.setImageResource(position == 0 ? R.drawable.icon_up_mic_false_preside : R.drawable.icon_up_mic_false);
imageView.setImageResource(R.drawable.icon_up_mic_false);
helper.itemView.setClickable(false);
}
TextView textView = helper.getView(R.id.tv_pos);
if (position == 0) {
textView.setText(AvRoomDataManager.get().isDatingMode() ? ResUtil.getString(R.string.avroom_adapter_upmicadapter_01) : ResUtil.getString(R.string.avroom_adapter_upmicadapter_02));
if (AvRoomDataManager.get().isHomeParty()) {
textView.setText(ResUtil.getString(R.string.avroom_adapter_upmicadapter_02));
} else if (AvRoomDataManager.get().isDatingMode()) {
textView.setText(ResUtil.getString(R.string.avroom_adapter_upmicadapter_01));
} else {
textView.setText(String.format(Locale.US,context.getResources().getString(R.string.which_mic_position), position+1));
}
} else {
if (AvRoomDataManager.get().isDatingMode()) {
textView.setText(position + (Constants.maleIndex.contains(position - 1) ? ResUtil.getString(R.string.avroom_adapter_upmicadapter_03) : ResUtil.getString(R.string.avroom_adapter_upmicadapter_04)));
} else {
textView.setText(String.format(context.getResources().getString(R.string.which_mic_position), position));
textView.setText(String.format(Locale.US,context.getResources().getString(R.string.which_mic_position), position+1));
}
}
}

View File

@@ -0,0 +1,13 @@
package com.chwl.app.avroom.bean;
import java.util.List;
import lombok.Data;
@Data
public class LuckyBagConfig {
public int expireSeconds;
public List<Integer> goldItems;
public List<Integer> numItems;
public List<Integer> timeItems;
}

View File

@@ -0,0 +1,22 @@
package com.chwl.app.avroom.bean;
import lombok.Data;
@Data
public class LuckyBagDetailEntity {
public String avatar;
public String nick;
public long createTime;
public String createTimeStr;
public int num = 1;
public int originalAmount;
public String type;
public String giftName;
public @interface BiliType{
public int SENT = 1;
public int RECEIVED = 2;
}
}

View File

@@ -0,0 +1,28 @@
package com.chwl.app.avroom.bean;
import static com.chwl.app.avroom.bean.LuckyBagEntity.Type.GIFT;
import lombok.Data;
@Data
public class LuckyBagEntity {
public long id;
public long roomUid;
public long userId;
public String avatar;
public String nick;
public int status;
public String type;
public long beginTime; // 倒计时结束时间, 表时可以开抢了, (东八区)
public int countDownSecond; // 倒计时多少秒
public long countDownTime; //接收到倒计时秒数 记录下本地时间
public @interface Type{
public String GIFT = "GIFT";
public String DIAMOND = "DIAMOND";
}
public boolean isGift() {
return type.equals(GIFT);
}
}

View File

@@ -0,0 +1,27 @@
package com.chwl.app.avroom.bean;
import static com.chwl.app.avroom.bean.LuckyBagEntity.Type.GIFT;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class LuckyBagGiftBody {
public long roomUid;
public long uid;
public int countDownSecond;
public String type = GIFT;
// public int num;
public List<LuckyBagGiftItemBody> giftItems;
public void addLuckyBagGift(LuckyBagGiftItemBody index) {
if (giftItems == null) {
giftItems = new ArrayList<>();
}
giftItems.add(index);
}
}

View File

@@ -0,0 +1,9 @@
package com.chwl.app.avroom.bean;
import lombok.Data;
@Data
public class LuckyBagGiftItemBody {
public long giftId;
public int giftNum;
}

View File

@@ -0,0 +1,18 @@
package com.chwl.app.avroom.bean;
import static com.chwl.app.avroom.bean.LuckyBagEntity.Type.DIAMOND;
import lombok.Data;
@Data
public class LuckyBagGoldBody {
public long roomUid;
public long uid;
public String type = DIAMOND;
public int goldNum;
public int num;
public int countDownSecond;
}

View File

@@ -0,0 +1,14 @@
package com.chwl.app.avroom.bean;
import java.util.List;
import lombok.Data;
@Data
public class LuckyBagOpenBiliEntity {
public int amount;
public long createTime;
public String createTimeStr;
public List<LuckyBagOpenGiftEntity> redEnvelopeGiftItemVOs;
public LuckyBagOpenUserBean userVO;
}

View File

@@ -0,0 +1,11 @@
package com.chwl.app.avroom.bean;
import java.util.List;
import lombok.Data;
@Data
public class LuckyBagOpenEntity {
public int currentUserAmount;
public List<LuckyBagOpenGiftEntity> currentUserGifts;
}

View File

@@ -0,0 +1,10 @@
package com.chwl.app.avroom.bean;
import lombok.Data;
@Data
public class LuckyBagOpenGiftBean {
public String giftUrl;
public String giftName;
public int goldPrice;
}

View File

@@ -0,0 +1,9 @@
package com.chwl.app.avroom.bean;
import lombok.Data;
@Data
public class LuckyBagOpenGiftEntity {
public int giftNum;
public LuckyBagOpenGiftBean giftVo;
}

View File

@@ -0,0 +1,10 @@
package com.chwl.app.avroom.bean;
import lombok.Data;
@Data
public class LuckyBagOpenUserBean {
public String avatar;
public String nick;
public long uid;
}

View File

@@ -0,0 +1,13 @@
package com.chwl.app.avroom.bean;
import java.util.List;
import lombok.Data;
@Data
public class RoomLuckyBagInfo {
public List<LuckyBagEntity> redEnvelopeListVoList;
public LuckyBagConfig redEnvelopeV2Config;
}

View File

@@ -41,7 +41,7 @@ public class AttentionHintDialog extends BaseBsDialog {
ivAvatar = findViewById(R.id.iv_avatar);
tvNickname = findViewById(R.id.tv_nickname);
tvAttention = findViewById(R.id.tv_attention);
ImageLoadUtils.laodUsrInfoAvatar(getContext(), AvRoomDataManager.get().avatar, ivAvatar);
ImageLoadUtils.loadAvatar(getContext(), AvRoomDataManager.get().avatar, ivAvatar);
tvNickname.setText(AvRoomDataManager.get().nick);
tvAttention.setOnClickListener(v ->
disposable = PraiseModel.get().praise(AvRoomDataManager.get().getRoomUid(), true)

View File

@@ -0,0 +1,158 @@
package com.chwl.app.avroom.dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import android.view.WindowManager
import androidx.annotation.StyleRes
import androidx.viewbinding.ViewBinding
import com.chwl.app.R
import com.chwl.app.avroom.widget.VDHLayout
import com.chwl.app.ui.widget.dialog.BaseDialog
abstract class BaseRoomNotifyDialog<VB : ViewBinding>(context: Context, theme: Int = 0) : BaseDialog(context, theme) {
protected val handle = Handler(Looper.getMainLooper())
protected lateinit var mBinding: VB
abstract fun createBinding(inflater: LayoutInflater): VB
abstract fun init()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = createBinding(LayoutInflater.from(context))
setContentView(mBinding.root)
setCancelable(true)
setCanceledOnTouchOutside(false)
window?.let {
initWindow(it)
}
init()
if (useAutoDismiss()) {
startAutoDismiss()
}
}
protected open fun startAutoDismiss() {
handle.postDelayed({
dismissDialog()
}, (getStaySecond()*1000).toLong())
}
override fun onDetachedFromWindow() {
handle.removeCallbacksAndMessages(null)
super.onDetachedFromWindow()
}
protected open fun initWindow(window: Window) {
window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
val windowParams = window.attributes
windowParams.width = WindowManager.LayoutParams.MATCH_PARENT
windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT
windowParams.dimAmount = 0.0f
windowParams.gravity = getGravity()
windowParams.x = 0
windowParams.y = getTopOffset()
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)
window.attributes = windowParams
window.setWindowAnimations(getAnimations())
}
protected open fun getGravity():Int{
return Gravity.TOP
}
protected open fun getStaySecond():Float{
return 5f
}
protected open fun getTopOffset():Int{
return 0
}
@StyleRes
protected open fun getAnimations():Int{
return R.style.anim_left
}
override fun setContentView(view: View) {
if (useSlipSlip()) {
val vdhLayout = VDHLayout(context, null)
vdhLayout.addView(view)
vdhLayout.setListener { dismissDialog() }
super.setContentView(vdhLayout)
return
}
super.setContentView(view)
}
override fun setContentView(layoutResID: Int) {
if (useSlipSlip()) {
val vdhLayout = VDHLayout(context, null)
LayoutInflater.from(context).inflate(layoutResID, vdhLayout)
vdhLayout.setListener { dismissDialog() }
super.setContentView(vdhLayout)
return
}
super.setContentView(layoutResID)
}
override fun setContentView(view: View, params: ViewGroup.LayoutParams?) {
if (useSlipSlip()) {
val vdhLayout = VDHLayout(context, null)
vdhLayout.addView(view)
vdhLayout.setListener { dismissDialog() }
super.setContentView(vdhLayout, params)
return
}
super.setContentView(view, params)
}
/**
* 是否启动侧滑,左滑:删除,右滑:回到原位置
*/
protected open fun useSlipSlip(): Boolean {
return true
}
protected open fun useAutoDismiss(): Boolean {
return true
}
var mCallBack : CallBack? = null
interface CallBack{
fun onHide();
}
open fun dismissDialog() {
try {
dismiss()
} catch (e: Exception) {
}
mCallBack?.onHide()
}
open fun clearDialog() {
try {
dismiss()
} catch (e: Exception) {
}
}
open fun showDialog(){
show()
}
}

View File

@@ -33,11 +33,15 @@ class CreateGameRoomDialog : BaseDialogFragment<DialogCreateGameRoomBinding>() {
.build()
gameAdapter.setOnItemClickListener { _, _, position ->
dismissAllowingStateLoss()
OpenRoomHelper.openRoom(
requireActivity() as BaseActivity, RoomInfo.ROOMTYPE_GAME,
gameAdapter.data[position].mgId.toLong()
)
try {
dismissAllowingStateLoss()
OpenRoomHelper.openRoom(
requireActivity() as BaseActivity, RoomInfo.ROOMTYPE_GAME,
gameAdapter.data[position].mgId.toLong()
)
}catch (e:Exception){
}
}
binding?.ivClose?.setOnClickListener {

View File

@@ -20,10 +20,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.chwl.app.R;
import com.chwl.app.avroom.adapter.MicQueueAdapter;
import com.chwl.library.common.util.Utils;
import com.chwl.app.home.helper.LoadPageDataHelper;
import com.chwl.app.ui.widget.dialog.BaseDialog;
import com.chwl.app.ui.widget.recyclerview.decoration.ColorDecoration;
@@ -40,12 +38,14 @@ import com.chwl.core.room.queuing_mic.bean.QueuingMicMemeberInfo;
import com.chwl.core.room.queuing_mic.bean.RespQueuingMicListInfo;
import com.chwl.core.user.bean.BaseInfo;
import com.chwl.core.utils.net.BeanObserver;
import com.chwl.library.common.util.Utils;
import com.chwl.library.net.rxnet.callback.CallBack;
import com.chwl.library.utils.CommonUtils;
import com.chwl.library.utils.JavaUtil;
import com.chwl.library.utils.ListUtils;
import com.chwl.library.utils.ResUtil;
import com.chwl.library.utils.SingleToastUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import java.util.ArrayList;
import java.util.List;
@@ -231,6 +231,11 @@ public class MicQueueDialog extends BaseDialog implements
if (member.getGroupType() == GroupType.FEMALE && Constants.maleIndex.contains(key))
continue;
}
//19麦的情况下 老板麦跳过 , 19麦房间的 boss ViewItemPos是7 , 云信上麦位是6 , 展示时是8号麦
if (AvRoomDataManager.get().is19Room()) {
if (AvRoomDataManager.get().is19RoomBoosMicPos(key)) continue;
}
RoomQueueInfo roomQueueInfo = AvRoomDataManager.get().mMicQueueMemberMap.get(key);
//排麦模式下,选择被锁的坑,即是排麦坑才能上
if (roomQueueInfo != null
@@ -241,8 +246,22 @@ public class MicQueueDialog extends BaseDialog implements
break;
}
}
//房主的坑位key是-1 ,剩下的 8个坑的key从0 - 7
if (micPosition != -1 && micPosition < 8) {
//房主的坑位key是-1 ,剩下的 坑位 按房间类型填
int maxMicPos = 8;
if (AvRoomDataManager.get().isPartyRoom()){
maxMicPos = 10;
}else if (AvRoomDataManager.get().isRevelryRoom()){
maxMicPos = 15;
}else if (AvRoomDataManager.get().is19Room()){
maxMicPos = 19;
}else if (AvRoomDataManager.get().is20Room()){
maxMicPos = 20;
}
if (micPosition != -1 && micPosition < maxMicPos) {
//跳过 19 麦的 老板麦
if (AvRoomDataManager.get().is19Room() && AvRoomDataManager.get().is19RoomBoosMicPos(micPosition)) return;
if (itemPos < adapter.getItemCount()) {
dataList.remove(itemPos);
adapter.notifyDataSetChanged();

View File

@@ -0,0 +1,155 @@
package com.chwl.app.avroom.dialog
import android.view.Gravity
import android.view.WindowManager
import com.chwl.app.R
import com.chwl.app.base.BaseDialogFragment
import com.chwl.app.common.widget.dialog.DialogManager
import com.chwl.app.databinding.DialogRoomBgPreviewBinding
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.core.bean.response.ServiceResult
import com.chwl.core.file.FileModel
import com.chwl.core.gift.bean.RoomBgInfoItem
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.utils.net.RxHelper
import com.chwl.library.common.util.isVerify
import com.chwl.library.net.rxnet.RxNet
import com.example.lib_utils.ktx.getString
import com.google.gson.JsonElement
import com.hjq.toast.ToastUtils
import io.reactivex.Single
import retrofit2.http.POST
import retrofit2.http.Query
import java.io.File
class RoomBgPreviewDialog : BaseDialogFragment<DialogRoomBgPreviewBinding>() {
override var width = WindowManager.LayoutParams.MATCH_PARENT
override var height = WindowManager.LayoutParams.MATCH_PARENT
override var dimAmount = 0.3f
override var gravity = Gravity.BOTTOM
var isBuy = false
var mFile : File?=null
var mRoomBgInfoItem : RoomBgInfoItem?=null
var mDialog : DialogManager?=null
var mCallBack : CallBack?=null
override fun init() {
mDialog = DialogManager(requireActivity())
binding.btnBack.setOnClickListener {
dismiss()
}
binding.close.setOnClickListener {
dismiss()
}
mRoomBgInfoItem?.let { data->
binding.btnConfirm.setOnClickListener {
if (isBuy) {
buyBg()
} else {
mFile?.let { it1 -> upLoadImage(it1) }
}
}
if (isBuy) {
binding.bg.loops
binding.bg.loadUrl(data.url)
binding.btnConfirm.text = R.string.buy.getString()
binding.hint.text = R.string.Purchases_hint.getString()
} else {
binding.btnConfirm.text = R.string.layout_activity_modify_pwd_07.getString()
binding.hint.text = R.string.Purchases_hint2.getString()
ImageLoadUtils.loadImage(context,mFile,binding.bg)
}
binding.price.text = R.string.s_sDays.getString(data.goldPrice,(data.buyHour/24).toInt())
}
}
private fun buyBg() {
mRoomBgInfoItem?.let { data->
postBuy(data.id)
.compose(bindToLifecycle())
.doOnSuccess {
ToastUtils.show(R.string.doSuccess)
mCallBack?.onSuccess()
dismiss()
}
.doOnError {
it?.message?.let { msg->
ToastUtils.show(msg)
}
dismiss()
}
.subscribe()
}
}
private fun upLoadImage(file: File) {
mDialog?.showProgressDialog(requireActivity())
FileModel.get()
.uploadFile(file.path)
.compose<String>(bindToLifecycle<String>())
.doOnSuccess {
if (it.isVerify()) {
postCustom(it)
.compose(bindToLifecycle())
.doOnSuccess {
ToastUtils.show(R.string.doSuccess)
mCallBack?.onSuccess()
dismiss()
}
.doOnError { er->
er?.message?.let { msg ->
ToastUtils.show(msg)
}
dismiss()
}
.subscribe()
}
mDialog?.dismissDialog()
}
.doOnError {
it?.message?.let { msg->
ToastUtils.show(msg)
}
mDialog?.dismissDialog()
}
.subscribe()
}
private fun postCustom(url: String): Single<String> {
return api.postCustom(AvRoomDataManager.get().roomUid,url)
.compose(RxHelper.handleIgnoreData())
.compose(RxHelper.handleSchedulers())
}
private fun postBuy(id: Long): Single<String> {
return api.postBuy(AvRoomDataManager.get().roomUid,id)
.compose(RxHelper.handleIgnoreData())
.compose(RxHelper.handleSchedulers())
}
private val api: Api = RxNet.create(Api::class.java);
interface Api {
@POST("/room/background/custom")
fun postCustom(@Query("roomUid") roomUid: Long,@Query("url") url: String): Single<ServiceResult<JsonElement>>
@POST("/room/background/buy")
fun postBuy(@Query("roomUid") roomUid: Long,@Query("id") id: Long): Single<ServiceResult<JsonElement>>
}
public interface CallBack{
fun onSuccess()
}
}

View File

@@ -0,0 +1,541 @@
package com.chwl.app.avroom.dialog
import android.app.Activity.RESULT_OK
import android.content.Intent
import android.graphics.Color
import android.view.Gravity
import android.view.WindowManager
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chwl.app.R
import com.chwl.app.base.BaseDialogFragment
import com.chwl.app.base.PhotoPickActivity
import com.chwl.app.bindadapter.BaseBindingAdapter
import com.chwl.app.bindadapter.BaseBindingViewHolder
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.common.widget.dialog.DialogManager
import com.chwl.app.databinding.DialogRoomBgSetBinding
import com.chwl.app.databinding.ItemRoomBgSetBinding
import com.chwl.core.bean.response.ServiceResult
import com.chwl.core.gift.bean.RoomBgInfo
import com.chwl.core.gift.bean.RoomBgInfoItem
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.utils.myutil.MyUriUtils
import com.chwl.core.utils.net.RxHelper
import com.chwl.library.common.util.ClickUtils.click
import com.chwl.library.common.util.setVis
import com.chwl.library.net.rxnet.RxNet
import com.example.lib_utils.ktx.dp
import com.example.lib_utils.ktx.getColor
import com.example.lib_utils.ktx.getDimension
import com.example.lib_utils.ktx.getString
import com.google.gson.JsonElement
import com.hjq.toast.ToastUtils
import io.reactivex.Single
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Query
import java.io.File
class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
override var width = WindowManager.LayoutParams.MATCH_PARENT
override var height = R.dimen.dp_323.getDimension().toInt()
override var dimAmount = 0f
override var gravity = Gravity.BOTTOM
lateinit var mAdapter: RoomBgAdapter
private var mDataFree = mutableListOf<RoomBgInfoItem>()
private var mDataPay = mutableListOf<RoomBgInfoItem>()
private var mDataCustom = mutableListOf<RoomBgInfoItem>()
private var mCustomGoldPrice = 0
private var mCustomHour = 0
private var mSelectType = RoomBgInfo.Type.T_FREE
override fun init() {
mAdapter = RoomBgAdapter()
mAdapter.setNewData(mutableListOf())
mAdapter.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, R.string.empty_data.getString()))
binding.rvList.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
binding.rvList.adapter = mAdapter
mAdapter.setOnItemChildClickListener { adapter, view, position ->
val data = mAdapter.data.getOrNull(position)
when (view.id) {
R.id.statusPlay, R.id.statusBuy -> {
data?.let {
if (it.type == RoomBgInfo.Type.T_CUSTOM) {
if (it.status != RoomBgInfo.Status.S_REJECT && it.status != RoomBgInfo.Status.S_REVIEW) {
showPreViewDialog(null, data, true)
}
} else {
showPreViewDialog(null, data, true)
}
}
}
R.id.statusDel -> {
data?.let {
del(data)
}
}
R.id.bg -> {
data?.let {
select(data)
}
}
else -> {}
}
}
binding.btnFree.click {
setViewSelect(RoomBgInfo.Type.T_FREE)
}
binding.btnPay.click {
setViewSelect(RoomBgInfo.Type.T_PAY)
}
binding.btnCustom.click {
setViewSelect(RoomBgInfo.Type.T_CUSTOM)
}
binding.btnCreate.click {
PhotoPickActivity.startImg(requireActivity())
}
binding.btnMore.click {
val dialogManager = DialogManager(context)
dialogManager.showOkCancelDialog(R.string.tip_tips.getString(),R.string.Purchases_hint_info.getString(),R.string.ok.getString(),null,true,null)
val window = dialogManager?.dialog?.window
val tip = window?.findViewById<TextView>(R.id.message)
tip?.gravity = Gravity.START
}
getData()
}
private fun getData() {
getBoomInfo(AvRoomDataManager.get().roomUid)
.compose(bindToLifecycle())
.doOnSuccess { data ->
if (data != null) {
mCustomHour = data.customHour
mCustomGoldPrice = data.customGoldPrice
mDataFree.clear()
mDataPay.clear()
mDataCustom.clear()
data.itemList.let {
val map = it.groupBy { it.type }
if (map.containsKey(RoomBgInfo.Type.T_FREE)){
mDataFree = map[RoomBgInfo.Type.T_FREE] as MutableList<RoomBgInfoItem>
}
if (map.containsKey(RoomBgInfo.Type.T_PAY)) {
val newData = mutableListOf<RoomBgInfoItem>()
val pays = map[RoomBgInfo.Type.T_PAY] as MutableList<RoomBgInfoItem>
val groupBy = pays.groupBy { it.status }
if (groupBy.containsKey(RoomBgInfo.Status.S_SUCCESS)) {
val paySuccess = groupBy[RoomBgInfo.Status.S_SUCCESS] as MutableList<RoomBgInfoItem>
paySuccess.sortByDescending { pay-> pay.remainHour }
newData.addAll(paySuccess)
}
if (groupBy.containsKey(RoomBgInfo.Status.S_EXPIRED)) {
val paySuccess = groupBy[RoomBgInfo.Status.S_EXPIRED] as MutableList<RoomBgInfoItem>
newData.addAll(paySuccess)
}
if (groupBy.containsKey(RoomBgInfo.Status.S_REVIEW)) {
val paySuccess = groupBy[RoomBgInfo.Status.S_REVIEW] as MutableList<RoomBgInfoItem>
newData.addAll(paySuccess)
}
if (groupBy.containsKey(RoomBgInfo.Status.S_REJECT)) {
val paySuccess = groupBy[RoomBgInfo.Status.S_REJECT] as MutableList<RoomBgInfoItem>
newData.addAll(paySuccess)
}
mDataPay = newData
}
if (map.containsKey(RoomBgInfo.Type.T_CUSTOM)) {
val newData = mutableListOf<RoomBgInfoItem>()
val customs = map[RoomBgInfo.Type.T_CUSTOM] as MutableList<RoomBgInfoItem>
val groupBy = customs.groupBy { it.status }
if (groupBy.containsKey(RoomBgInfo.Status.S_SUCCESS)) {
val customsSuccess = groupBy[RoomBgInfo.Status.S_SUCCESS] as MutableList<RoomBgInfoItem>
customsSuccess.sortByDescending { customs-> customs.remainHour }
newData.addAll(customsSuccess)
}
if (groupBy.containsKey(RoomBgInfo.Status.S_EXPIRED)) {
val customsSuccess = groupBy[RoomBgInfo.Status.S_EXPIRED] as MutableList<RoomBgInfoItem>
newData.addAll(customsSuccess)
}
if (groupBy.containsKey(RoomBgInfo.Status.S_REVIEW)) {
val customsSuccess = groupBy[RoomBgInfo.Status.S_REVIEW] as MutableList<RoomBgInfoItem>
newData.addAll(customsSuccess)
}
if (groupBy.containsKey(RoomBgInfo.Status.S_REJECT)) {
val customsSuccess = groupBy[RoomBgInfo.Status.S_REJECT] as MutableList<RoomBgInfoItem>
newData.addAll(customsSuccess)
}
mDataCustom = newData
}
}
setViewSelect(mSelectType)
}
}
.doOnError {
it?.message?.let { msg ->
ToastUtils.show(msg)
}
}
.subscribe()
}
private fun del(data: RoomBgInfoItem) {
if (data.type != RoomBgInfo.Type.T_CUSTOM) return
val dialog = DialogManager(requireActivity())
dialog.showOkCancelDialog(R.string.community_photo_bigphotoactivity_08.getString(),object : DialogManager.AbsOkDialogListener() {
override fun onOk() {
postDel(data.id)
.compose(bindToLifecycle())
.doOnSuccess {
ToastUtils.show(R.string.doSuccess)
getData()
}
.doOnError {
it?.message?.let { msg ->
ToastUtils.show(msg)
}
}
.subscribe()
}
})
}
private fun select(data: RoomBgInfoItem) {
if (data.remainHour != -1 || data.type == RoomBgInfo.Type.T_FREE) {
if (data.status == RoomBgInfo.Status.S_SUCCESS) {
postSelect(data.id)
.compose(bindToLifecycle())
.doOnSuccess {
ToastUtils.show(R.string.doSuccess)
dismiss()
}
.doOnError {
dismiss()
}
.subscribe()
}
} else {
if (data.status == RoomBgInfo.Status.S_REJECT || data.status == RoomBgInfo.Status.S_REVIEW) return // 拒審只能刪除
showPreViewDialog(null, data, true)
}
}
private fun setViewSelect(type: Int) {
binding.btnMore.setVis(false)
binding.btnCreate.setVis(false)
binding.btnFree.setTextColor(if (type == RoomBgInfo.Type.T_FREE) R.color.white.getColor() else R.color.white_tran_60.getColor())
binding.btnPay.setTextColor(if (type == RoomBgInfo.Type.T_PAY) R.color.white.getColor() else R.color.white_tran_60.getColor())
binding.btnCustom.setTextColor(if (type == RoomBgInfo.Type.T_CUSTOM) R.color.white.getColor() else R.color.white_tran_60.getColor())
val text = mAdapter.emptyView?.findViewById<TextView>(R.id.tv_hint)
text?.text = R.string.empty_data.getString()
mSelectType = type
when (type) {
RoomBgInfo.Type.T_FREE -> {
mAdapter.setNewData(mDataFree)
}
RoomBgInfo.Type.T_PAY -> {
mAdapter.setNewData(mDataPay)
}
RoomBgInfo.Type.T_CUSTOM -> {
mAdapter.setNewData(mDataCustom)
text?.text = R.string.empty_customize_bg.getString()
binding.btnMore.setVis(true)
binding.btnCreate.setVis(true)
}
}
}
@Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == RESULT_OK) {
if (requestCode == PhotoPickActivity.PICK_ACT_RESULT) {
val uri = data?.data
if (uri != null) {
if (MyUriUtils.isGif(requireActivity(), uri)) {
ToastUtils.show(R.string.error_file_type)
return
}
val file = MyUriUtils.copyFile(requireActivity(), uri)
if (file != null) {
showPreViewDialog(file, RoomBgInfoItem().apply {
goldPrice = mCustomGoldPrice
buyHour = mCustomHour
}, false)
} else {
ToastUtils.show(R.string.exception_try_again)
}
}
}
}
}
private fun showPreViewDialog(file: File?, data:RoomBgInfoItem, buy: Boolean) {
context?.let {
RoomBgPreviewDialog().apply {
mFile = file
mRoomBgInfoItem = data
isBuy = buy
mCallBack = object : RoomBgPreviewDialog.CallBack {
override fun onSuccess() {
getData()
}
}
}.show(it)
}
}
class RoomBgAdapter() : BaseBindingAdapter<ItemRoomBgSetBinding, RoomBgInfoItem>() {
override fun convert(
helper: BaseBindingViewHolder<ItemRoomBgSetBinding>,
data: RoomBgInfoItem
) {
val binding = helper.binding
defViewStatus(binding)
data?.let { data ->
binding.bg.loadUrl(data.url ?: "")
binding.select.setVis(data.isCur)
binding.statusPlay.setVis(data.url?.endsWith(".svga") == true)
binding.statusGif.setVis(data.url?.endsWith(".svga") == true)
if (data.type == RoomBgInfo.Type.T_FREE) {
val bindingAdapterPosition = helper.bindingAdapterPosition
if (bindingAdapterPosition == 0) {
binding.statusLimit.text = R.string.Original.getString()
binding.statusLimit.changeSoildColor(R.color.black_transparent_50.getColor())
}
binding.statusLimit.setVis(bindingAdapterPosition == 0)
} else if (data.type == RoomBgInfo.Type.T_PAY) {
//有时长显示 左上角剩余时间
binding.statusLimit.setVis(data.remainHour != -1)
binding.statusLimit.text = getTimeText(data.remainHour)
binding.statusLimit.changeSoildColor(R.color.black_transparent_50.getColor())
binding.price.text = getPriceText(data.goldPrice,data.buyHour)
binding.price.setVis(true)
binding.statusBuy.setVis(true)
if (data.remainHour != -1) { //有剩余时长是 renew
binding.statusBuy.text = R.string.Renew.getString()
binding.statusBuy.setTextColor(R.color.white.getColor())
binding.statusBuy.setGradientDrawable(
Color.parseColor("#373639"),
-1,
Color.parseColor("#373639"),
-1,
-1f
)
binding.statusBuy.changeStrikeColor(R.color.white.getColor(), 1.dp)
} else { // 没有是buy
binding.statusBuy.text = R.string.buy.getString()
binding.statusBuy.setTextColor(R.color.white.getColor())
binding.statusBuy.setGradientDrawable(
Color.parseColor("#E29030"),
-1,
Color.parseColor("#FCC074"),
-1,
-1f
)
binding.statusBuy.changeStrikeColor(R.color.transparent.getColor(), 0)
}
} else if (data.type == RoomBgInfo.Type.T_CUSTOM) {
binding.statusLimit.setVis(true)
if (data.status == RoomBgInfo.Status.S_EXPIRED) { //过期 就展示 左上角 过期图标
binding.statusLimit.text = R.string.Expired.getString()
binding.statusLimit.changeSoildColor(R.color.color_696969.getColor())
} else {
if (data.remainHour != -1) { //非过期,有时长就展示 没有就隐藏
binding.statusLimit.text = getTimeText(data.remainHour)
binding.statusLimit.changeSoildColor(R.color.black_transparent_50.getColor())
} else {
binding.statusLimit.setVis(false)
}
}
binding.statusDel.setVis(data.status != RoomBgInfo.Status.S_REVIEW)
binding.price.text = getPriceText(data.goldPrice,data.buyHour)
binding.price.setVis(true)
binding.statusBuy.setVis(true)
if (data.status == RoomBgInfo.Status.S_REVIEW) { // 审核中
binding.statusBuy.text = R.string.in_review.getString()
binding.statusBuy.setTextColor(R.color.color_ff9741.getColor())
binding.statusBuy.setGradientDrawable(
Color.parseColor("#00000000"),
-1,
Color.parseColor("#00000000"),
-1,
-1f
)
binding.statusBuy.changeStrikeColor(R.color.color_ff9741.getColor(), 1.dp)
} else if (data.status == RoomBgInfo.Status.S_EXPIRED || data.status == RoomBgInfo.Status.S_SUCCESS) { //过期和通过审核 显示 renew
binding.statusBuy.text = R.string.Renew.getString()
binding.statusBuy.setTextColor(R.color.white.getColor())
binding.statusBuy.setGradientDrawable(
Color.parseColor("#00000000"),
-1,
Color.parseColor("#00000000"),
-1,
-1f
)
binding.statusBuy.changeStrikeColor(R.color.white.getColor(), 1.dp)
} else if (data.status == RoomBgInfo.Status.S_REJECT) { //不过审
binding.statusBuy.text = R.string.Reject.getString()
binding.statusBuy.setTextColor(R.color.color_ff5656.getColor())
binding.statusBuy.setGradientDrawable(
Color.parseColor("#00000000"),
-1,
Color.parseColor("#00000000"),
-1,
-1f
)
binding.statusBuy.changeStrikeColor(R.color.color_ff5656.getColor(), 1.dp)
}
}
}
helper.addOnClickListener(R.id.statusPlay)
helper.addOnClickListener(R.id.statusBuy)
helper.addOnClickListener(R.id.statusDel)
helper.addOnClickListener(R.id.bg)
}
private fun defViewStatus(binding: ItemRoomBgSetBinding) {
binding.statusLimit.isVisible = false
binding.statusGif.isVisible = false
binding.statusPlay.isVisible = false
binding.statusDel.isVisible = false
binding.price.isVisible = false
binding.statusBuy.isVisible = false
}
private fun getTimeText( hour:Int): String {
var text = ""
if (hour >= 24) {
text = R.string.sDays.getString((hour / 24).toInt())
} else {
text = R.string.unDay.getString()
}
return text
}
private fun getPriceText( price :Int,hour:Int): String {
return R.string.s_sDays.getString(price,(hour / 24).toInt())
}
}
private fun getBoomInfo(roomUid: Long): Single<RoomBgInfo> {
return api.getBoomInfo(roomUid)
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchedulers())
}
private fun postDel(id: Long): Single<String> {
return api.postDel(AvRoomDataManager.get().roomUid, id)
.compose(RxHelper.handleIgnoreData())
.compose(RxHelper.handleSchedulers())
}
private fun postSelect(id: Long): Single<String> {
return api.postSelect(AvRoomDataManager.get().roomUid, id)
.compose(RxHelper.handleIgnoreData())
.compose(RxHelper.handleSchedulers())
}
private val api: Api = RxNet.create(Api::class.java);
interface Api {
@GET("/room/background/list")
fun getBoomInfo(@Query("roomUid") roomUid: Long): Single<ServiceResult<RoomBgInfo>>
@POST("/room/background/del")
fun postDel(
@Query("roomUid") roomUid: Long,
@Query("id") id: Long
): Single<ServiceResult<JsonElement>>
@POST("/room/background/select")
fun postSelect(
@Query("roomUid") roomUid: Long,
@Query("id") id: Long
): Single<ServiceResult<JsonElement>>
}
}

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