Compare commits

..

392 Commits

Author SHA1 Message Date
Max
f4f7361184 fix:GitModel初始化加载礼物接口 补加登录状态判断 2024-04-03 17:19:20 +08:00
Max
7bd8b4c653 fix:修复动态上传失败后非主线程更新UI问题 2024-04-03 10:29:06 +08:00
Max
beb083c896 feat:支持自定义域名替换 2024-04-02 20:05:09 +08:00
Max
56942bf545 fix:修复动态发布失败时按钮状态未恢复问题 2024-04-02 20:04:39 +08:00
Max
a1891718f5 feat:移除七牛云改用腾讯COS 2024-04-02 20:04:09 +08:00
Max
68723cd47f fix:修复贵族中心空指针隐患 2024-04-02 16:47:31 +08:00
Max
6f49eca7b9 fix:修复贵族google渠道开通接口传参问题
fix:移除开通按钮错误的状态更新
2024-04-01 18:58:10 +08:00
Max
1478973d42 feat:送礼接口调整 2024-04-01 16:20:57 +08:00
Max
688dc3bc3d feat:去掉贵族返利列表的波纹动效 2024-04-01 10:40:17 +08:00
Max
8096ce0ff5 feat:初步完成送礼可刷金币功能(待测试) 2024-04-01 10:19:19 +08:00
Max
f2b083d7a7 feat:完成贵族购买需求 2024-03-29 19:41:50 +08:00
Max
e326dabc13 feat:PK更新值忽略超级幸运礼物 2024-03-25 23:05:11 +08:00
Max
794a24f332 fix:修复通用模版消息解析json问题 2024-03-25 19:00:12 +08:00
Max
3a6ccd0e97 fix:修复房间在线列表-点击神秘人弹出资料卡问题 2024-03-25 15:28:06 +08:00
Max
87da2a9f18 feat:通用飘屏协议号变更(105老版本有崩溃问题) 2024-03-25 14:53:30 +08:00
Max
9d8118e331 fix:修复通用公屏异常(FastJson解析DataClass问题)
feat:增加trycatch避免直接崩溃
2024-03-25 14:52:02 +08:00
Max
ed6e247de7 fix:修复超级幸运礼物-全麦送礼时未屏蔽公屏问题 2024-03-25 09:57:43 +08:00
Max
3864efcc4c feat:完成超级幸运礼物功能 2024-03-21 20:03:26 +08:00
Max
cae5ccce7a fix:修复正式包json解析问题(com.alibaba.fastjson.JSONException: default constructor not found) 2024-03-20 20:52:17 +08:00
Max
6bd857b97d feat:完成通用飘屏对接 2024-03-20 14:20:22 +08:00
Max
502a2f20b9 feat:初步完成房间内的通用模版飘屏(待测试) 2024-03-20 14:20:22 +08:00
Max
74a7ccecfc feat:分享邀请支持动态配置:标题、图片 2024-03-20 14:19:57 +08:00
Max
d4f65da89e feat:分享邀请生成图片UI新调整
feat:新增JS方法->直接保存图片
2024-03-20 14:19:55 +08:00
Max
bbb6a21cb9 feat:初步分享邀请弹窗部分(假数据) 2024-03-20 14:19:54 +08:00
Max
098bf777d7 fix:个播跨房PK-bug处理记录(服务端临时处理) 2024-03-12 21:11:25 +08:00
Max
6f1165dc37 feat:拆分出疯狂动物城相关协议号(为了iOS兼容性) 2024-03-12 11:09:39 +08:00
Max
5c4c4cc284 完成疯狂动物园飘窗功能 2024-03-11 18:48:54 +08:00
Max
6b7adc5950 fix:修复相亲房送礼导致闭麦、结束导致闭麦问题(只是临时补救,具体看注释)
fix:移除BaseRoomFragment中更新麦克风状态的某些判断(isNoProhibitMic),不知道之前为何加这段判断,但这段判断风险较大,某些情况导致麦克风状态一直显示未关闭(去掉后经测试验收,未发现问题)
2024-03-06 20:58:31 +08:00
Max
87b81b7761 fix:修复声网切换音乐导致无限切歌bug 2024-03-05 18:48:40 +08:00
Max
842bf98958 feat:修改版本号 2024-02-26 20:46:15 +08:00
Max
f110a47c0e fix:修复房间banner详情页图标展示错误问题 2024-02-26 17:14:12 +08:00
Max
160e5025b8 fix:修复首页没有更多Tab时默认第一个Tab不能正常初始化问题 2024-02-23 19:51:01 +08:00
Max
9ec8385544 fix:调整滚动条配置方式(发现部分手机无效,这样改后貌似可以) 2024-02-23 18:47:27 +08:00
Max
13106a62e4 fix:修复房间玩法资源位样式问题(滚动条| 背景色) 2024-02-23 16:35:43 +08:00
Max
7a677c96cd fix:修复首页Tab页无数据的提示文案 2024-02-23 15:51:02 +08:00
Max
7093cfa7f3 fix:修复首页Tab页列表分页传参导致bug 2024-02-23 14:38:47 +08:00
Max
3747c10dc1 feat:完成预留活动(模版消息)公屏 2024-02-23 14:36:51 +08:00
Max
d9e3c32f1b feat:完成首页动态Tab功能 2024-02-22 14:17:41 +08:00
Max
9891c6f9d0 fix:优化房间玩法资源位展开效果 2024-02-21 16:43:22 +08:00
Max
f721e34139 feat:去掉守护星球公屏昵称前后空格:和其他公屏样式风格保持一致 2024-02-21 15:53:41 +08:00
Max
069eb3e89c feat:公会主播收入页面增加直播时长信息展示 2024-02-21 15:52:30 +08:00
Max
8ae154cf09 feat:守护星球公屏样式微调(昵称前后加空格) 2024-02-21 14:26:44 +08:00
Max
6b90fedb8b Merge branch 'feature/room_icon' into test/2.6.0 2024-02-21 14:06:46 +08:00
Max
cee6060d62 feat:新增守护星球公屏 2024-02-21 14:06:37 +08:00
Max
0acd6f9c88 feat:增加首充成功后房间banner刷新 2024-02-21 09:58:23 +08:00
Max
9a075db5d5 feat:完成房间资源位改版 2024-02-20 19:35:40 +08:00
Max
592dbc78f3 feat:输出包文件名称增加versionCode信息 2024-02-02 18:35:16 +08:00
Max
c3bf0b9451 fix:修复寻爱飘窗高等级重复展示问题(还是忍不住吐槽下:乱七八糟的事件漫天飞) 2024-02-01 18:57:02 +08:00
Max
82ad02f2a7 feat:补充支付结果未登录判断 2024-02-01 15:07:27 +08:00
Max
fb6d784c1d Merge branch 'peko_feature/my_car' into develop 2024-02-01 15:05:00 +08:00
Max
3e4d9654c9 feat:完成mycard支付结果回调处理 2024-02-01 14:54:32 +08:00
Max
923e598344 feat:设置SplashScreen默认背景色(部分手机默认黑色) 2024-01-31 16:49:12 +08:00
Max
5de48352c5 feat:去掉年度盛典icon 2024-01-31 16:48:27 +08:00
Max
5140a70569 Merge branch 'fix/xunai' into develop 2024-01-31 16:09:50 +08:00
Max
0e405f5bda fix:修复夺宝5级礼物未在公屏展示问题 2024-01-31 16:09:45 +08:00
Max
d5be4ace02 fix:修复寻爱飘窗重复展示问题 2024-01-31 14:58:16 +08:00
Max
4475d622fd feat:完成mycard跳转对接 2024-01-31 11:42:09 +08:00
Max
03faea9138 feat:调整新的首页tab图标 2024-01-06 16:03:33 +08:00
Max
37afa710fe feat:调整首页Tab图标资源 2024-01-06 15:51:49 +08:00
Max
6a71670b84 fix:调整普通房/牌照房 主麦位置UI 2024-01-06 15:43:39 +08:00
Max
615089d1e1 feat:删掉测试代码 2024-01-06 11:48:14 +08:00
Max
47b38458df feat:去掉调试日志 2024-01-06 11:42:31 +08:00
Max
91be03ea07 fix:修复个播PK进房未加入对方房间问题 2024-01-05 19:23:38 +08:00
Max
f7a500770a feat:补充加入频道失败的异常提示 2024-01-05 18:50:36 +08:00
Max
d82bb55c4e feat:调整部分图标(年度盛典) 2024-01-05 18:20:06 +08:00
Max
dc1383be70 fix:修复福袋飘窗礼物数量展示问题 2024-01-05 18:04:47 +08:00
Max
368ed2bf70 fix:修复个播PK声音状态异常(多线程不同步导致)
fix:PK数据接口字段适配
fix:修复PK麦克风状态更新不及时问题(接收到PK数据后就更新麦位状态)
2024-01-05 17:54:43 +08:00
Max
d595ed469e Merge branch 'peko_feature/notify' into peko_test/2.5.0 2024-01-05 11:33:49 +08:00
Max
792ad5141c fix:调整福袋飘窗点击跳转区域 2024-01-05 11:20:19 +08:00
Max
de6a4fe524 fix:修复房间内福袋飘窗文本展示问题;增加跳转提示 2024-01-05 11:07:32 +08:00
Max
d0cb9e43b1 Merge branch 'peko_feature/notify' into peko_test/2.5.0 2024-01-04 20:41:01 +08:00
Max
ef8d9b0b6f feat:完成飘窗优先级控制 2024-01-04 20:40:49 +08:00
Max
e781369be1 Merge branch 'peko_feature/notify' into peko_test/2.5.0 2024-01-03 19:41:38 +08:00
Max
3bd13e732a Merge branch 'peko_feature/pk' into peko_test/2.5.0 2024-01-03 19:41:28 +08:00
Max
67babbaebd feat:初步完成声网个播PK功能 2024-01-03 18:27:09 +08:00
Max
c392b20f21 feat:完成全局福袋飘窗点击跳转提示;调整飘窗文案 2024-01-03 11:07:05 +08:00
Max
0a1ae82d42 feat:完成全服福袋通知样式调整 2024-01-02 20:15:35 +08:00
Max
6dc63e1d26 Merge branch 'peko_feature/online' into peko_test/2.5.0 2024-01-02 18:23:19 +08:00
Max
2dcbcf7179 feat:完成铭牌渲染优化 2024-01-02 17:38:17 +08:00
Max
bcd6faf213 feat:调整房间在线列表-房主判断字段,适配隐身进房展示 2024-01-02 16:15:46 +08:00
Max
072c837c99 feat:完成房间内福袋飘窗UI调整 2024-01-02 15:29:26 +08:00
Max
067f97d6be feat:完成房间在线列表优化需求 2024-01-02 11:32:05 +08:00
Max
15b317d5d0 feat:写了接口请求部分,未实现UI等部分;(接口500,下周继续) 2023-12-29 19:46:46 +08:00
Max
16712197e3 feat:完成私聊限制需求(每发消息都请求接口) 2023-12-29 17:02:22 +08:00
Max
24ccadc593 fix:修复个播小时榜点击无效问题 2023-12-19 16:33:40 +08:00
Max
88767208bd 同步hiyoo:调整房间小时榜、音乐、房间榜入口位置 2023-12-19 15:30:56 +08:00
Max
91bb8f7871 fix:修复相亲房布局导致的异常 2023-12-18 10:58:59 +08:00
Max
dedb075c56 fix:补充公会搜索的空判断 2023-12-15 20:18:02 +08:00
Max
1b1f477494 fix:修复公会搜索不出结果问题 2023-12-15 20:17:58 +08:00
Max
9a015aff0b feat:新增个播-人气礼物 2023-12-15 20:17:39 +08:00
Max
9500554550 feat:调整个播默认背景和默认麦位头饰 2023-12-15 20:17:32 +08:00
Max
23e05ccab1 fix:修复选择幸运礼物后被自动重置为选中第一个的问题 2023-12-15 20:17:03 +08:00
Max
0417e53b85 feat:调整客态视角下粉丝团提醒文案 2023-12-15 20:16:52 +08:00
Max
df96cfe5d4 fix:调整加入粉丝团入口UI 2023-12-11 17:00:54 +08:00
Max
213efcba31 fix:修复添加管理员后管理员列表中无法正常展示昵称头像问题 2023-12-11 16:14:04 +08:00
Max
9e36225b77 fix:修复个播小时榜飘窗无法展示问题 2023-12-11 15:22:39 +08:00
Max
da3d72ebff fix:修复升级弹窗偶发异常 2023-12-11 11:47:10 +08:00
Max
fd3dc7cb3c fix:个播在麦时禁止滑动 2023-12-11 11:07:25 +08:00
Max
eebe231a45 Merge branch 'peko_feature/search' into peko_test/2.4.0 2023-12-08 16:01:34 +08:00
Max
276f2002f9 Merge branch 'peko_feature/region' into peko_test/2.4.0 2023-12-08 16:01:30 +08:00
Max
2942e2f0bb feat;完成地区选择器优化(调整地区数据、支持字母索引、有效展示当前地区) 2023-12-08 15:59:59 +08:00
Max
406077b43b fix:修复房间用户详情弹窗边框展示问题 2023-12-07 18:07:45 +08:00
Max
55a8d037e0 feat:完成搜索结果条目信息展示调整(去掉性别,新增等级信息) 2023-12-07 17:10:58 +08:00
Max
ba58b0bd40 feat:刚刚少提交依赖 2023-12-07 16:02:43 +08:00
Max
151b1c37d0 feat:修复RectRoundImageView导致的图片加载问题 2023-12-07 16:01:55 +08:00
Max
4a7af141aa feat:声网RTC配置debug环境KEY 2023-12-07 15:11:28 +08:00
Max
cec6e00e09 feat:同步音萌完成个播PK屏蔽麦功能 2023-12-07 14:50:01 +08:00
Max
bf6ef26eca fix:修复个播粉丝团入口展示问题(进入有密码房间时因请求时机导致未正确加载状态) 2023-12-06 17:45:39 +08:00
Max
07845b5e60 fix:修复断网时被踢,重连后未退房问题 2023-12-06 17:03:55 +08:00
Max
097ead1327 fix:修复公会高管设置入口展示问题 2023-12-06 14:25:52 +08:00
Max
2b45d35d40 feat:升级vasdolly版本 2023-12-06 11:58:31 +08:00
Max
e6f4b40e66 fix:修复粉丝团入口逻辑 2023-12-06 11:10:33 +08:00
Max
c46f19f03f fix:修复pk-某liveData空类型导致异常 2023-12-05 18:59:35 +08:00
Max
37196025cc fix:修复个播房闪退:pk的一个liveData空类型问题 2023-12-05 18:01:44 +08:00
Max
9096a9b57f fix:修复输入密码进入游戏房的房间状态不一致问题 2023-12-04 18:54:11 +08:00
Max
c46c49715c feat:补充日志信息 2023-12-04 17:42:29 +08:00
Max
31b785c511 fix:调整礼物飘窗样式问题 2023-12-04 17:42:14 +08:00
Max
6f01c5ddad fix:修复进入有密码的房间,游戏未加载问题 2023-12-04 17:34:47 +08:00
Max
306f15f7f9 feat:通过时间,简单过滤多次重复401异常处理 2023-12-04 16:58:11 +08:00
Max
0babbedeb9 feat:同步habu完成房间banner资源位展示优化 2023-12-01 16:54:21 +08:00
Max
d09e60d206 feat:同步hubu完成【升级飘窗、加入公会】功能优化 2023-12-01 16:31:06 +08:00
Max
e37796286b feat:同步Habu完成地区隔离功能 2023-12-01 16:10:22 +08:00
Max
bdcfb21e6e Merge branch 'v2.1.1/fix' into v2.2.0/test_old_fix 2023-11-01 18:34:23 +08:00
Max
5c7d2e9645 fix:调整幸运礼物动画播放条件(去掉价值520的条件,恢复luckyGiftSvgaUrl逻辑) 2023-11-01 18:34:15 +08:00
Max
d2f24c4457 Merge branch 'v2.2.0/test' into v2.2.0/test_old_fix 2023-11-01 16:29:11 +08:00
Max
7ec11e0aba Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-11-01 16:28:58 +08:00
Max
f4a9690c1b fix:修复红包组件内的compositeDisposable导致再次激活无法执行任务 2023-11-01 16:20:43 +08:00
Max
0742894540 Merge branch 'v2.2.0/test' into v2.2.0/test_old_fix 2023-11-01 14:59:16 +08:00
Max
d0fe8e892e Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-11-01 14:59:05 +08:00
Max
b9120dca54 feat:调整红包打开按钮动画时长
feat:调整红包入口图标
2023-11-01 14:58:47 +08:00
Max
8ebaddad07 Merge branch 'v2.1.1/fix' into v2.2.0/test_old_fix 2023-11-01 11:34:52 +08:00
Max
b63b4ba07a fix:修复幸运礼物重复动效(去掉本地自己播的一个svga) 2023-11-01 11:34:43 +08:00
Max
a211267517 fix:修复麦位魅力值展示问题(主麦) 2023-11-01 11:22:04 +08:00
Max
d0e88440e3 Merge branch 'v2.1.1/fix' into v2.2.0/test_old_fix 2023-10-31 19:19:32 +08:00
Max
260ed56c99 Merge branch 'v2.2.0/test' into v2.2.0/test_old_fix 2023-10-31 19:19:22 +08:00
Max
505917b70f Merge branch 'v2.2.0/float_gift' into v2.2.0/test 2023-10-31 19:19:05 +08:00
Max
03d013fcba fix:修复合并导致的礼物飘窗未展示房间名称问题 2023-10-31 19:18:57 +08:00
Max
19301bbd84 fix:修复公屏相册条目的等级icon加载模糊问题 2023-10-31 19:07:08 +08:00
Max
694a73931b Merge branch 'v2.1.1/fix' into v2.2.0/test_old_fix 2023-10-31 18:06:49 +08:00
Max
d34929d7c7 fix:修复礼物信令解析时未判空导致的解析中断 2023-10-31 18:06:40 +08:00
Max
73eccecfc9 Merge branch 'v2.2.0/test' into v2.2.0/test_old_fix 2023-10-31 17:26:18 +08:00
Max
eb1546570a Merge branch 'v2.2.0/float_gift' into v2.2.0/test
# Conflicts:
#	app/src/main/res/layout/dialog_gift_all_service_level2.xml
2023-10-31 17:26:06 +08:00
Max
7ba43a51d4 fix:调整礼物飘窗弹窗-去围观位置 2023-10-31 17:25:22 +08:00
Max
bae4660840 Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-10-31 17:19:15 +08:00
Max
b9fd24e0ff fix:红包过期时间动态展示(发布、小秘书)
fix:调整全服红包文案字数限制
2023-10-31 17:19:06 +08:00
Max
4bef25e1e3 Merge branch 'v2.2.0/test' into v2.2.0/test_old_fix 2023-10-31 15:54:47 +08:00
Max
72480daa98 Merge branch 'v2.2.0/float_gift' into v2.2.0/test 2023-10-31 15:54:35 +08:00
Max
1defcb0d28 fix:修复礼物飘窗与其他特效飘窗重叠问题(加顶部间距:之前版本是这么解决的,应该是之前版本没做完善这块需求) 2023-10-31 15:54:26 +08:00
Max
4885a0bdbd Merge branch 'v2.1.1/fix' into v2.2.0/test_old_fix 2023-10-31 15:14:14 +08:00
Max
5900702ca6 fix:修复公屏历史消息未查询相册类型消息问题 2023-10-31 15:14:04 +08:00
Max
9e6928580f Merge branch 'v2.1.1/fix' into v2.2.0/test_old_fix 2023-10-31 11:25:46 +08:00
Max
e644ced1ed fix:去除聊天页-语音&图片时的WRITE_EXTERNAL_STORAGE权限 2023-10-31 11:25:16 +08:00
Max
1667dd3863 Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-10-31 11:11:59 +08:00
Max
c04d3e283b fix:点击红包图标 已领取且领取完时 增加提示并更新入口 2023-10-31 11:10:51 +08:00
Max
2b6d66c31e Merge branch 'v2.2.0/float_gift' into v2.2.0/test 2023-10-31 10:19:48 +08:00
Max
e56bbb5f8f fix:修复非房间礼物 飘窗弹窗 点击跳转未屏蔽问题 2023-10-31 10:17:09 +08:00
Max
7bf7e232d0 Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-10-30 20:11:15 +08:00
Max
d63a441296 feat:去掉房间设置中的-全服红包开关(暂时操作隐藏入口) 2023-10-30 20:08:08 +08:00
Max
e81ec19168 Merge branch 'v2.2.0/float_gift' into v2.2.0/test
# Conflicts:
#	gradle.properties
2023-10-30 20:02:52 +08:00
Max
588b96ec7b fix:跳转提示去房间的忽略提示规则 2023-10-30 20:02:04 +08:00
Max
514abbc314 Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-10-30 19:49:16 +08:00
Max
94d9183952 fix:修复全服红包未展示自定义文案问题 2023-10-30 19:49:09 +08:00
Max
6eedd5cc46 fix:修复切换同类型房间导致的Widget未更新Context问题 2023-10-30 19:30:26 +08:00
Max
087091275f fix:增加领取成功后主动刷新入口图标数据 2023-10-30 17:10:20 +08:00
Max
f54a8ec175 feat:完善发送红包的权限细分
feat:删除红包无用旧代码
2023-10-30 16:49:00 +08:00
Max
fee8f2ceb9 Merge branch 'v2.2.0/red_package' into v2.2.0/test
# Conflicts:
#	app/src/main/res/values/strings.xml
2023-10-30 15:37:59 +08:00
Max
a18a66b496 fix;修复红包失效时的入口更新问题 2023-10-30 15:36:00 +08:00
Max
80e21bee74 fix:修复房间内点击红包跳转到其他房间后没弹出红包问题 2023-10-30 15:16:06 +08:00
Max
e031dd9d02 fix:修复红包内若干bug 2023-10-30 14:45:19 +08:00
Max
19a3b64a32 Merge branch 'v2.2.0/float_gift' into v2.2.0/test
# Conflicts:
#	app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftLevelDialog.kt
#	app/src/main/res/values/strings.xml
2023-10-30 12:45:11 +08:00
Max
34a5571338 feat:完成礼物飘窗跳转提示 2023-10-30 12:35:56 +08:00
Max
5b4eeb80e8 Merge branch 'v2.2.0/red_package' into v2.2.0/test 2023-10-29 23:14:28 +08:00
Max
f7889ace18 feat:完善游戏房、个播房红包展示
feat:完善红包冲突场景
2023-10-29 23:14:20 +08:00
Max
cfc909df42 Merge branch 'v2.2.0/float_gift' into v2.2.0/test
# Conflicts:
#	app/src/main/java/com/yizhuan/erban/ui/widget/dialog/AllServiceGiftLevelDialog.kt
#	app/src/main/res/layout/dialog_gift_all_service_level.xml
#	app/src/main/res/values/colors.xml
#	app/src/main/res/values/strings.xml
2023-10-28 12:56:42 +08:00
Max
ebc989cccf feat:使用动态比例实现飘窗礼物布局(待验证) 2023-10-28 12:25:24 +08:00
Max
5ad1c017c3 feat:完善礼物飘窗文本样式 2023-10-28 11:43:19 +08:00
Max
15a80f5537 feat:初步完成全服飘窗礼物UI优化 2023-10-27 20:06:11 +08:00
Max
38fde6109b Merge branch 'v2.2.0/red_package' into v2.2.0/dev
# Conflicts:
#	gradle.properties
2023-10-27 17:09:46 +08:00
Max
3199114ff6 fix:修复开红包结果页的view隐藏展示问题
fix:修复发红包背景展示问题
2023-10-27 17:06:40 +08:00
Max
57139f1f97 feat:完善全服红包跳转逻辑 2023-10-27 16:32:54 +08:00
Max
c7d7d98873 feat:完善抢红包条件的完成路径跳转
feat:完善抢红包细节
2023-10-27 13:01:05 +08:00
Max
d7da6d4be4 feat:完善抢红包文案和交互 2023-10-27 11:21:13 +08:00
Max
b9a2f03184 feat:完善红包入口逻辑
feat:初步可以领取红包
2023-10-27 02:10:55 +08:00
Max
5ef9be75d2 feat:初步搭建新房间框架
feat:初步搭建红包处理器与组件等(未完成)
2023-10-26 20:17:11 +08:00
Max
cf3ab9ce84 feat:调整发红包部分字段 2023-10-25 18:25:31 +08:00
Max
3ba31c46d8 feat:补充支付订单为空的判断 2023-10-25 17:14:31 +08:00
Max
e8f7eca1af fix:修复google支付回调时导致的空指针异常
fix:完善房间上麦时权限申请的前置状态判断
2023-10-25 16:56:05 +08:00
Max
d93b6fbf60 feat:新增core模块(核心组件模块,慢慢整理重构) 2023-10-25 16:48:32 +08:00
Max
6ec57834fd feat:初步完成发红包接口对接
feat:增加服务器时间字段
2023-10-25 15:17:08 +08:00
Max
c3dab80e71 feat:初步完成房间红包入口组件UI
feat:完善网络调试工具Stetho的配置
2023-10-24 19:06:04 +08:00
Max
60e56beb43 feat:完成打开红包弹窗UI 2023-10-24 15:40:07 +08:00
Max
a0667bdd8d feat:初步完成领红包弹窗UI框架 2023-10-24 14:12:42 +08:00
Max
ba65ad680f feat:完成发红包UI国际化 2023-10-24 10:29:47 +08:00
Max
5163c2dc9d feat:初步完成发红包弹窗UI 2023-10-23 20:15:02 +08:00
wzq
ad5a769f25 清除 Google 内购代码 2023-10-19 18:02:03 +08:00
wzq
be291fa7e1 升级 Google 内购库 2023-10-19 17:22:58 +08:00
wzq
27713e5300 混淆 bean 2023-10-19 15:00:22 +08:00
wzq
80e180f2b8 debug 混淆配置; 升级eventbus 2023-10-19 14:46:11 +08:00
wzq
ba93c9c0fe eventbus 混淆规则更新 2023-10-19 14:26:44 +08:00
wzq
6f9d1d81ad 房间相册 UI问题 2023-10-19 12:02:18 +08:00
wzq
81d0cd819d 房间相册-公屏 修复崩溃及图片不显示 2023-10-19 10:19:51 +08:00
wzq
36897df28b 房间相册-上传 多张图片上传时去除参数中的空格 2023-10-19 10:05:02 +08:00
wzq
6bdfe0426e 房间相册-上传 删除已选照片后, 重新显示 添加按钮 2023-10-18 18:58:21 +08:00
wzq
997b7ee9a3 [Build] debug 打包配置混淆 打印信息 2023-10-18 18:08:37 +08:00
wzq
b885a24b8e [Build] debug 打包配置混淆 2023-10-18 17:40:25 +08:00
wzq
5d2551e04f 房间相册 修复 神奇的手机无法点击图标关闭解锁弹窗 2023-10-18 17:19:11 +08:00
wzq
309e696a07 房间相册 上传图片前 压缩图片 2023-10-18 16:43:56 +08:00
wzq
68c9c6a8cb 房间相册 照片列表分页问题 2023-10-18 16:30:01 +08:00
wzq
448e6800ab 房间相册 公屏消息 UI显示问题 2023-10-18 15:36:49 +08:00
wzq
068ffcbed4 房间相册 公屏消息 解锁区域放大至整个消息区域 2023-10-18 15:08:03 +08:00
wzq
cf7b49b69d 房间相册 UI问题 2023-10-18 14:37:14 +08:00
wzq
09fd7c586a 房间相册 数据展示及交互 2023-10-18 14:35:53 +08:00
wzq
03b77fae08 房间相册 查看大图 2023-10-18 14:23:06 +08:00
wzq
b75ba89d75 房间相册 公屏消息 解锁 2023-10-18 13:14:49 +08:00
wzq
2074039de2 房间相册 解锁 2023-10-17 20:57:02 +08:00
wzq
6b580ad2a6 房间相册 删除图片 2023-10-17 20:05:47 +08:00
wzq
6134962297 房间相册 发送图片至公屏 2023-10-17 19:12:42 +08:00
wzq
ce5cc20ac4 房间相册 列表,上传 数据对接 2023-10-17 18:16:41 +08:00
wzq
bc718f26c6 房间相册 入口 2023-10-17 16:32:42 +08:00
wzq
8f9a5bd565 房间相册 公屏消息UI 2023-10-17 14:08:23 +08:00
wzq
623a721e58 房间相册 选择解锁礼物UI 交互 2023-10-17 10:10:42 +08:00
wzq
a9be418fc3 房间相册 选择解锁礼物UI 2023-10-16 22:39:13 +08:00
wzq
5b781b890c 房间相册 上传照片UI 2023-10-16 20:04:09 +08:00
wzq
4a6892d0c6 房间相册UI 2023-10-13 19:37:38 +08:00
wzq
a6e6992b1a 修复 首页房间item 周榜框 显示重叠 2023-10-13 11:36:38 +08:00
wzq
248e306e85 修复 房间 "精灵夺宝" 抽奖 一直转圈的问题 2023-10-12 19:10:15 +08:00
wzq
bce08e82ca 引入 okdownload 下载库 下载表情. 避免网络请求卡死 2023-10-12 18:39:30 +08:00
wzq
32814780c2 房间 "夺宝精灵" 购买碎片 成功弹窗显示问题 2023-10-12 18:30:04 +08:00
wzq
d0dc4cab49 房间 "夺宝精灵" 精灵兑换 底部显示我拥有的精灵 2023-10-12 17:25:49 +08:00
wzq
80d571d1d1 房间 "夺宝精灵" 精灵分解. 根据不同等级的精灵, 显示不同的提示文案 2023-10-12 16:36:36 +08:00
wzq
b92c97dfb9 房间 "夺宝精灵" 自定义购买弹窗 支持输入数量 2023-10-12 16:01:23 +08:00
wzq
e585899c44 房间 "夺宝精灵" 兑换商店-碎片兑换 图标不正确 2023-10-12 15:15:56 +08:00
wzq
03f28b7be0 房间 "夺宝精灵" 兑换商店-精灵兑换 UI适配 2023-10-12 15:04:07 +08:00
wzq
c7225892f0 房间 公屏输入框 回车键 发送信息 2023-10-12 12:00:55 +08:00
wzq
f8d4601c38 适配 声网 音量回调 2023-10-12 11:51:49 +08:00
wzq
ce4fce319e 房间 "夺宝精灵" 精灵试炼 动画文件更换 2023-10-11 18:34:35 +08:00
wzq
ce4293ec35 房间 "夺宝精灵" 精灵分解 更新碎片 2023-10-11 17:59:09 +08:00
wzq
1c9de5f03a 房间 "夺宝精灵" 兑换记录 移除类型显示 2023-10-11 17:57:48 +08:00
wzq
2734ff1ff2 房间 "夺宝精灵" 精灵试炼记录 区分类型 2023-10-11 17:49:48 +08:00
wzq
c7a28c5ac9 房间 "夺宝精灵" 精灵分解 提示文案 2023-10-11 16:30:06 +08:00
wzq
ae4d327baf 房间 "夺宝精灵" 精灵试炼 传说试炼 底部精灵展示为普通精灵 2023-10-11 16:02:49 +08:00
wzq
9e9eb5d5b7 修复 房间 "夺宝精灵" 召唤精灵 价格不显示 2023-10-11 15:20:10 +08:00
wzq
96b1ad9e4c 修复 房间 "夺宝精灵" 幸运值进度条不正确 2023-10-11 11:56:46 +08:00
wzq
48c527e789 修复 房间 "夺宝精灵" 幸运值无法刷新 2023-10-11 11:38:58 +08:00
wzq
4e0a55ae46 修复 房间 "夺宝精灵" 购买弹窗bug 2023-10-11 10:53:58 +08:00
wzq
c85065d86c 房间 "夺宝精灵" 新增 自定义购买数量碎片弹窗 2023-10-10 17:54:47 +08:00
wzq
c1371fab10 房间寻爱活动 购买限制数量200调整至99999 2023-10-10 17:03:11 +08:00
wzq
6717f9aa69 房间 送礼接口 失败后 显示toast 2023-10-09 16:09:16 +08:00
wzq
61cafd8c8c okhttp 网络配置 2023-10-09 14:21:36 +08:00
wzq
e4f0853d3e 升级 Facebook SDK 2023-10-09 11:48:53 +08:00
wzq
46a2985a49 首页 滑动折叠效果 2023-10-08 18:15:17 +08:00
wzq
b2f9f07ded 首页 UI问题 2023-10-08 17:41:27 +08:00
wzq
5023d9a250 测试包 关于页面 点击logo 可切换 正式/测试环境 2023-10-08 17:40:55 +08:00
wzq
29957775e0 Fixed NPE. 2023-10-07 16:36:52 +08:00
wzq
5f73c46868 升级 realm 数据库 2023-10-07 16:09:55 +08:00
wzq
656eea5ebc fixed NPE. 2023-10-07 15:36:05 +08:00
wzq
f9b8c20d85 优化打包, 使用 splits abi 对每种CPU架构打独立的apk; 腾讯TRTC SDK优化集成方式, 并优化参数 2023-10-07 15:01:09 +08:00
wzq
2d7b55ad0d 修复 星座 计算不正确 2023-10-07 15:00:30 +08:00
wzq
91350218d6 首页UI 适配 2023-10-07 15:00:30 +08:00
wzq
ca56ee0877 修复 寻爱 票据数量问题 2023-09-27 23:32:16 +08:00
wzq
23214de384 修复 寻爱 票据数量问题 2023-09-27 22:46:57 +08:00
wzq
da45a64af9 fixed "default constructor not found." 2023-09-27 22:14:43 +08:00
wzq
e236ef2aff fixed "default constructor not found." 2023-09-27 22:08:41 +08:00
wzq
7de533bf3f 混淆问题 2023-09-27 21:33:21 +08:00
wzq
e23363c736 混淆问题 2023-09-27 21:30:55 +08:00
wzq
4395951973 首页 跟随进房; UI问题 2023-09-27 20:52:51 +08:00
wzq
e02020577d 首页 ViewPager2 滑动冲突 2023-09-27 20:31:55 +08:00
wzq
61306e833a 充值页 UI适配 2023-09-27 20:04:31 +08:00
wzq
49ba0a2701 房间 关闭PK模式 不主动关麦 2023-09-27 19:55:26 +08:00
wzq
2e32184248 房间 寻爱 动态飘屏 进退场动画 2023-09-27 18:57:16 +08:00
wzq
bab64db25c 房间 合并 寻爱 动态/静态 飘屏 队列 2023-09-27 18:43:28 +08:00
wzq
612502153c 房间 PK模式 默认不闭麦 2023-09-27 18:01:00 +08:00
wzq
9cdb0eef53 性别图标 更换成 性别+年龄 2023-09-27 16:00:32 +08:00
wzq
6528ac407a 个人资料页 UI调整 2023-09-27 14:17:58 +08:00
wzq
94d18e6035 礼物面板 item 礼物标签 右对齐 2023-09-27 12:07:27 +08:00
wzq
08abf47890 调整 房间小游戏安全区域 2023-09-27 12:02:24 +08:00
wzq
cb89eccf23 显示 消息页 "发现萌新" 入口, 房间PK入口 2023-09-27 11:26:08 +08:00
wzq
b57622ad42 显示 消息页 "发现萌新" 入口, 房间PK入口 2023-09-27 10:35:41 +08:00
wzq
fd71af897f 修复 塔罗高级 未添加公屏通知 2023-09-26 19:34:40 +08:00
wzq
1998258bda 塔罗活动静态飘屏 只在本房间触发 2023-09-26 19:03:07 +08:00
wzq
5cce2cb68c 首页tab item 新增声音卡 2023-09-26 18:20:00 +08:00
wzq
08230c55a3 首页 UI字体调节 2023-09-26 14:38:07 +08:00
wzq
f51dec1101 Merge branch '1.10.6' into develop
# Conflicts:
#	core/src/diff_src_erban/java/com/yizhuan/xchat_android_constants/XChatConstants.java
#	gradle.properties
2023-09-26 14:27:54 +08:00
wzq
1dd5d64a09 修复 寻爱bug 2023-09-26 11:34:05 +08:00
wzq
30d793d794 寻爱飘屏 UI优化 2023-09-25 19:54:42 +08:00
wzq
d2fb38f094 更换声网key 2023-09-25 19:38:09 +08:00
wzq
01958edd06 修复 "寻爱"活动 自定义购买爱心数量 未更新金额 2023-09-25 17:20:27 +08:00
wzq
5a2903d14d 礼物弹窗 标签优化 2023-09-25 17:12:45 +08:00
wzq
1bade9dd00 小时榜飘屏 更换背景图 2023-09-25 16:59:29 +08:00
wzq
8d7ab335e2 新增 H5 跳转 话题页 2023-09-25 16:37:48 +08:00
wzq
8bf25ad378 根据接口返回选择 跳转 原生/H5 充值页 2023-09-25 16:23:01 +08:00
wzq
6e11cfb30d 新增 充值页跳转私聊客服充值 2023-09-25 16:00:50 +08:00
wzq
0c2fd28f15 移除 网络代理 2023-09-22 19:07:04 +08:00
wzq
a2e0e9df53 升级 声网SDK 4.2.2 2023-09-22 18:03:05 +08:00
wzq
9e3ebfa541 升级 声网SDK 4.2.2 2023-09-22 17:27:04 +08:00
wzq
94a0575909 修复 "寻爱之旅"活动页面 UI 以及 余额不足未弹出充值弹窗 2023-09-22 10:20:35 +08:00
wzq
3d161b94e4 修复 "寻爱之旅"活动页面 购买数量问题 2023-09-21 17:50:21 +08:00
wzq
08d9534095 新增 首页房间item PK动画 2023-09-21 16:20:59 +08:00
wzq
ff1cd57d98 修复 首页"优质陪伴"tab UI 问题 2023-09-21 16:02:08 +08:00
wzq
2a57ad3145 增加首页顶部与状态栏之间的间距 2023-09-21 14:17:55 +08:00
wzq
92f2db36ae 修改 首页tab indicator 样式 2023-09-21 12:53:53 +08:00
wushaocheng
362c75f93c [Modify]小时榜和周榜逻辑修改 2023-09-20 18:34:30 +08:00
wzq
b9c3bbdbec 修复 首页tab切换导致SVGA停止播放 2023-09-20 17:56:55 +08:00
wushaocheng
0a24dc66e6 [Modify]更新版本号和寻爱逻辑修改 2023-09-20 17:17:50 +08:00
wushaocheng
ca62822bfb [Modify]首页和夺宝修改 2023-09-20 16:07:17 +08:00
wzq
5db5afa5ed 房间麦位魅力值UI适配 2023-09-20 16:03:45 +08:00
wzq
edad692309 修复 全服飘窗 2023-09-20 14:55:52 +08:00
wzq
23a34434a0 Merge remote-tracking branch 'origin/develop' into develop 2023-09-19 17:20:56 +08:00
wzq
8ad38583ff 新增 充值页 Banner, 个人信息页 "官方代充" 标识 2023-09-19 17:20:08 +08:00
wushaocheng
391fae9006 [Modify]安卓用户头像遮罩去掉 2023-09-19 16:02:23 +08:00
wzq
9854e91fe8 礼物弹窗 礼物标签图片 替换 2023-09-19 15:19:03 +08:00
wzq
d587f1b43d 寻爱飘屏 SVGA 文件替换 2023-09-19 15:01:18 +08:00
wzq
595d3a767a 登录页 默认勾选协议 2023-09-19 14:14:43 +08:00
wzq
4d13cf5e9c 星座 优化 2023-09-19 11:59:01 +08:00
wzq
62ce160dfa 性别图标 替换成 性别+年龄 2023-09-19 11:17:26 +08:00
wzq
c631c1d3a8 新增 H5活动通用飘屏 2023-09-18 15:32:59 +08:00
wushaocheng
27420aa51a [Modify]修改房间背景 2023-09-18 14:12:45 +08:00
wushaocheng
12c5344d72 [Modify]安卓用户头像遮罩去掉 2023-09-18 11:57:33 +08:00
wushaocheng
a716136090 [Modify]安卓13适配和谷歌充值页面加loading 2023-09-18 11:49:27 +08:00
wushaocheng
f860c96887 [Modify]安卓13适配和谷歌充值页面加loading 2023-09-18 11:49:23 +08:00
wushaocheng
873ecf1d2b [Modify]安卓13适配和谷歌充值页面加loading 2023-09-18 11:45:51 +08:00
wushaocheng
957b64476f [Modify]安卓13适配和谷歌充值页面加loading 2023-09-18 11:43:25 +08:00
wzq
306e0a99a0 [Modify]幸运塔罗新增公屏通知, 飘屏 2023-09-15 18:31:57 +08:00
wushaocheng
bfd619e8b5 [Modify]寻爱之旅完善 2023-09-15 17:44:07 +08:00
wushaocheng
4c0184c80b [Modify]寻爱之旅完善 2023-09-15 17:14:02 +08:00
wushaocheng
aeb47da0ee [Modify]首页逻辑调整 2023-09-14 15:56:38 +08:00
wushaocheng
d99ef80d2e [Modify]夺宝精灵和尋愛邏輯修改 2023-09-13 20:46:29 +08:00
wushaocheng
77dcc9d117 [Modify]夺宝精灵逻辑修改 2023-09-13 15:22:10 +08:00
wushaocheng
a7f17276c5 [Modify]夺宝精灵的精灵分解和精灵试炼功能完善 2023-09-12 18:59:35 +08:00
wushaocheng
63f1e02c6f [Modify]夺宝精灵修改 2023-09-12 10:03:24 +08:00
wushaocheng
5c6657c538 [Modify]增加fir渠道 2023-09-08 16:30:12 +08:00
wushaocheng
7548b4174a [Modify]夺宝精灵功能修改 2023-09-08 11:55:52 +08:00
wushaocheng
068172bbd2 [Modify]首页ui和接口修改 2023-09-07 11:40:19 +08:00
wushaocheng
0dda893e1f [Modify]声网sdk修改成新的集成方式,避免模拟器的崩溃 2023-09-07 10:40:37 +08:00
wushaocheng
928857f97d [Modify]优质陪伴页面修改 2023-09-06 15:10:15 +08:00
wushaocheng
46a2dab191 [Modify]优质陪伴页面修改 2023-09-05 18:43:27 +08:00
wushaocheng
877c3d9361 [Modify]游戏房接入 2023-09-05 14:29:57 +08:00
wushaocheng
ef8ca0b939 [Modify]首页修改 2023-09-05 11:31:04 +08:00
wushaocheng
50a20f7822 [Modify]热门推荐修改 2023-09-04 15:23:34 +08:00
wushaocheng
9cc59dd275 [Modify]首页修改 2023-09-04 10:37:38 +08:00
wushaocheng
1ac47c055d [Modify]腾讯trtc修改 2023-09-02 15:39:31 +08:00
wushaocheng
24f1437418 [Modify]facebook参数修改 2023-09-01 16:11:49 +08:00
wushaocheng
f794fe960f [Modify]facebook登录修改 2023-08-29 18:19:10 +08:00
wushaocheng
282036bb20 [Modify]修复线上bug 2023-08-25 20:41:03 +08:00
wushaocheng
ffab260d6a [Modify]修复线上bug 2023-08-18 15:42:09 +08:00
wushaocheng
8c47c3e717 [Modify]修復測試提的bug 2023-08-16 23:57:28 +08:00
wushaocheng
c36f127bce [Modify]登錄功能修改和房間内送禮飄屏隱藏 2023-08-16 18:27:33 +08:00
wushaocheng
d46ec289ea [Modify]隐私政策弹窗移除 2023-08-16 17:19:15 +08:00
wushaocheng
a9405eb8f8 [BugFix]登录功能bug修复 2023-08-16 16:57:57 +08:00
wushaocheng
f5d3f45001 [Modify]登录页面功能修改 2023-08-15 20:29:35 +08:00
wushaocheng
49f2764344 [BugFix]修复生日小于1902的崩溃 2023-08-15 14:30:18 +08:00
wushaocheng
e2a477bd0d [BugFix]修复生日小于1902的崩溃 2023-08-15 14:26:25 +08:00
wushaocheng
0cc24f4adf [BugFix]修复firebase上1.9.6的崩溃 2023-08-15 11:55:53 +08:00
wushaocheng
44e918bd68 [Modify]facebook接入 2023-08-14 12:27:53 +08:00
wushaocheng
cc21e2969a [Modify]登录功能修改 2023-08-14 12:24:32 +08:00
wushaocheng
cbe2234c83 [Modify]公会页面图标修改 2023-08-10 19:00:52 +08:00
wushaocheng
68e091131d [Modify]公会图片高斯模糊 2023-08-10 18:28:16 +08:00
wushaocheng
346b535757 [Modify]修復公會數據和trtc的bug 2023-08-10 17:32:10 +08:00
wushaocheng
a16a918d06 [Modify]去掉房间id 2023-08-09 16:16:48 +08:00
wushaocheng
d3b6a16db9 [Modify]修改礼物弹窗逻辑 2023-08-09 15:22:29 +08:00
wushaocheng
c34e8b034d [Modify]修改公会数据页面 2023-08-09 11:42:35 +08:00
wushaocheng
d2b0e904c8 [Modify]1.9.5修改peko为piko 2023-08-09 10:20:00 +08:00
wushaocheng
b57e7afb6d [Modify]修复firebase上面的崩溃 2023-08-08 18:59:58 +08:00
wushaocheng
edcabd157d [Modify]去掉房间内的送礼飘屏 2023-08-08 15:25:39 +08:00
wushaocheng
384831effa [Modify]腾讯trtc预埋 2023-08-08 14:43:03 +08:00
wushaocheng
f8f0c2c59b [Modify]公会数据逻辑补全 2023-08-08 14:14:20 +08:00
wushaocheng
96e3c65f2f [Modify]公会数据页面修改 2023-08-07 10:52:12 +08:00
wushaocheng
d8c1a89005 [Modify]修改版本号为1.9.4 2023-07-24 17:49:24 +08:00
wushaocheng
e014e6a6b2 [BugFix]优化BaseDialog判空,周星榜ui调整,夺宝精灵闪退修复 2023-07-24 16:36:56 +08:00
wushaocheng
144fa832f1 [BugFix]优化房间外飘屏高度 2023-07-21 01:08:59 +08:00
wushaocheng
9b7c0cae6b [BugFix]优化飘屏展示逻辑 2023-07-21 00:34:02 +08:00
wushaocheng
f6f79f83dc [BugFix]修复谷歌充值显示问题 2023-07-20 22:42:26 +08:00
wushaocheng
09f0eac2b3 [BugFix]修復飄屏展示邏輯 2023-07-20 21:38:50 +08:00
wushaocheng
951c42592e [BugFix]福袋特效优化 2023-07-20 16:12:37 +08:00
wushaocheng
fdfec8610d [BugFix]修改测试提的bug 2023-07-19 22:03:01 +08:00
wushaocheng
fcf9f65984 [BugFix]修改测试提的bug 2023-07-19 20:16:50 +08:00
wushaocheng
2ef89535d5 [Modify]修改福袋礼物面板问题 2023-07-18 20:57:13 +08:00
wushaocheng
f742102a60 [Modify]全服玩法飘屏逻辑 2023-07-18 19:13:28 +08:00
wushaocheng
eb73898872 [BugFix]80级进场飘屏样式调整 2023-07-18 11:07:30 +08:00
wushaocheng
122f2d374f [Modify]兑换钻石放开 2023-07-17 19:06:35 +08:00
wushaocheng
7adefe8375 [Modify]礼物面板改造 2023-07-17 19:00:54 +08:00
wushaocheng
34b9233825 [Modify]贵族优化 2023-07-14 19:29:50 +08:00
wushaocheng
cd5b1728f8 [Modify]飘屏逻辑优化 2023-07-13 21:13:32 +08:00
wushaocheng
ac53bbd484 [Modify]奪寶精靈優化 2023-07-13 14:16:35 +08:00
wushaocheng
48a096a64a [Modify]礼物面板修改 2023-07-12 19:07:27 +08:00
wushaocheng
0dd0e131f2 [Modify]贵族调起支付增加弹窗 2023-07-12 19:01:11 +08:00
wushaocheng
4999c6e955 [Modify]谷歌充值修改 2023-07-12 16:00:52 +08:00
wushaocheng
259c3e408a [Modify]谷歌充值增加提醒 2023-07-12 15:10:22 +08:00
wushaocheng
58b66848d9 [Modify]版本号改为1.9.0 2023-07-11 16:55:59 +08:00
wushaocheng
bf805afdb5 [Modify]房间公屏优化 2023-07-11 16:51:38 +08:00
wushaocheng
a1221fa5a5 [Modify]修改为1.8.5 2023-06-07 19:55:57 +08:00
wushaocheng
7515f50095 [Modify]寻爱之旅消耗钻石改为可配置 2023-06-07 15:21:31 +08:00
3153 changed files with 82990 additions and 60960 deletions

View File

@@ -26,7 +26,7 @@ dependencies {
api 'androidx.annotation:annotation:1.4.0'
api 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.core:core-ktx:1.7.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
repositories {
mavenCentral()

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="crop__saving">…جارٍ حفظ الصورة</string>
<string name="crop__wait">…انتظر من فضلك</string>
<string name="crop__pick_error">لا يوجد مصدر صورة متاح</string>
<string name="crop__done">ينهي</string>
<string name="crop__cancel">يلغي</string>
</resources>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="crop__saving">Saving photo…</string>
<string name="crop__wait">Please wait…</string>
<string name="crop__pick_error">No image source available</string>
<string name="crop__done">Finish</string>
<string name="crop__cancel">Cancel</string>
</resources>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="crop__saving">Menyimpan foto…</string>
<string name="crop__wait">Harap tunggu…</string>
<string name="crop__pick_error">Tidak ada sumber gambar yang tersedia</string>
<string name="crop__done">Menyelesaikan</string>
<string name="crop__cancel">Membatalkan</string>
</resources>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="crop__saving">Fotoğraf kaydediliyor…</string>
<string name="crop__wait">Lütfen bekleyin…</string>
<string name="crop__pick_error">Görüntü kaynağı yok</string>
<string name="crop__done">Sona ermek</string>
<string name="crop__cancel">İptal etmek</string>
</resources>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="crop__saving">正在儲存相片…</string>
<string name="crop__wait">請稍候…</string>
<string name="crop__pick_error">沒有可用的圖片來源</string>
<string name="crop__done">完成</string>
<string name="crop__cancel" tools:ignore="ButtonCase">取消</string>
</resources>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="crop__saving">正在儲存相片…</string>
<string name="crop__wait">請稍候…</string>
<string name="crop__pick_error">沒有可用的圖片來源</string>
<string name="crop__done">完成</string>
<string name="crop__cancel" tools:ignore="ButtonCase">取消</string>
</resources>

View File

@@ -1,9 +1,10 @@
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="crop__saving">Saving photo</string>
<string name="crop__wait">Please wait</string>
<string name="crop__pick_error">No image source available</string>
<string name="crop__done">Finish</string>
<string name="crop__cancel">Cancel</string>
<string name="crop__saving">正在儲存相片</string>
<string name="crop__wait">請稍候</string>
<string name="crop__pick_error">沒有可用的圖片來源</string>
<string name="crop__done">完成</string>
<string name="crop__cancel" tools:ignore="ButtonCase">取消</string>
</resources>

View File

@@ -24,7 +24,7 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center</item>
<item name="android:gravity">center_vertical</item>
<item name="android:paddingEnd">20dp</item> <!-- Offsets left drawable -->
<item name="android:paddingRight">20dp</item> <!-- Offsets left drawable -->
<item name="android:drawablePadding">8dp</item>
<item name="android:textColor">@color/crop__button_text</item>
<item name="android:textStyle">bold</item>

View File

@@ -2,7 +2,6 @@ apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.tencent.vasdolly'
apply from: '../mob.gradle'
@@ -21,20 +20,20 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
ndk {
//设置支持的SO库架构
if (onlyArm64) {
abiFilters "arm64-v8a"
} else {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
flavorDimensions 'default'
manifestPlaceholders = [CRASHLYTICS_COLLECTION_ENABLED: CRASHLYTICS_COLLECTION_ENABLED.toBoolean()]
}
splits {
abi {
enable true
reset()
include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
universalApk true
}
}
bundle {
language {
enableSplit = false
@@ -48,20 +47,29 @@ android {
}
//在apk文件后边生成版本号信息
android.applicationVariants.all {
variant ->
variant.outputs.all {
def date = new Date().format("MMddHHmm", TimeZone.getTimeZone("GMT+08"))
outputFileName = "peko_${buildType.name}_v${defaultConfig.versionName}-${date}.apk"
android.applicationVariants.configureEach { variant ->
variant.outputs.configureEach { output ->
def date = new Date().format("MMddHHmm", TimeZone.getTimeZone("GMT+08"))
def outputFile = output.outputFile
if (outputFile == null || !outputFile.name.endsWith('.apk')) {
return
}
def abi = output.getFilter(com.android.build.OutputFile.ABI)
if (abi == null) {
abi = "universal"
}
outputFileName = "piko_${buildType.name}_v${defaultConfig.versionName}_${defaultConfig.versionCode}_${abi}_${date}.apk"
}
}
lintOptions {
lint {
abortOnError false
disable 'MissingTranslation'
disable 'ExtraTranslation'
disable 'MissingTranslation', 'ExtraTranslation', 'ContentDescription', 'SmallSp'
}
dataBinding {
enabled = true
}
@@ -139,19 +147,23 @@ android {
}
buildTypes {
def server_url_debug = '"http://beta.api.pekolive.com/"'
def server_url_release = '"https://api.pekolive.com/"'
debug {
println("minifyEnabled = " + minify_enabled)
ext.enableCrashlytics = false
ext.alwaysUpdateBuildId = false // Firebase Crashlytics禁用更新构建ID
buildConfigField "String", "BASE_URL", "\"https://beta.api.pekolive.com/\""
buildConfigField "String", "BASE_URL", server_url_debug
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
minifyEnabled false // 是否混淆
buildConfigField "String", "BASE_URL_RELEASE", server_url_release
minifyEnabled minify_enabled.toBoolean() // 是否混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
crunchPngs false // 停用 PNG 压缩
signingConfig signingConfigs.v2
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
gradle.taskGraph.whenReady {
tasks.each { task ->
if (task.name.contains("Test") || task.name.contains("Lint")) {
@@ -169,7 +181,7 @@ android {
mappingFileUploadEnabled CRASHLYTICS_COLLECTION_ENABLED.toBoolean()
}
buildConfigField "String", "BASE_URL", "\"https://api.pekolive.com/\""
buildConfigField "String", "BASE_URL", server_url_release
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "BASE_URL"
buildConfigField "String", "BASE_URL_RELEASE", "BASE_URL"
@@ -203,6 +215,9 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
@@ -260,7 +275,7 @@ dependencies {
implementation 'com.github.fodroid:XRadioGroup:v1.5'
api 'com.tencent.vasdolly:helper:3.0.3'
api 'com.tencent.vasdolly:helper:3.0.6'
implementation "io.github.tencent:vap:2.0.24"
implementation 'com.github.mmin18:realtimeblurview:1.2.1'
@@ -287,6 +302,8 @@ dependencies {
//wheelView
implementation 'com.contrarywind:wheelview:4.1.0'
implementation 'tech.sud.mgp:SudMGP-static:1.3.3.1158'
implementation 'com.google.android.material:material:1.9.0'
}
channel {
@@ -294,7 +311,7 @@ channel {
outputDir = new File(project.buildDir, "channelapk")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
def only64 = onlyArm64 ? "-only64" : ""
apkNameFormat = 'peko-${buildType}only64-${flavorName}-v${versionName}-${buildTime}'.replace("only64", only64)
apkNameFormat = 'piko-${buildType}only64-${flavorName}-v${versionName}-${buildTime}'.replace("only64", only64)
//快速模式生成渠道包时不进行校验速度可以提升10倍以上默认为false
fastMode = false
//buildTime的时间格式默认格式yyyyMMdd-HHmmss

Binary file not shown.

View File

@@ -99,16 +99,18 @@
-keep class android.support.v7.** { *;}
#----------------EventBus事件巴士-----------------
-keepclassmembers class ** {
-keepattributes *Annotation*
-keepclassmembers class * {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(Java.lang.Throwable);
# If using AsyncExecutord, keep required constructor of default event used.
# Adjust the class name if a custom failure event type is used.
-keepclassmembers class org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
# Accessed via reflection, avoid renaming or removal
-keep class org.greenrobot.eventbus.android.AndroidComponentsImpl
#-------------云信相关的混淆配置------------
-dontwarn com.netease.**
@@ -233,6 +235,8 @@
-keep class org.json.** {*;}
-dontwarn com.yizhuan.xchat_android_core.**
-keep class com.yizhuan.xchat_android_core.** {*;}
-keep class com.yizhuan.treasure_box.bean.** {*;}
-keep class com.yizhuan.erban.avroom.bean.** {*;}
#百度统计

Binary file not shown.

Before

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 643 B

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 631 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

View File

@@ -51,8 +51,15 @@
tools:node="remove" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission 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
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 如果需要实时音视频通话模块,下面的权限也是必须的。否则,可以不加 -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- SDK 权限申明, 第三方 APP 接入时,请将 com.netease.nim.demo 替换为自己的包名 -->
@@ -69,8 +76,12 @@
<uses-permission android:name="com.meizu.flyme.push.permission.RECEIVE" /> <!-- 兼容flyme3.0配置权限 -->
<uses-permission android:name="${applicationId}.push.permission.MESSAGE" />
<uses-permission android:name="com.meizu.c2dm.permission.RECEIVE" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> <!-- AppsFlyer需要参考https://dev.appsflyer.com/hc/docs/install-android-sdk#setting-required-permissions -->
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<!-- AppsFlyer需要参考https://dev.appsflyer.com/hc/docs/install-android-sdk#setting-required-permissions -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- 对于 Android 12.0 及以上设备,还需要添加如下权限: -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<application
android:name=".application.XChatApplication"
@@ -84,6 +95,7 @@
android:theme="@style/MyMaterialTheme"
tools:replace="android:name,android:allowBackup"
tools:targetApi="n">
<activity
android:name=".other.activity.SplashActivity"
android:exported="true"
@@ -110,7 +122,7 @@
<data
android:host="main"
android:scheme="pekoapp" />
android:scheme="pikoapp" />
</intent-filter>
</activity>
@@ -210,7 +222,7 @@
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="Peko"
android:label="Piko"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateAlwaysHidden" /> <!-- 配置的service和receiver -->
@@ -242,6 +254,10 @@
android:name=".avroom.activity.RoomBlackListActivity"
android:label="@string/main_androidmanifest_09"
android:screenOrientation="portrait" />
<activity
android:name=".module_hall.hall.activity.RoomIncomeActivity"
android:label="房间流水"
android:screenOrientation="portrait" />
<activity
android:name="com.yizhuan.tutu.music.activity.AddLocalMusicListActivity"
android:label="@string/main_androidmanifest_010"
@@ -286,6 +302,10 @@
android:name=".home.activity.CollectionRoomActivity"
android:label="@string/main_androidmanifest_019"
android:screenOrientation="portrait" />
<activity
android:name=".ui.wallet.ExchangeGoldActivity"
android:label="@string/main_androidmanifest_020"
android:screenOrientation="portrait" />
<activity
android:name=".ui.setting.SettingActivity"
android:screenOrientation="portrait" />
@@ -295,6 +315,9 @@
<activity
android:name=".ui.relation.FansListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.withdraw.WithdrawActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.withdraw.bankcard.BindWithdrawBankCardActivity"
android:screenOrientation="portrait" />
@@ -310,6 +333,18 @@
<activity
android:name=".ui.user.activity.ShowPhotoActivity"
android:screenOrientation="portrait" />
<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" />
<activity
android:name=".bills.activities.ChatBillsActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.setting.FeedbackActivity"
android:screenOrientation="portrait" />
@@ -320,9 +355,42 @@
android:name=".ui.webview.CommonWebViewActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.wallet.PaymentResultActivity"
android:exported="true"
android:launchMode="singleTask"
android:theme="@style/transparent_activity"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="payment"
android:path="/result"
android:scheme="pekoapp" />
</intent-filter>
</activity>
<activity
android:name=".ui.webview.SimpleWebViewActivity"
android:screenOrientation="portrait" />
<activity
android:name=".bills.activities.RedBagBillsActivity"
android:screenOrientation="portrait" />
<activity
android:name=".bills.activities.BillGiftExpendActivity"
android:label="@string/main_androidmanifest_021"
android:screenOrientation="portrait" />
<activity
android:name=".bills.activities.BillGiftInComeActivity"
android:label="@string/main_androidmanifest_022"
android:screenOrientation="portrait" />
<activity
android:name=".bills.activities.BillNobleActivity"
android:label="@string/bill_noble_open"
android:screenOrientation="portrait" />
<activity
android:name=".avroom.activity.RoomInviteActivity"
android:label="@string/main_androidmanifest_023"
@@ -365,6 +433,42 @@
android:name=".friend.view.SelectFriendActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyPlazaActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyHomeActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilySearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyManageActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyCurrencyActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyMemberListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyInfoActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyMemberSearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".team.view.NimTeamMessageActivity"
android:screenOrientation="portrait"
@@ -409,6 +513,10 @@
android:name=".luckymoney.view.LuckyMoneyDetailActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" /> <!-- android:launchMode="singleTask" -->
<activity
android:name=".family.view.activity.FamilyMemberCurrencyActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".ErbanTakePhotoActivity"
android:screenOrientation="portrait"
@@ -417,9 +525,21 @@
android:name=".team.view.UpdateTeamNameActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilySelectFriendActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyTextInputActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".family.view.activity.FamilyGameListActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".treasure_box.activity.TreasureBoxActivity"
android:theme="@style/dialog_web_view_activity" />
android:theme="@style/transparent_activity" />
<activity
android:name=".treasure_box.activity.BoxRankingActivity"
android:theme="@style/room_message_activity" />
@@ -452,6 +572,9 @@
android:name=".ui.user.decorationsend.DecorationSendActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".avroom.activity.RoomRankListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".avroom.activity.RoomOnlineUserActivity"
android:screenOrientation="portrait" />
@@ -575,6 +698,18 @@
android:name="com.yizhuan.tutu.room_chat.activity.NimHallTeamRoomMessageActivity"
android:screenOrientation="portrait"
android:theme="@style/room_message_activity" />
<activity
android:name=".bills.activities.BillGiftIncomeGroupActivity"
android:screenOrientation="portrait" />
<activity
android:name=".radish.activity.RadishRecordActivity"
android:screenOrientation="portrait" />
<activity
android:name=".radish.signin.SignInActivity"
android:screenOrientation="portrait" />
<activity
android:name=".radish.task.activity.TaskCenterActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.patriarch.PatriarchModeActivity"
android:screenOrientation="portrait" />
@@ -632,9 +767,18 @@
android:name=".miniworld.activity.MiniWorldMainActivity"
android:screenOrientation="portrait" />
<activity android:name=".ui.im.friend.ActFriendList" />
<activity
android:name=".bank_card.activity.BankCardListActivity"
android:screenOrientation="portrait" /> <!-- 萝卜-签到-任务 -->
<activity
android:name=".bank_card.activity.BankCardListUnbindActivity"
android:screenOrientation="portrait" />
<activity
android:name=".bank_card.activity.BankCardBindActivity"
android:screenOrientation="portrait" />
<activity
android:name=".bank_card.activity.AddBankCardAgreementActivity"
android:screenOrientation="portrait" />
<activity
android:name="com.tongdaxing.erban.sadmin.RoomSAdminManagerActivity"
android:screenOrientation="portrait" />
@@ -665,6 +809,10 @@
<activity
android:name="com.zhihu.matisse.internal.ui.SelectedPreviewActivity"
android:screenOrientation="portrait" /> <!-- 房间内私聊 -->
<activity
android:name=".ui.wallet.sendgold.SendGoldActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".pay.activity.GiveGoldActivity"
android:screenOrientation="portrait"
@@ -695,10 +843,18 @@
<activity
android:name=".ui.webview.DialogWebViewActivity"
android:theme="@style/dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" /> <!-- 隐私政策 -->
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.webview.room_banner.RoomWebDialogActivity"
android:theme="@style/room_dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" /><!-- 隐私政策 -->
<activity
android:name=".ui.webview.DatingRuleWebViewActivity"
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".ui.webview.room_banner.RoomBannerWebDialogActivity"
android:theme="@style/dialog_web_view_activity"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".ui.webview.TarotPayWebViewActivity"
android:theme="@style/dialog_web_view_activity" />
@@ -854,19 +1010,14 @@
android:screenOrientation="portrait" />
<activity
android:name=".treasurefairy.HomeFairyActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:theme="@style/dialog_web_view_activity" />
android:theme="@style/transparent_activity" />
<activity
android:name=".ui.webview.FairyDialogWebViewActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:theme="@style/dialog_web_view_activity" />
<activity
android:name=".ui.setting.AreaSelectActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait" />
android:theme="@style/transparent_activity" />
<meta-data
android:name="notch.config"
@@ -890,6 +1041,10 @@
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="Mob-Https"
android:value="yes" />
<provider
android:name="com.netease.nimlib.ipc.NIMContentProvider"
android:authorities="${applicationId}.ipc.provider"
@@ -932,6 +1087,33 @@
<service
android:name=".service.DaemonService"
android:enabled="true" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<meta-data
android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<activity android:name=".avroom.room_album.RoomAlbumActivity" />
</application>
</manifest>

View File

@@ -0,0 +1 @@
[{"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"}]

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.

View File

@@ -49,7 +49,7 @@ import com.yizhuan.erban.common.widget.DragLayout;
import com.yizhuan.erban.community.dynamic.view.DynamicDetailActivity;
import com.yizhuan.erban.community.publish.view.PublishActivity;
import com.yizhuan.erban.community.square.SquareFragment;
import com.yizhuan.erban.event.AreaChangeEvent;
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
import com.yizhuan.erban.home.HomeViewModel;
import com.yizhuan.erban.home.dialog.NewUserHelloDialog;
import com.yizhuan.erban.home.dialog.ProtocolUpdateDialog;
@@ -89,7 +89,6 @@ import com.yizhuan.xchat_android_core.auth.event.LogoutEvent;
import com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel;
import com.yizhuan.xchat_android_core.community.event.SquareTaskEvent;
import com.yizhuan.xchat_android_core.community.event.UnReadCountEvent;
import com.yizhuan.xchat_android_core.home.bean.MainTabInfo;
import com.yizhuan.xchat_android_core.home.bean.MainTabType;
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent;
import com.yizhuan.xchat_android_core.home.event.VisitorUnreadCountEvent;
@@ -191,21 +190,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
context.startActivity(intent);
}
/**
* 让页面重新执行生命周期
* @param context
* @param extras
*/
public static void startNewTask(Context context, Intent extras) {
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
if (extras != null) {
intent.putExtras(extras);
}
context.startActivity(intent);
}
/**
* @return true 如果处理了跳转
*/
@@ -220,6 +204,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
// 跳转
if (!StringUtil.isEmpty(linkedInfo.getRoomUid()) && linkedInfo.getType().equals("2")) {
AVRoomActivity.start(context, Long.parseLong(linkedInfo.getRoomUid()));
} else if (!StringUtil.isEmpty(linkedInfo.getFamilyId()) && linkedInfo.getType().equals("4")) {
FamilyHomeActivity.start(context, linkedInfo.getFamilyId());
} else if (!TextUtils.isEmpty(linkedInfo.getUrl()) && linkedInfo.getType().equals("3")) {
CommonWebViewActivity.start(context, UriProvider.getLinkUrl(linkedInfo.getUrl()));
} else if (!TextUtils.isEmpty(linkedInfo.getWorldId()) && linkedInfo.getType().equals("5")) {
@@ -228,6 +214,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
!TextUtils.isEmpty(linkedInfo.getDynamicId())) {
DynamicDetailActivity.start(context, JavaUtil.str2long(linkedInfo.getDynamicId()),
JavaUtil.str2long(linkedInfo.getWorldId()), 6);
} else if (linkedInfo.getType().equals("7") && !TextUtils.isEmpty(linkedInfo.getUid())) {
NimP2PMessageActivity.start(context, linkedInfo.getUid());
} else {
return false;
}
@@ -261,15 +249,11 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
.doOnError(throwable -> onNeedLogin())
.subscribe();
initView();
// InitialModel.get().getMainTabInfosLiveData().observeForever(mainTabInfo -> {
// if (mainTabInfo != null) {
// mMainTabLayout.setMainTabInfoList(mainTabInfo);
// }
// });
List<MainTabInfo> tabInfoList = InitialModel.get().getDefaultMainTab();
if (tabInfoList != null) {
mMainTabLayout.setMainTabInfoList(tabInfoList);
}
InitialModel.get().getMainTabInfosLiveData().observeForever(mainTabInfo -> {
if (mainTabInfo != null) {
mMainTabLayout.setMainTabInfoList(mainTabInfo);
}
});
//检测更新
AppUpgradeHelper.checkAppUpgrade(this);
initMaterialView();
@@ -426,6 +410,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
}
onParseIntent();
handleNimIntent();
InitialModel.get().regionCheck();
}
private void onParseIntent() {
@@ -535,6 +520,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
firstLoadedUserInfo();
InitialModel.get().regionCheck();
}
public void onLogout() {
@@ -597,12 +583,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onAreaChangeEvent(AreaChangeEvent event) {
toast(getString(R.string.succeeded_in_switching_the_partition));
startNewTask(this, null);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onNeedCompleteInfo(NeedCompleteInfoEvent event) {
getDialogManager().dismissDialog();

View File

@@ -12,14 +12,17 @@ import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.radish.signin.SignInActivity;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.utils.PushMessageHandler;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.OpenRoomNotiAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansAttachment;
import com.yizhuan.xchat_android_library.utils.UIUtils;
import java.util.ArrayList;
import java.util.Map;
@@ -103,6 +106,11 @@ public class NimMiddleActivity extends BaseActivity {
if (noticeAttachment.getUid() > 0) {
AVRoomActivity.start(this, noticeAttachment.getUid());
}
} else if (attachment instanceof OpenSignInAttachment) {
if (AuthModel.get().isImLogin()
&& !UIUtils.isTopActivity(this, SignInActivity.class.getSimpleName())) {
SignInActivity.start(this);
}
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MSG_RED_PACKAGE) {
if (attachment.getSecond() == CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND) {
RedPackageAttachment redPackageAttachment = (RedPackageAttachment) attachment;

View File

@@ -9,7 +9,7 @@ import com.yizhuan.erban.relation.cp.dialog.CpGlobalDialog;
import com.yizhuan.erban.ui.widget.LevelUpDialog;
import com.yizhuan.erban.ui.widget.RecallDialog;
import com.yizhuan.erban.ui.widget.lottery_dialog.LotteryDialogManager;
import com.yizhuan.erban.vip.VipUpgradeDialog;
import com.yizhuan.erban.vip.dialog.VipUpgradeDialog;
import com.yizhuan.xchat_android_core.activity.bean.LotteryInfo;
import com.yizhuan.xchat_android_core.level.event.CharmLevelUpEvent;
import com.yizhuan.xchat_android_core.level.event.LevelUpEvent;

View File

@@ -16,7 +16,10 @@ import android.util.Log;
import androidx.multidex.MultiDex;
import com.bumptech.glide.request.target.ViewTarget;
import com.chuhai.utils.LanguageUtils;
import com.chuhai.utils.ServiceTime;
import com.coorchice.library.utils.LogUtils;
import com.facebook.stetho.Stetho;
import com.hjq.toast.ToastUtils;
import com.mob.MobSDK;
import com.mob.moblink.MobLink;
@@ -48,7 +51,7 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.common.app.ActivityStack;
import com.yizhuan.erban.common.util.AppLifeCycleHelper;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.other.activity.SplashActivity;
import com.yizhuan.erban.radish.wallet.RadishWalletManager;
import com.yizhuan.erban.utils.PushMessageHandler;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.Constants;
@@ -64,6 +67,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.interceptor.NoParamsInterceptor;
import com.yizhuan.xchat_android_core.interceptor.ParamsInterceptor;
import com.yizhuan.xchat_android_core.interceptor.TimeSyncInterceptor;
import com.yizhuan.xchat_android_core.manager.IMMessageManager;
import com.yizhuan.xchat_android_core.manager.IMSystemMsgManager;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
@@ -112,6 +116,9 @@ import io.realm.RealmConfiguration;
public class XChatApplication extends BaseApp {
public static final String TAG = "XChatApplication";
public static Application gContext;
// 接收到退出登录事件(跳转到登录页了)
private static long logoutEventTime = 0;
private static final MessageNotifierCustomization messageNotifierCustomization = new MessageNotifierCustomization() {
@Override
public String makeNotifyContent(String nick, IMMessage message) {
@@ -161,6 +168,11 @@ public class XChatApplication extends BaseApp {
public String makeRevokeMsgTip(String s, IMMessage imMessage) {
return null;
}
@Override
public String makeCategory(IMMessage message) {
return null;
}
};
private static XChatApplication instance;
//生命周期监听
@@ -195,10 +207,11 @@ public class XChatApplication extends BaseApp {
String channel = "";
channel = ChannelReaderUtil.getChannel(instance);
Log.d(TAG, "localChannel:" + channel);
if (TextUtils.isEmpty(channel)) {
channel = Constants.GOOGLE;
}
Log.d(TAG, "finalChannel:" + channel);
BasicConfig.INSTANCE.setOriginalChannel(channel);
BasicConfig.INSTANCE.setChannel(channel);
@@ -237,6 +250,13 @@ public class XChatApplication extends BaseApp {
SingleToastUtil.showToast(serviceResult.getMessage());
EventBus.getDefault().post(new NeedCompleteInfoEvent());
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
} else if (serviceResult.getCode() == 401) {
if ((ServiceTime.INSTANCE.getTime() - logoutEventTime) > 800) {
logoutEventTime = ServiceTime.INSTANCE.getTime();
SingleToastUtil.showToast(serviceResult.getMessage());
AuthModel.get().cleanLogInfo();
}
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
}
}
return null;
@@ -247,6 +267,7 @@ public class XChatApplication extends BaseApp {
//fixed: Glide Exception:"You must not call setTag() on a view Glide is targeting"
ViewTarget.setTagId(R.id.tag_glide);
initStetho(context);
init(channel);
//生命周期监听
@@ -395,11 +416,13 @@ public class XChatApplication extends BaseApp {
httpParams.put("deviceId", DeviceUuidFactory.getDeviceId(context));
httpParams.put("androidId", MD5Utils.getMD5String(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)));
httpParams.put("channel", AppMetaDataUtil.getChannelID());
httpParams.put("lang", LanguageUtils.INSTANCE.getSystemLanguage().toLanguageTag());
RxNet.init(context)
.debug(BuildConfig.DEBUG)
.setBaseUrl(url)
.addInterceptors(new ParamsInterceptor(httpParams))
.addInterceptors(new NoParamsInterceptor())//注意:拦截器的添加顺序,请求的拦截顺序
.addInterceptors(new TimeSyncInterceptor())
.certificates()
.build();
//单例的model 初始化
@@ -412,11 +435,11 @@ public class XChatApplication extends BaseApp {
SVGAParser.Companion.shareParser().init(BasicConfig.INSTANCE.getAppContext());
try {
/** svga动画缓存路径 */
File cacheDir = new File(BasicConfig.INSTANCE.getAppContext().getApplicationContext().getExternalCacheDir(), "http");
if (!cacheDir.exists()) cacheDir.mkdirs();
HttpResponseCache.install(cacheDir, 1024 * 1024 * 128);
String cacheDirPath = FileHelper.getRootCacheDir().getAbsolutePath();
File cacheFie = new File(cacheDirPath, "cacheDir");
HttpResponseCache.install(cacheFie, 1024 * 1024 * 128);
} catch (IOException e) {
Log.e(TAG, "testtest", e);
Log.e(TAG, "HttpResponseCache install error :" + e.getMessage());
}
initRxNet(BasicConfig.INSTANCE.getAppContext(), UriProvider.JAVA_WEB_URL);
@@ -441,6 +464,8 @@ public class XChatApplication extends BaseApp {
DynamicFaceModel.get().init();
PayModel.get();
UserModel.get();
//ui层的萝卜钱包
RadishWalletManager.get();
//model层的
RadishModel.get();
@@ -453,6 +478,7 @@ public class XChatApplication extends BaseApp {
ChannelModel.get();
MarketVerifyModel.get();
GiftModel.get();
GiftModel.get().tryLoadGiftList();
PublicChatHallModel.get();
// 模厅
HallDataManager.get().application();
@@ -500,10 +526,7 @@ public class XChatApplication extends BaseApp {
BasicConfig.INSTANCE.setAppContext(this.getApplicationContext());
SharedPreferenceUtils.init(this);
ResUtil.init(this);
boolean isShowPrivacyAgreement = (boolean) SharedPreferenceUtils.get(SplashActivity.SHOW_PRIVACY_AGREEMENT, true);
if (!isShowPrivacyAgreement) {
initOtherSDK();
}
initOtherSDK();
initContext(this);
//首次启动事件
HashMap<String, Object> map = new HashMap<>(2);
@@ -539,4 +562,18 @@ public class XChatApplication extends BaseApp {
unregisterActivityLifecycleCallbacks(lifeCycleHelper);
}
}
/**
* 初始化Stetho网络调试
*/
private static void initStetho(Context context) {
if (Env.isDebug()) {
Stetho.initialize(
Stetho.newInitializerBuilder(context)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(context))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
.build()
);
}
}
}

View File

@@ -30,6 +30,7 @@ import com.yizhuan.erban.base.TitleBar;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.databinding.ActivityVoiceMatchBinding;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.widget.higuide.TuTuGuideHelper;
import com.yizhuan.xchat_android_core.audio.AudioModel;
import com.yizhuan.xchat_android_core.audio.bean.HistoryVoiceInfo;
import com.yizhuan.xchat_android_core.audio.bean.VoiceMatchInfo;
@@ -37,8 +38,10 @@ import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.music.model.PlayerModel;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
@@ -157,6 +160,23 @@ public class VoiceMatchActivity extends BaseViewBindingActivity<ActivityVoiceMat
});
}
/**
* 显示引导图的时机
* 1. 首次进入页面isNeedHiGuide
* 2. 请求数据且数据不为空时
*/
private void showGuide() {
/*引导图*/
binding.svgaGroupVoiceLike.postDelayed(() -> {
if (!ActivityUtil.isValidContext(context)) {
return;
}
TuTuGuideHelper guideHelper = new TuTuGuideHelper(context);
guideHelper.createHiGuide(() -> guideHelper.createVoiceMatchGuide(binding.svgaGroupVoiceLike, binding.layoutMyVoiceEntrance));
TuTuGuideHelper.setNoNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_VOICE_MATCH);
}, 500);
}
private void queryHistoryVoice() {
AudioModel.get().queryHistoryVoice(AuthModel.get().getCurrentUid())
.compose(bindUntilEvent(ActivityEvent.DESTROY))
@@ -357,6 +377,10 @@ public class VoiceMatchActivity extends BaseViewBindingActivity<ActivityVoiceMat
if (isFinishing() || isDestroyed()) {
return;
}
if (TuTuGuideHelper.isNeedHiGuide(TuTuGuideHelper.KEY_GUIDE_VOICE_MATCH)
&& !ListUtils.isListEmpty(voiceMatchInfos)) {
showGuide();// 首次进入页面isNeedHiGuide且 请求成功数据不为空时,显示引导图
}
if (voiceMatchInfos != null) {
if (voiceMatchInfos.size() == 0) {
binding.groupVoiceLayout.setVisibility(View.INVISIBLE);

View File

@@ -109,6 +109,9 @@ public class AudioPlayerHelper {
}
public void endPlay() {
if (listener != null) {
listener.onCompletion();
}
handler.removeMessages(WHAT_STATUS.COUNT_PLAY);
if (player != null) {
if (preparing) {

View File

@@ -18,7 +18,7 @@ import com.yizhuan.erban.ui.im.avtivity.NimFriendModel;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.erban.ui.widget.GiftDialog;
import com.yizhuan.erban.vip.VipHelper;
import com.yizhuan.erban.vip.util.VipHelper;
import com.yizhuan.tutu.room_chat.activity.RoomMsgActivity;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.bean.RoomQueueInfo;
@@ -161,7 +161,7 @@ public class ButtonItemFactory {
//关注
buttonItems.add(createAttentItem());
//@Ta
//关注
buttonItems.add(createAtItem());
final RoomInfo currentRoom = AvRoomDataManager.get().mCurrentRoomInfo;

View File

@@ -2,13 +2,25 @@ package com.yizhuan.erban.avroom.activity;
import static android.view.View.VISIBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ALL_SERVICE_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_BOX;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_CRAZY_ZOO;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_CRAZY_ZOO_SUB_ALL_ROOM;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_FAIRY;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_SERVER_ALL;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_SEA;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_LUCKY_SEA_GIFT_SERVER_ALL;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ROOM_PK;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_DRAW_GIFT_L5;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_ROOM_PK_NOTIFY;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_TEMPLATE_NOTIFY;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_TEMPLATE_NOTIFY_ALL;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
@@ -31,10 +43,12 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.LifecycleOwner;
import androidx.viewpager2.widget.ViewPager2;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.NIMSDK;
import com.netease.nimlib.sdk.Observer;
@@ -49,6 +63,7 @@ import com.opensource.svgaplayer.SVGAVideoEntity;
import com.orhanobut.logger.Logger;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.dialog.NewUserGiftDialog;
import com.yizhuan.erban.avroom.dialog.SingleRoomTipDialog;
import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog;
import com.yizhuan.erban.avroom.fragment.FakeSingleRoomBackFragment;
@@ -57,7 +72,7 @@ import com.yizhuan.erban.avroom.fragment.HomePartyFragment;
import com.yizhuan.erban.avroom.fragment.InputPwdDialogFragment;
import com.yizhuan.erban.avroom.presenter.AvRoomPresenter;
import com.yizhuan.erban.avroom.presenter.HomePartyPresenter;
import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog;
import com.yizhuan.erban.avroom.redpackage.RedPackageHandler;
import com.yizhuan.erban.avroom.view.IAvRoomView;
import com.yizhuan.erban.avroom.widget.VerticalViewPagerAdapter;
import com.yizhuan.erban.base.BaseMvpActivity;
@@ -73,10 +88,7 @@ import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.erban.ui.webview.DialogWebViewActivity;
import com.yizhuan.erban.ui.widget.NobleOpenNoticeView;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftDialog;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelOneDialog;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelThreeDialog;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelTwoDialog;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelDialog;
import com.yizhuan.erban.ui.widget.dialog.MonsterDialog;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.tutu.room_chat.activity.RoomMsgActivity;
@@ -87,10 +99,23 @@ import com.yizhuan.xchat_android_core.auth.event.LogoutEvent;
import com.yizhuan.xchat_android_core.bean.BaseProtocol;
import com.yizhuan.xchat_android_core.channel_page.bean.HelloMessageInfo;
import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;
import com.yizhuan.xchat_android_core.gift.bean.LuckyBagNoticeInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.FairyMsgAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.NotifyH5Attachment;
import com.yizhuan.xchat_android_core.im.custom.bean.NotifyH5Info;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomLuckySeaAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomLuckySeaMsgBean;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPKAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomReceivedLuckyGiftAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomTemplateNotifyAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomTemplateNotifyMsgBean;
import com.yizhuan.xchat_android_core.im.custom.bean.TarotAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.TarotMsgBean;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
@@ -109,7 +134,6 @@ import com.yizhuan.xchat_android_core.patriarch.event.CloseMinRoomEvent;
import com.yizhuan.xchat_android_core.patriarch.event.ImPushMsgPmLimitTimeEvent;
import com.yizhuan.xchat_android_core.patriarch.event.PmDismissAllLimitDialogEvent;
import com.yizhuan.xchat_android_core.patriarch.exception.PmRoomLimitException;
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel;
import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo;
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
@@ -121,6 +145,10 @@ import com.yizhuan.xchat_android_core.room.event.RoomTaskTipsEvent;
import com.yizhuan.xchat_android_core.room.pk.event.PKStateEvent;
import com.yizhuan.xchat_android_core.super_admin.util.SAdminOptUtil;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.support.room.RoomContext;
import com.yizhuan.xchat_android_core.support.room.RoomView;
import com.yizhuan.xchat_android_core.support.room.RoomWidget;
import com.yizhuan.xchat_android_core.treasurefairy.FairyMsgInfoBean;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.FirstChargeInfo;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
@@ -128,7 +156,6 @@ import com.yizhuan.xchat_android_core.utils.LogUtils;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import com.yizhuan.xchat_android_library.utils.UIUtils;
@@ -140,10 +167,8 @@ import org.greenrobot.eventbus.ThreadMode;
import java.lang.ref.WeakReference;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import io.reactivex.Single;
@@ -159,7 +184,7 @@ import io.reactivex.disposables.Disposable;
*/
@CreatePresenter(AvRoomPresenter.class)
public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter>
implements View.OnClickListener, IAvRoomView {
implements View.OnClickListener, IAvRoomView, RoomView {
public static final int FROM_TYPE_NORMAL = 0;
public static final int FROM_TYPE_RECOMMEND = 1;
@@ -197,7 +222,6 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
private RoomInfo mRoomInfo;
private ImageView ivHeadWear;
private MonsterDialog monsterDialog;
private List<RedPackageOpenDialog> openDialogs;
private ViewPager2 viewpager;
private VerticalViewPagerAdapter mAdapter;
/*********************************显示全服礼物***************************************/
@@ -205,9 +229,13 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
private GiftBroadcastObserver giftObserver;
private Dialog giftDialog;
private LinkedList<AllServiceGiftProtocol.DataBean> giftList;
private boolean isResume = true;
@Nullable
private SingleRoomTipDialog singleRoomTipDialog;
// 通过红包进来时,有该参数
private RedPackageNotifyInfo redPackageNotifyInfo;
// 是否禁用VP滑动true不允许滑动false某些条件下可以滑动
private boolean viewPagerInputDisable;
public static void start(Context context, long roomUid) {
startForFromType(context, roomUid, FROM_TYPE_NORMAL, null, null);
@@ -303,7 +331,8 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
} else if (roomInfo.getType() == RoomInfo.ROOM_TYPE_SINGLE) {
bgPicture[0] = "";
svgaRoomBg.setImageResource(R.drawable.bg_room_single_pic);
// svgaRoomBg.setImageResource(R.drawable.bg_room_single_pic);
playSvgaBg(svgaRoomBg, "svga/room_bg_single.svga");
} else {
bgPicture[0] = "";
if (roomInfo.getRoomModeType() == RoomModeType.OPEN_PK_MODE) {
@@ -380,7 +409,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
public void setCurrentItem(int item) {
dismissLoadingDialog();
if (viewpager != null) {
viewpager.setUserInputEnabled(true);
tryEnabledViewPagerInput();
viewpager.setCurrentItem(item, false);
}
}
@@ -392,6 +421,12 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
fromUid = intent.getStringExtra("fromUid");
giftId = intent.getIntExtra("giftId", 0);
mRoomInfo = intent.getParcelableExtra(Constants.ROOM_INFO);
Object notifyInfo = intent.getSerializableExtra("notifyInfo");
if (notifyInfo instanceof RedPackageNotifyInfo) {
redPackageNotifyInfo = (RedPackageNotifyInfo) notifyInfo;
} else {
redPackageNotifyInfo = null;
}
if (mRoomInfo != null) {
roomUid = mRoomInfo.getRoomUid();
} else {
@@ -423,7 +458,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
viewpager.setOffscreenPageLimit(2);
viewpager.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
viewpager.getChildAt(0).setOverScrollMode(View.OVER_SCROLL_NEVER);
viewpager.setUserInputEnabled(false);
disableViewPagerInput();
viewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@@ -450,11 +485,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (state == 0 && viewpager.getCurrentItem() == 2) {
showLoadingDialog();
((FakeSingleRoomFragment) mAdapter.getItem(2)).tryJumpRoom();
viewpager.setUserInputEnabled(false);
disableViewPagerInput();
} else if (state == 0 && viewpager.getCurrentItem() == 0) {
showLoadingDialog();
((FakeSingleRoomBackFragment) mAdapter.getItem(0)).tryJumpRoom();
viewpager.setUserInputEnabled(false);
disableViewPagerInput();
}
}
});
@@ -490,8 +525,6 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (giftList != null) {
giftList.clear();
}
if (!isResume) showRedPackage(AvRoomDataManager.get().mCurrentRoomInfo);
isResume = true;
}
private void onRoomEventReceive(RoomEvent roomEvent) {
@@ -595,8 +628,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
case RoomEvent.MY_SELF_KICK_OUT_ROOM_BY_S_ADMIN:
toBack(true);
break;
case RoomEvent.RECEIVE_RED_PACKAGE:
showRedPackage(AvRoomDataManager.get().mCurrentRoomInfo);
case RoomEvent.FAIRY_DRAW_GIFT_L5:
ChatRoomMessage message = roomEvent.getChatRoomMessage();
if (message != null) {
IMNetEaseManager.get().addMessages(message);
}
break;
default:
}
@@ -646,7 +682,14 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
*/
private void showRoomFragment(boolean isRoomMin) {
mCurrentFragment = (HomePartyFragment) mAdapter.getItem(1);
viewpager.setUserInputEnabled(AvRoomDataManager.get().isSingleRoom());
mCurrentFragment.getPlayNotifyState().observe(getLifecycleOwner(), aBoolean -> {
if (!aBoolean) {
if (isValid()) {
showGiftDialog();
}
}
});
tryEnabledViewPagerInput();
viewpager.setCurrentItem(1, false);
if (isRoomMin) {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
@@ -659,6 +702,17 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
RxBus.get().post(new ShowGiftDialogEvent().setGiftId(giftId));
giftId = 0;
}
/**
* TODO 临时方案后续逐步完善整个房间的RoomContext替换计划
* PS:目前房间进入的逻辑有些凌乱没有明确的生命周期看代码逻辑无论是第一次还是再次进入都会走这里所以在这里绑定View
*/
getRoomContext().onViewAttach(this);
/**
* 每次View重新创建意味着可能在房间外点了红包就重新尝试加载红包并展示
*/
tryShowSourceRedPackage();
}
private void showLiveFinishView(long uid) {
@@ -695,42 +749,24 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
AvRoomDataManager.get().release();
}
@SuppressLint("CheckResult")
private void showRedPackage(RoomInfo roomInfo) {
if (roomInfo == null) return;
RedPackageNotifyInfo inRoomNotifyInfo = (RedPackageNotifyInfo) getIntent().getSerializableExtra("notifyInfo");
Map<String, Long> redMap = DemoCache.readRedPackage();
RedPackageModel.INSTANCE.getRedPackage(roomInfo.getUid())
.compose(bindToLifecycle())
.doFinally(() -> {
if (inRoomNotifyInfo != null && (redMap == null || !redMap.containsKey(inRoomNotifyInfo.getRedEnvelopeId()))) {
showRedPackageOpenDialog(inRoomNotifyInfo);
}
})
.filter(notifyInfo -> inRoomNotifyInfo == null || !notifyInfo.getRedEnvelopeId().equals(inRoomNotifyInfo.getRedEnvelopeId()))
.subscribe(this::showRedPackageOpenDialog);
}
private void showRedPackageOpenDialog(RedPackageNotifyInfo notifyInfo) {
if (!isResume) return;
if (openDialogs == null) {
openDialogs = new ArrayList<>();
}
RedPackageOpenDialog openDialog = RedPackageOpenDialog.Companion.newInstance(notifyInfo);
openDialog.show(this);
if (openDialog.getDialog() != null) {
openDialog.getDialog().setOnDismissListener(dialog -> openDialogs.remove(openDialog));
}
openDialogs.add(openDialog);
if (openDialogs.size() >= SHOW_RED_DIALOG_MAX) {
openDialogs.get(SHOW_RED_DIALOG_MAX - 1).dismissAllowingStateLoss();
/**
* 尝试展示来源红包(在房间外点击红包入口进入房间时)
*/
private void tryShowSourceRedPackage() {
try {
if (redPackageNotifyInfo != null) {
RedPackageHandler handler = getRoomContext().findAbility(RedPackageHandler.class.getSimpleName());
if (handler != null) {
long id = Long.parseLong(redPackageNotifyInfo.getRedEnvelopeId());
handler.tryShowRedPackage(id);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void dismissRedPackageDialog() {
if (openDialogs != null) {
openDialogs.clear();
}
if (mCurrentFragment != null) {
mCurrentFragment.dismissSendRedPackageDialog();
}
@@ -1044,6 +1080,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
//获取管理员
getMvpPresenter().getNormalChatMember();
getMvpPresenter().getSuperAdminList();
getMvpPresenter().checkNewUserGift();
if (UserUtils.getUserInfo().isFirstCharge()) {
getMvpPresenter().checkFirstCharge();
}
@@ -1054,7 +1091,6 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
DemoCache.readNewUserChargeGift() == 0) {
DemoCache.saveNewUserChargeGift(1);
}
showRedPackage(AvRoomDataManager.get().mCurrentRoomInfo);
dismissLoadingDialog();
}
@@ -1174,10 +1210,9 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
baseProtocol = null;
}
if (baseProtocol == null) return;
if (!isValid()) return;
switch (baseProtocol.getFirst()) {
case CUSTOM_MSG_HEADER_TYPE_GIFT:
if (!isValid()) return;
if (giftList == null) {
giftList = new LinkedList<>();
}
@@ -1187,21 +1222,94 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
return;
giftList.add(data);
if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
if (giftDialog != null && giftDialog.isShowing()) {
// 如果当前以及有礼物弹窗在展示,则需要等到他 dismiss 后再显示下一个
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
return;
} else {
giftDialog.dismiss();
if (mCurrentFragment != null && mCurrentFragment.isShowingPlayNotify()) {
return;
}
showGiftDialog();
}
break;
case CUSTOM_MSG_BOX://寻爱之旅
if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA) {
RoomBoxPrizeAttachment roomBoxPrizeAttachment = new RoomBoxPrizeAttachment(CUSTOM_MSG_BOX, CUSTOM_MSG_SUB_BOX_ALL_ROOM_NOTIFY_BY_SVGA);
RoomBoxPrizeInfo roomBoxPrizeBean = JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomBoxPrizeInfo.class);
roomBoxPrizeAttachment.setUid(roomBoxPrizeBean.getUid());
roomBoxPrizeAttachment.setPrizeName(roomBoxPrizeBean.getPrizeName());
roomBoxPrizeAttachment.setNick(roomBoxPrizeBean.getNick());
roomBoxPrizeAttachment.setBoxTypeStr(roomBoxPrizeBean.getBoxTypeStr());
roomBoxPrizeAttachment.setRoomUid(roomBoxPrizeBean.getRoomUid());
roomBoxPrizeAttachment.setPrizeNum(roomBoxPrizeBean.getPrizeNum());
roomBoxPrizeAttachment.setUserLevelLimit(roomBoxPrizeBean.getUserLevelLimit());
if (AvRoomDataManager.get().isOpenPureMode()) {
// 純凈模式打開後,僅能看跟自己相關的砸蛋消息
if (Objects.equals(roomBoxPrizeAttachment.getUid(), AuthModel.get().getCurrentUid())) {
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), roomBoxPrizeAttachment);
IMNetEaseManager.get().addMessages(message);
}
} else {
showGiftDialog();
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), roomBoxPrizeAttachment);
IMNetEaseManager.get().addMessages(message);
IMNetEaseManager.get().getChatRoomEventObservable()
.onNext(new RoomEvent()
.setEvent(RoomEvent.BOX_NOTIFY_SVGA)
.setChatRoomMessage(message));
}
}
break;
case CUSTOM_MSG_LUCKY_GIFT:
if (baseProtocol.getSecond() == CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY) {
case CustomAttachment.CUSTOM_MESS_TAROT:
if (baseProtocol.getSecond() == CustomAttachment.CUSTOM_MESS_TAROT_SENIOR_PRIZE_WINNING) {
TarotMsgBean tarotMsgBean = JSON.parseObject(String.valueOf(baseProtocol.getData()), TarotMsgBean.class);
TarotAttachment tarotAttachment = new TarotAttachment(CustomAttachment.CUSTOM_MESS_TAROT,
CustomAttachment.CUSTOM_MESS_TAROT_SENIOR_PRIZE_WINNING);
tarotAttachment.setTarotMsgBean(tarotMsgBean);
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(
String.valueOf(AvRoomDataManager.get().getRoomId()), tarotAttachment);
IMNetEaseManager.get().getChatRoomEventObservable()
.onNext(new RoomEvent()
.setEvent(RoomEvent.TAROT_NOTIFY_SVGA)
.setChatRoomMessage(message));
AvRoomDataManager.get().addChatRoomMessage(message);
}
break;
case CustomAttachment.CUSTOM_MSG_NOTIFY_H5:
if (baseProtocol.getSecond() == CustomAttachment.CUSTOM_MSG_NOTIFY_H5_SUB_WHOLE_SERVICE) {
NotifyH5Info bean = JSON.parseObject(String.valueOf(baseProtocol.getData()), NotifyH5Info.class);
NotifyH5Attachment notifyH5Attachment = new NotifyH5Attachment(baseProtocol.getSecond());
notifyH5Attachment.setBean(bean);
ChatRoomMessage notifyH5Msg = ChatRoomMessageBuilder.createChatRoomCustomMessage(
String.valueOf(AvRoomDataManager.get().getRoomId()), notifyH5Attachment);
IMNetEaseManager.get().getChatRoomEventObservable()
.onNext(new RoomEvent()
.setEvent(RoomEvent.NOTIFY_H5)
.setChatRoomMessage(notifyH5Msg));
}
break;
case CUSTOM_MSG_LUCKY_SEA://星级厨房
if (baseProtocol.getSecond() == CUSTOM_MSG_LUCKY_SEA_GIFT_SERVER_ALL) {
RoomLuckySeaAttachment attachment = new RoomLuckySeaAttachment(CUSTOM_MSG_LUCKY_SEA, CUSTOM_MSG_LUCKY_SEA_GIFT_SERVER_ALL);
attachment.setRoomLuckySeaMsgBean(JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomLuckySeaMsgBean.class));
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
IMNetEaseManager.get().addMessages(message);
IMNetEaseManager.get().noticeRoomEvent(message, RoomEvent.LUCKY_SEA_GIFT_SERVER_NOTIFY);
}
break;
case CUSTOM_MSG_CRAZY_ZOO://疯狂动物园
if (baseProtocol.getSecond() == CUSTOM_MSG_CRAZY_ZOO_SUB_ALL_ROOM) {
RoomLuckySeaAttachment attachment = new RoomLuckySeaAttachment(CUSTOM_MSG_CRAZY_ZOO, CUSTOM_MSG_CRAZY_ZOO_SUB_ALL_ROOM);
attachment.setRoomLuckySeaMsgBean(JSON.parseObject(String.valueOf(baseProtocol.getData()), RoomLuckySeaMsgBean.class));
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
IMNetEaseManager.get().noticeRoomEvent(message, RoomEvent.CRAZY_ZOO_ALL_ROOM_NOTIFY);
}
break;
case CUSTOM_MSG_TEMPLATE_NOTIFY://通用飘屏
if (baseProtocol.getSecond() == CUSTOM_MSG_TEMPLATE_NOTIFY_ALL) {
RoomTemplateNotifyAttachment attachment = new RoomTemplateNotifyAttachment(CUSTOM_MSG_TEMPLATE_NOTIFY, CUSTOM_MSG_TEMPLATE_NOTIFY_ALL);
attachment.setMsgBean(new Gson().fromJson(String.valueOf(baseProtocol.getData()), RoomTemplateNotifyMsgBean.class));
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
IMNetEaseManager.get().noticeRoomEvent(message, RoomEvent.TEMPLATE_NOTIFY);
}
break;
case CUSTOM_MSG_LUCKY_GIFT://福袋
if (baseProtocol.getSecond() == CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY || baseProtocol.getSecond() == CUSTOM_MSG_LUCKY_GIFT_SERVER_ALL) {
RoomReceivedLuckyGiftAttachment attachment = new RoomReceivedLuckyGiftAttachment(CUSTOM_MSG_LUCKY_GIFT_SERVER_NOTIFY);
attachment.setLuckyBagNoticeInfo(JSON.parseObject(String.valueOf(baseProtocol.getData()), LuckyBagNoticeInfo.class));
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
@@ -1209,6 +1317,14 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
IMNetEaseManager.get().addMessages(message);
}
break;
case CUSTOM_MSG_FAIRY://夺宝精灵
if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_DRAW_GIFT_L5) {
FairyMsgAttachment attachment = new FairyMsgAttachment(CUSTOM_MSG_FAIRY, CUSTOM_MSG_SUB_DRAW_GIFT_L5);
attachment.setFairyMsgInfo(JSON.parseObject(String.valueOf(baseProtocol.getData()), FairyMsgInfoBean.class));
ChatRoomMessage message = ChatRoomMessageBuilder.createChatRoomCustomMessage(String.valueOf(AvRoomDataManager.get().getRoomId()), attachment);
IMNetEaseManager.get().noticeRoomEvent(message, RoomEvent.FAIRY_DRAW_GIFT_L5);
}
break;
case CUSTOM_MSG_ROOM_PK:
if (baseProtocol.getSecond() == CUSTOM_MSG_SUB_ROOM_PK_NOTIFY) {
RoomPKAttachment attachment = new RoomPKAttachment(CUSTOM_MSG_SUB_ROOM_PK_NOTIFY);
@@ -1222,9 +1338,24 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
}
public boolean isShowingGiftNotify() {
if (giftDialog != null && giftDialog.isShowing()) {
return true;
} else {
return false;
}
}
private void showGiftDialog() {
if (!isValid()) return;
if (giftList == null) return;
if (giftList.size() == 0) return;
giftDialog = generateAllServiceGiftDialog(this, giftList.peekFirst());
AllServiceGiftProtocol.DataBean data = giftList.peekFirst();
if (data == null) return;
if (giftDialog != null && giftDialog.isShowing()) {
return;
}
giftDialog = generateAllServiceGiftDialog(this, data);
giftDialog.setOnDismissListener(dialog -> {
giftList.pollFirst();
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
@@ -1239,30 +1370,16 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftDialog.show();
}
private AllServiceGiftDialog generateAllServiceGiftDialog(Context context, AllServiceGiftProtocol.DataBean dataBean) {
switch (JavaUtil.str2int(dataBean.getLevelNum())) {
default:
case AllServiceGiftDialog.ALL_SERVICE_GIFT_LEVEL_1:
return new AllServiceGiftLevelOneDialog(context, dataBean);
case AllServiceGiftDialog.ALL_SERVICE_GIFT_LEVEL_2:
return new AllServiceGiftLevelTwoDialog(context, dataBean);
case AllServiceGiftDialog.ALL_SERVICE_GIFT_LEVEL_3:
return new AllServiceGiftLevelThreeDialog(context, dataBean);
}
private AllServiceGiftLevelDialog generateAllServiceGiftDialog(@NonNull Context context, @NonNull AllServiceGiftProtocol.DataBean dataBean) {
return new AllServiceGiftLevelDialog(context, dataBean);
}
@Override
protected void onPause() {
super.onPause();
registerGiftBroadcastMessage(false);
isResume = false;
}
private void handlePmExitRoom() {
EventBus.getDefault().post(new PmDismissAllLimitDialogEvent());
getMvpPresenter().exitRoom();
@@ -1281,6 +1398,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
this::handlePmExitRoom);
}
@Override
public void showNewUserDialog(GiftInfo giftInfo) {
new NewUserGiftDialog(giftInfo).show(this);
}
@Override
public void showFirstChargeDialog(FirstChargeInfo firstChargeInfo) {
Single.timer(firstChargeInfo.getShowAfterSecond() * 1000L, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
@@ -1303,6 +1425,30 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
getLimitEnterRoomHelper().handleThisContext(this, event.getData(), true, this::handlePmExitRoom);
}
@Nullable
@Override
public Activity getActivity() {
return this;
}
@Nullable
@Override
public RoomContext getRoomContext() {
return RoomContext.Companion.get();
}
@NonNull
@Override
public LifecycleOwner getLifecycleOwner() {
return this;
}
@Nullable
@Override
public RoomWidget findWidget(@NonNull String name) {
return null;
}
private static class GiftBroadcastObserver implements Observer<BroadcastMessage> {
private WeakReference<AVRoomActivity> mReference;
@@ -1316,24 +1462,64 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
String contentStr = broadcastMessage.getContent();
Logger.i(ResUtil.getString(R.string.avroom_activity_avroomactivity_014) + contentStr);
if (TextUtils.isEmpty(contentStr)) return;
AVRoomActivity activity = mReference.get();
if (activity == null) return;
if (activity.isValid()) {
JSONObject jsonObject;
try {
jsonObject = JSON.parseObject(contentStr);
} catch (Exception e) {
jsonObject = null;
}
if (jsonObject == null) return;
if (jsonObject.containsKey("body")) {
String body = jsonObject.getString("body");
if (TextUtils.isEmpty(body)) return;
activity.onReceivedGiftBroadcastMessage(body);
try {
AVRoomActivity activity = mReference.get();
if (activity == null) return;
if (activity.isValid()) {
JSONObject jsonObject;
try {
jsonObject = JSON.parseObject(contentStr);
} catch (Exception e) {
jsonObject = null;
}
if (jsonObject == null) return;
if (jsonObject.containsKey("body")) {
String body = jsonObject.getString("body");
if (TextUtils.isEmpty(body)) return;
activity.onReceivedGiftBroadcastMessage(body);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
@Override
protected void onReceiveChatRoomEvent(RoomEvent roomEvent) {
super.onReceiveChatRoomEvent(roomEvent);
switch (roomEvent.getEvent()) {
case RoomEvent.UP_MIC:
case RoomEvent.DOWN_MIC:
resetViewPagerInputEnabled();
break;
}
}
/**
* 禁用VP滑动
*/
private void disableViewPagerInput() {
this.viewPagerInputDisable = true;
resetViewPagerInputEnabled();
}
private void tryEnabledViewPagerInput() {
this.viewPagerInputDisable = false;
resetViewPagerInputEnabled();
}
private void resetViewPagerInputEnabled() {
if (viewPagerInputDisable) {
viewpager.setUserInputEnabled(false);
} else {
if (AvRoomDataManager.get().isSingleRoom() && !AvRoomDataManager.get().isOwnerOnMic()) {
// 个播+没在麦位=可以滑动
viewpager.setUserInputEnabled(true);
} else {
viewpager.setUserInputEnabled(false);
}
}
}
}

View File

@@ -21,6 +21,7 @@ import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.noble.NobleResourceType;
import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember;
import com.yizhuan.xchat_android_core.room.bean.RoomOnlineUserBean;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.ListUtils;
@@ -107,10 +108,11 @@ public class RoomInviteActivity extends BaseMvpActivity<IRoomInviteView, RoomInv
}
@Override
public void onRequestChatMemberByPageSuccess(List<OnlineChatMember> memberList, int page) {
public void onRequestRoomOnlineListSuccess(List<RoomOnlineUserBean> list) {
}
@Override
public void onRequestChatMemberByPageFail(String errorStr, int page) {
mPage = page;

View File

@@ -0,0 +1,95 @@
package com.yizhuan.erban.avroom.activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.fragment.RoomCharmListFragment;
import com.yizhuan.erban.avroom.fragment.RoomContributeListFragment;
import com.yizhuan.erban.base.BaseBindingActivity;
import com.yizhuan.erban.databinding.ActivityRoomRankListBinding;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
import java.util.ArrayList;
import java.util.List;
/**
* 房间排行榜,(魅力榜+贡献榜)
*/
@ActLayoutRes(R.layout.activity_room_rank_list)
public class RoomRankListActivity extends BaseBindingActivity<ActivityRoomRankListBinding> {
public static void start(Context context) {
Intent intent = new Intent(context, RoomRankListActivity.class);
context.startActivity(intent);
}
private String [] bgPicture = new String[]{""};
@Override
protected void init() {
mBinding.setClick(this);
List<Fragment> list = new ArrayList<>();
list.add(RoomCharmListFragment.newInstance());
list.add(new RoomContributeListFragment());
mBinding.viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
});
mBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mBinding.setPosition(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
AVRoomActivity.setBackBg(this, AvRoomDataManager.get().mCurrentRoomInfo, mBinding.svgaImageViewBg, bgPicture);
}
@Override
public void onClick(View v) {
super.onClick(v);
switch (v.getId()) {
case R.id.iv_back:
finish();
break;
case R.id.tv_charm_tab:
mBinding.viewPager.setCurrentItem(0);
break;
case R.id.tv_contribute_tab:
mBinding.viewPager.setCurrentItem(1);
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mBinding.svgaImageViewBg.isAnimating()) {
mBinding.svgaImageViewBg.clearAnimation();
}
}
}

View File

@@ -0,0 +1,48 @@
package com.yizhuan.erban.avroom.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.yizhuan.erban.R;
import com.yizhuan.xchat_android_library.list.BaseGroupItem;
import com.yizhuan.xchat_android_library.list.ViewHolder;
/**
* Created by chenran on 2017/8/9.
*/
public class AuctionListHeaderItem extends BaseGroupItem{
public AuctionListHeaderItem(Context context, int viewType) {
super(context, viewType);
}
@Override
public ViewHolder createViewHolder(ViewGroup group) {
View view = LayoutInflater.from(getContext()).inflate(R.layout.list_item_auction_header, null);
AuctionListHeaderItem.AuctionListHeaderHolder holder = new AuctionListHeaderItem.AuctionListHeaderHolder(view);
return holder;
}
@Override
public void updateHolder(ViewHolder holder, int groupPos, int childPos) {
AuctionListHeaderItem.AuctionListHeaderHolder auctionListHolder = (AuctionListHeaderItem.AuctionListHeaderHolder) holder;
if (auctionListHolder != null) {
if (getViewType() == AuctionListAdapter.VIEW_TYPE_WEEK_HEADER) {
auctionListHolder.image.setImageResource(R.drawable.icon_week_auction_list);
} else {
auctionListHolder.image.setImageResource(R.drawable.icon_total_auction_list);
}
}
}
private static class AuctionListHeaderHolder extends ViewHolder {
private ImageView image;
public AuctionListHeaderHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.auction_list_header);
}
}
}

View File

@@ -60,7 +60,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
protected static final int TYPE_BOSS = 1;
protected static final int TYPE_NORMAL = 0;
protected static final int TYPE_INVALID = -2;
protected OnMicroItemClickListener onMicroItemClickListener;
protected OnMicroItemClickListener onMicroItemClickListener = null;
protected Context context;
public BaseMicroViewAdapter(Context context) {
@@ -527,7 +527,7 @@ public abstract class BaseMicroViewAdapter extends RecyclerView.Adapter<Recycler
/**
* 主席位特有
*/
FrameLayout frTitle;
View frTitle;
TextView tvRoomDesc;
ImageView ivTag;
TextView tvLabelLeaveMode;

View File

@@ -100,17 +100,13 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
) {
tvSelectedStatus.text =
if (AvRoomDataManager.get().isDatingVipMic(it.selectMicPosition)
) ResUtil.getString(R.string.avroom_adapter_datingmicroviewadapter_01) else "${
context.getString(
R.string.micro_select
)
}${it.selectMicPosition + 1}${context.getString(R.string.micro_number)}"
) ResUtil.getString(R.string.avroom_adapter_datingmicroviewadapter_01) else "${it.selectMicPosition + 1}"
} else {
tvSelectedStatus.text = context.getString(R.string.micro_have_select)
tvSelectedStatus.text = "已選擇"
}
} else {
tvSelectedStatus.isSelected = false
tvSelectedStatus.text = context.getString(R.string.micro_no_select)
tvSelectedStatus.text = "未選擇"
}
}
@@ -132,8 +128,7 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
if (AvRoomDataManager.POSITION_VIP_MIC == position) {
tvNick.text = ""
} else if (position != -1) {
tvNick.text = "${context.getString(R.string.micro_number)}${if (manMicro) context.getString(
R.string.god) else context.getString(R.string.goddess)}${context.getString(R.string.place)}"
tvNick.text = "${if (manMicro) "男神" else "女神"}"
}
}
@@ -150,7 +145,7 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
super.bind(info, position)
if (info.mChatRoomMember == null) {
tvNick.alpha = 1f
tvNick.text = context.getString(R.string.micro_compere)
tvNick.text = "主持人"
ivVipWear.isVisible = false
} else {
if (info.mChatRoomMember.isVipMic) {

View File

@@ -12,27 +12,20 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.netease.nim.uikit.impl.cache.NimUserInfoCache;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.uinfo.constant.GenderEnum;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.NobleAvatarView;
import com.yizhuan.erban.utils.NamePlateHelper;
import com.yizhuan.erban.utils.RegexUtil;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.level.UserLevelResourceType;
import com.yizhuan.xchat_android_core.level.UserLevelVo;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.noble.NobleResourceType;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomOnlineUserBean;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import java.util.List;
import io.reactivex.disposables.Disposable;
/**
@@ -41,19 +34,17 @@ import io.reactivex.disposables.Disposable;
* @author Administrator
* @date 2017/12/4
*/
public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMember, BaseViewHolder> {
public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<RoomOnlineUserBean, BaseViewHolder> {
private boolean mIsHomeParty;
private Disposable mDisposable;
private Context context;
private OnRoomOnlineNumberChangeListener mListener;
public OnlineUserAdapter(Context context, boolean isHomeParty) {
super(null);
addItemType(OnlineChatMember.NORMAL, R.layout.list_item_online_user);
addItemType(OnlineChatMember.NOBLE, R.layout.list_item_online_user_mystery);
addItemType(RoomOnlineUserBean.NORMAL, R.layout.list_item_online_user);
addItemType(RoomOnlineUserBean.NOBLE, R.layout.list_item_online_user_mystery);
mIsHomeParty = isHomeParty;
this.context = context;
}
@Override
@@ -63,147 +54,76 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
if (onlineChatMember != null && onlineChatMember.chatRoomMember != null) {
if (onlineChatMember.getItemType() == OnlineChatMember.NORMAL) {
setNormalData(baseViewHolder, onlineChatMember);
} else {
setMysteryData();
}
protected void convert(@NonNull BaseViewHolder helper, RoomOnlineUserBean item) {
if (item.getItemType() == OnlineChatMember.NOBLE) {
return;
}
// 性别
final ImageView sexImage = helper.getView(R.id.sex);
if (item.getGender() == 1) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (item.getGender() == 2) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
private void setMysteryData() {
//do nothing
}
// 昵称
helper.setText(R.id.nick, RegexUtil.getPrintableString(item.getNick()));
private void setNormalData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
setSexData(baseViewHolder, onlineChatMember);
ImageView roomOnlineTag = baseViewHolder.getView(R.id.room_online_tag);
ImageView managerLogo = baseViewHolder.getView(R.id.manager_logo);
roomOnlineTag.setVisibility(onlineChatMember.isOnMic ? View.VISIBLE : View.GONE);
managerLogo.setVisibility((onlineChatMember.isAdmin || onlineChatMember.isRoomOwer)
? View.VISIBLE : View.GONE);
managerLogo.setImageResource(onlineChatMember.isAdmin ? R.drawable.icon_admin_logo
: R.drawable.icon_user_list_room_ownner);
baseViewHolder.setText(R.id.nick, RegexUtil.getPrintableString(onlineChatMember.chatRoomMember.getNick()));
NobleAvatarView nobleAvatarView = baseViewHolder.getView(R.id.noble_avatar_view);
// 头像
NobleAvatarView nobleAvatarView = helper.getView(R.id.noble_avatar_view);
nobleAvatarView.setSize(37, 54, 0);
nobleAvatarView.setData(onlineChatMember.chatRoomMember);
nobleAvatarView.setData(item);
// 官字
baseViewHolder.getView(R.id.iv_user_official).setVisibility(onlineChatMember.isOfficial() ? View.VISIBLE : View.GONE);
helper.getView(R.id.iv_user_official).setVisibility(item.isOfficial() ? View.VISIBLE : View.GONE);
// 管理
ImageView ivManager = helper.getView(R.id.manager_logo);
if (item.getMemberType() != null && item.getMemberType().equals("MANAGER")) {
ivManager.setVisibility(View.VISIBLE);
ivManager.setImageResource(R.drawable.icon_admin_logo);
} else if (item.getMemberType() != null && item.getMemberType().equals("CREATOR")) {
ivManager.setVisibility(View.VISIBLE);
ivManager.setImageResource(R.drawable.icon_user_list_room_ownner);
} else {
ivManager.setVisibility(View.GONE);
}
// 在麦
ImageView ivMic = helper.getView(R.id.room_online_tag);
ivMic.setVisibility(item.isInMic() ? View.VISIBLE : View.GONE);
//等级
UserLevelVo levelVo = item.getUserLevelVo();
String experLevelUrl = null;
String charmLevelUrl = null;
if (levelVo != null) {
experLevelUrl = levelVo.getExperUrl();
charmLevelUrl = levelVo.getCharmUrl();
}
//经验等级
AppCompatImageView ivUserExper = baseViewHolder.getView(R.id.iv_user_exper);
String experLevelUrl = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, onlineChatMember.chatRoomMember);
AppCompatImageView ivUserExper = helper.getView(R.id.iv_user_exper);
boolean isExperLevelUrlEmpty = TextUtils.isEmpty(experLevelUrl);
ivUserExper.setVisibility(!isExperLevelUrlEmpty ? View.VISIBLE : View.GONE);
if (!isExperLevelUrlEmpty) {
ImageLoadUtils.loadImage(mContext, experLevelUrl, ivUserExper);
}
//魅力等级
AppCompatImageView ivUserCharm = baseViewHolder.getView(R.id.iv_user_charm);
String charmLevelUrl = NobleUtil.getLevel(UserLevelResourceType.CHARM_URL, onlineChatMember.chatRoomMember);
AppCompatImageView ivUserCharm = helper.getView(R.id.iv_user_charm);
boolean isCharmLevelUrlEmpty = TextUtils.isEmpty(charmLevelUrl);
ivUserCharm.setVisibility(!isCharmLevelUrlEmpty ? View.VISIBLE : View.GONE);
if (!isCharmLevelUrlEmpty) {
ImageLoadUtils.loadImage(mContext, charmLevelUrl, ivUserCharm);
}
// 官方主播铭牌标识
String fixWord = NobleUtil.getLevel(UserInfo.OAC_NAME, onlineChatMember.chatRoomMember);
String iconPic = NobleUtil.getLevel(UserInfo.OAC_ICON, onlineChatMember.chatRoomMember);
View inOfficialMask = baseViewHolder.getView(R.id.in_official_mask);
if (!TextUtils.isEmpty(fixWord) && !TextUtils.isEmpty(iconPic)) {
inOfficialMask.setVisibility(View.VISIBLE);
TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask);
if (tvOfficialMask != null) {
tvOfficialMask.setText(fixWord);
}
ImageView ivOfficialMask = inOfficialMask.findViewById(R.id.iv_official_mask);
if (ivOfficialMask != null) {
ImageLoadUtils.loadImage(mContext, iconPic, ivOfficialMask);
}
} else {
inOfficialMask.setVisibility(View.GONE);
}
// 铭牌
String namePlateWord = NobleUtil.getLevel(UserInfo.NAMEPLATE_WORD, onlineChatMember.chatRoomMember);
String namePlatePic = NobleUtil.getLevel(UserInfo.NAMEPLATE_PIC, onlineChatMember.chatRoomMember);
View inNamePlate = baseViewHolder.getView(R.id.in_nameplate);
if (!TextUtils.isEmpty(namePlateWord) && !TextUtils.isEmpty(namePlatePic)) {
inNamePlate.setVisibility(View.VISIBLE);
TextView tvNamePlate = inNamePlate.findViewById(R.id.tv_official_mask);
if (tvNamePlate != null) {
tvNamePlate.setText(namePlateWord);
}
ImageView ivNamePlate = inNamePlate.findViewById(R.id.iv_official_mask);
if (ivNamePlate != null) {
ImageLoadUtils.loadImage(mContext, namePlatePic, ivNamePlate);
}
} else {
inNamePlate.setVisibility(View.GONE);
}
AppCompatImageView ivUserLevel = baseViewHolder.getView(R.id.iv_noble_level);
String resource = (String) NobleUtil.getResource(NobleResourceType.KEY_BADGE, onlineChatMember.chatRoomMember);
if (TextUtils.isEmpty(resource)) {
ivUserLevel.setVisibility(View.GONE);
return;
}
ivUserLevel.setVisibility(View.VISIBLE);
NobleUtil.loadResource(resource, ivUserLevel);
}
private void setSexData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) {
final ImageView sexImage = baseViewHolder.getView(R.id.sex);
String gender = NobleUtil.getLevel(UserInfo.GENDER, onlineChatMember.chatRoomMember);
if ("1".equals(gender)) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if ("2".equals(gender)) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
NimUserInfo nimUserInfo = NimUserInfoCache.getInstance().getUserInfo(onlineChatMember.chatRoomMember.getAccount());
if (nimUserInfo == null) {
NimUserInfoCache.getInstance().getUserInfoFromRemote(onlineChatMember.chatRoomMember.getAccount(),
new RequestCallbackWrapper<NimUserInfo>() {
@Override
public void onResult(int i, NimUserInfo nimUserInfo, Throwable throwable) {
if (nimUserInfo != null) {
if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
}
});
} else {
if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_male);
} else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) {
sexImage.setVisibility(View.VISIBLE);
sexImage.setImageResource(R.drawable.ic_gender_female);
} else {
sexImage.setVisibility(View.GONE);
}
}
}
View inNamePlate = helper.getView(R.id.in_nameplate);
NamePlateHelper.INSTANCE.load(inNamePlate, inNamePlate.findViewById(R.id.tv_official_mask), inNamePlate.findViewById(R.id.iv_official_mask), item);
}
private void registerRoomEvent() {
@@ -240,7 +160,7 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
updateMemberIn(roomEvent);
} else if (event == RoomEvent.ROOM_MEMBER_EXIT) {
if (mListener != null) {
mListener.onMemberExit(roomEvent.getAccount(), mData);
mListener.onMemberExit(roomEvent.getAccount());
}
}
});
@@ -248,19 +168,19 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
private void updateMemberIn(RoomEvent roomEvent) {
if (mListener != null) {
mListener.onMemberIn(roomEvent.getAccount(), mData);
mListener.onMemberIn(roomEvent.getAccount());
}
}
private void updateManager(RoomEvent roomEvent) {
if (mListener != null)
mListener.onUpdateMemberManager(roomEvent.getAccount(),
roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE, mData);
roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE);
}
private void updateDownUpMic(String account, boolean isUpMic) {
if (mListener != null) {
mListener.onMemberDownUpMic(account, isUpMic, mData);
mListener.onMemberDownUpMic(account, isUpMic);
}
}
@@ -281,34 +201,29 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter<OnlineChatMembe
*
* @param account
*/
void onMemberIn(String account, List<OnlineChatMember> dataList);
void onMemberIn(String account);
/**
* 成员出去回调
*
* @param account
* @param dataList
*/
void onMemberExit(String account, List<OnlineChatMember> dataList);
void onMemberExit(String account);
/**
* 成员上下麦更新
*
* @param account
* @param isUpMic
* @param dataList
*/
void onMemberDownUpMic(String account, boolean isUpMic,
List<OnlineChatMember> dataList);
void onMemberDownUpMic(String account, boolean isUpMic);
/**
* 设置管理员回调
*
* @param account
* @param dataList
*/
void onUpdateMemberManager(String account, boolean isRemoveManager,
List<OnlineChatMember> dataList);
void onUpdateMemberManager(String account, boolean isRemoveManager);
void addMemberBlack();
}

View File

@@ -39,7 +39,7 @@ class RoomPKBoardView @JvmOverloads constructor(
) : DragLayout(context, attrs, defStyleAttr) {
private val binding = LayoutRoomPkBoardViewBinding.inflate(LayoutInflater.from(context))
private val observer = Observer<RoomPkBean> { updateView(it) }
private val observer = Observer<RoomPkBean?> { updateView(it) }
private var disposable: Disposable? = null
private lateinit var helpPopupWindow: PopupWindow
private var roomPkBean: RoomPkBean? = null

View File

@@ -12,7 +12,7 @@ class RoomPKSearchAdapter :
override fun convert(helper: BaseViewHolder, item: SimpleRoomInfo) {
helper.setText(R.id.tv_room_title,item.title.subAndReplaceDot(7))
.setText(R.id.tv_room_id,"${mContext.getString(R.string.peko_number)}${item.erbanNo}")
.setText(R.id.tv_room_id,"Piko号:${item.erbanNo}")
.setChecked(R.id.check_box,item.checked)
ImageLoadUtils.loadImage(mContext,item.avatar,helper.getView(R.id.iv_avatar))
helper.addOnClickListener(R.id.iv_avatar,R.id.check_box)

View File

@@ -30,71 +30,71 @@ class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding.tvTitleRed.text = roomPkBean.cTitle.subAndReplaceDot(7)
binding.tvValueRed.text = "${roomPkBean.cAmount}"
binding.ivRedWin.isVisible = roomPkBean.cUid == roomPkBean.winUid && roomPkBean.winUid != 0L
binding?.ivClose?.setOnClickListener { dismissAllowingStateLoss() }
binding?.tvTitleRed?.text = roomPkBean.cTitle.subAndReplaceDot(7)
binding?.tvValueRed?.text = "${roomPkBean.cAmount}"
binding?.ivRedWin?.isVisible = roomPkBean.cUid == roomPkBean.winUid && roomPkBean.winUid != 0L
ImageLoadUtils.loadImage(
context,
roomPkBean.cAvatar,
binding.ivAvatarRed,
binding?.ivAvatarRed,
R.drawable.default_avatar
)
binding.tvTitleBlue.text = roomPkBean.aTitle.subAndReplaceDot(7)
binding.tvValueBlue.text = "${roomPkBean.aAmount}"
binding.ivBlueWin.isVisible =
binding?.tvTitleBlue?.text = roomPkBean.aTitle.subAndReplaceDot(7)
binding?.tvValueBlue?.text = "${roomPkBean.aAmount}"
binding?.ivBlueWin?.isVisible =
roomPkBean.cUid != roomPkBean.winUid && roomPkBean.winUid != 0L
ImageLoadUtils.loadImage(
context,
roomPkBean.aAvatar,
binding.ivAvatarBlue,
binding?.ivAvatarBlue,
R.drawable.default_avatar
)
roomPkBean.csRank.getOrNull(0)?.let {
binding.tvNickContribute.text = it.nick.subAndReplaceDot(7)
binding.tvValueContribute.text = "${getString(R.string.divine_value)}${it.amount}"
binding?.tvNickContribute?.text = it.nick.subAndReplaceDot(7)
binding?.tvValueContribute?.text = "神豪值:${it.amount}"
ImageLoadUtils.loadImage(
context,
it.avatar,
binding.ivAvatarContribute,
binding?.ivAvatarContribute,
R.drawable.default_avatar
)
}
roomPkBean.crRank.getOrNull(0)?.let {
binding.tvNickCharm.text = it.nick.subAndReplaceDot(7)
binding.tvValueCharm.text = "${getString(R.string.charm_value)}${it.amount}"
binding?.tvNickCharm?.text = it.nick.subAndReplaceDot(7)
binding?.tvValueCharm?.text = "魅力值:${it.amount}"
ImageLoadUtils.loadImage(
context,
it.avatar,
binding.ivAvatarCharm,
binding?.ivAvatarCharm,
R.drawable.default_avatar
)
}
when (roomPkBean.winUid) {
0L -> {
binding.viewBg.setBackgroundResource(R.drawable.bg_719cea_radius_10)
binding.clRoot.setBackgroundResource(R.drawable.bg_room_pk_finish_deuce)
binding.viewContribute.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_deuce)
binding.viewCharm.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_deuce)
binding.ivClose.setImageResource(R.drawable.ic_room_pk_finish_close_deuce)
binding?.viewBg?.setBackgroundResource(R.drawable.bg_719cea_radius_10)
binding?.clRoot?.setBackgroundResource(R.drawable.bg_room_pk_finish_deuce)
binding?.viewContribute?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_deuce)
binding?.viewCharm?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_deuce)
binding?.ivClose?.setImageResource(R.drawable.ic_room_pk_finish_close_deuce)
}
roomPkBean.cUid -> {
binding.viewBg.setBackgroundResource(R.drawable.bg_edbf89_radius_10)
binding.clRoot.setBackgroundResource(R.drawable.bg_room_pk_finish_win)
binding.viewContribute.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_win)
binding.viewCharm.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_win)
binding.ivClose.setImageResource(R.drawable.ic_room_pk_finish_close_win)
binding?.viewBg?.setBackgroundResource(R.drawable.bg_edbf89_radius_10)
binding?.clRoot?.setBackgroundResource(R.drawable.bg_room_pk_finish_win)
binding?.viewContribute?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_win)
binding?.viewCharm?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_win)
binding?.ivClose?.setImageResource(R.drawable.ic_room_pk_finish_close_win)
}
else -> {
binding.viewBg.setBackgroundResource(R.drawable.bg_bfabf6_radius_10)
binding.clRoot.setBackgroundResource(R.drawable.bg_room_pk_finish_failed)
binding.viewContribute.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_failed)
binding.viewCharm.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_failed)
binding.ivClose.setImageResource(R.drawable.ic_room_pk_finish_close_failed)
binding?.viewBg?.setBackgroundResource(R.drawable.bg_bfabf6_radius_10)
binding?.clRoot?.setBackgroundResource(R.drawable.bg_room_pk_finish_failed)
binding?.viewContribute?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_failed)
binding?.viewCharm?.setBackgroundResource(R.drawable.bg_room_pk_finish_rank_failed)
binding?.ivClose?.setImageResource(R.drawable.ic_room_pk_finish_close_failed)
}
}

View File

@@ -29,23 +29,23 @@ class RoomPkForceFinishDialog : BaseDialog<DialogRoomPkForceFinishBinding>() {
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding.tvTitleRed.text = roomPkBean.cTitle.subAndReplaceDot(7)
binding.tvValueRed.text = "${roomPkBean.cAmount}"
binding?.ivClose?.setOnClickListener { dismissAllowingStateLoss() }
binding?.tvTitleRed?.text = roomPkBean.cTitle.subAndReplaceDot(7)
binding?.tvValueRed?.text = "${roomPkBean.cAmount}"
ImageLoadUtils.loadImage(
context,
roomPkBean.cAvatar,
binding.ivAvatarRed,
binding?.ivAvatarRed,
R.drawable.default_avatar
)
binding.tvTitleBlue.text = roomPkBean.aTitle.subAndReplaceDot(7)
binding.tvValueBlue.text = "${roomPkBean.aAmount}"
binding?.tvTitleBlue?.text = roomPkBean.aTitle.subAndReplaceDot(7)
binding?.tvValueBlue?.text = "${roomPkBean.aAmount}"
ImageLoadUtils.loadImage(
context,
roomPkBean.aAvatar,
binding.ivAvatarBlue,
binding?.ivAvatarBlue,
R.drawable.default_avatar
)

View File

@@ -3,7 +3,6 @@ package com.yizhuan.erban.avroom.anotherroompk
import android.annotation.SuppressLint
import android.os.Bundle
import androidx.core.view.isVisible
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogRoomPkReceivedBinding
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
@@ -37,26 +36,26 @@ class RoomPkReceivedDialog : BaseDialog<DialogRoomPkReceivedBinding>() {
@SuppressLint("CheckResult")
override fun init() {
binding.tvNick.text = pkBean.inviteRoomTitle.subAndReplaceDot(7)
binding.tvTime.text = "${pkBean.pkDuration}${getString(R.string.avroom_dialog_pktimepickerdialog_01)}"
binding?.tvNick?.text = pkBean.inviteRoomTitle.subAndReplaceDot(7)
binding?.tvTime?.text = "${pkBean.pkDuration}分鐘"
pkBean.pkDesc.ifNotNullOrEmpty {
binding.tvDescTitle.isVisible = true
binding.tvDesc.isVisible = true
binding.tvDesc.text = it
binding?.tvDescTitle?.isVisible = true
binding?.tvDesc?.isVisible = true
binding?.tvDesc?.text = it
}
disposable = Observable.intervalRange(0, 10, 0, 1, TimeUnit.SECONDS)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete { dismissAllowingStateLoss() }
.subscribe {
binding.tvCloseTime.text = "${10 - it}"
binding?.tvCloseTime?.text = "${10 - it}"
}
binding.tvReceived.setOnClickListener {
binding?.tvReceived?.setOnClickListener {
commit(true)
}
binding.tvRefuse.setOnClickListener {
binding?.tvRefuse?.setOnClickListener {
commit(false)
}
}

View File

@@ -14,6 +14,6 @@ class RoomPkRuleDialog : BaseDialog<DialogRoomPkRuleBinding>() {
}
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding?.ivClose?.setOnClickListener { dismissAllowingStateLoss() }
}
}

View File

@@ -0,0 +1,40 @@
package com.yizhuan.erban.avroom.banner
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.util.Consumer
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.erban.ui.widget.rollviewpager.adapter.StaticPagerAdapter
import com.yizhuan.xchat_android_core.room.bean.RoomIcon
class RoomBannerAdapter(private val mContext: Context, private val data: List<RoomIcon>) :
StaticPagerAdapter() {
var onItemClickListener: Consumer<RoomIcon>? = null
override fun getView(container: ViewGroup, position: Int): View {
val view = LayoutInflater.from(mContext).inflate(R.layout.item_room_act, container, false)
val ivCover = view.findViewById<ImageView>(R.id.iv_cover)
val bannerInfo = data[position]
val actId = bannerInfo.id?.toString()
ivCover.scaleType = ImageView.ScaleType.CENTER_CROP
ImageLoadUtils.loadImage(
mContext,
bannerInfo.icon,
ivCover,
R.drawable.default_cover
)
ivCover.setOnClickListener { v: View? ->
onItemClickListener?.accept(bannerInfo)
}
return view
}
override fun getCount(): Int {
return data.size
}
}

View File

@@ -0,0 +1,194 @@
package com.yizhuan.erban.avroom.banner
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.RelativeLayout
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog
import com.yizhuan.erban.databinding.RoomBannerWidgetBinding
import com.yizhuan.erban.shipantics.PullRadishActivity
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper
import com.yizhuan.erban.treasurefairy.HomeFairyActivity
import com.yizhuan.erban.ui.webview.CommonWebViewActivity
import com.yizhuan.erban.ui.webview.room_banner.RoomBannerWebDialogActivity
import com.yizhuan.erban.ui.webview.room_banner.RoomWebDialogActivity
import com.yizhuan.erban.ui.widget.rollviewpager.Util
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView
import com.yizhuan.erban.utils.CommonJumpHelper
import com.yizhuan.xchat_android_core.room.bean.RoomIcon
import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.support.room.FrameLayoutRoomWidget
import com.yizhuan.xchat_android_core.support.room.RoomContext
import com.yizhuan.xchat_android_core.support.room.RoomView
import okhttp3.internal.filterList
/**
* Created by Max on 2024/2/20 10:42
* Desc:玩法活动
**/
class RoomBannerWidget : FrameLayoutRoomWidget {
private val binding: RoomBannerWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_banner_widget, this, true
)
private var indicatorVisible = false
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
defStyleRes: Int
) : super(context, attrs, defStyleAttr, defStyleRes)
init {
setIndicatorEnabled(true)
}
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
super.onInitialize(roomView, roomContext)
refreshData()
}
fun disabledIndicator() {
setIndicatorEnabled(false)
}
fun refreshData() {
if (RoomContext.get()?.getRoomInfo()?.type == RoomInfo.ROOMTYPE_GAME) {
refreshData(true)
} else {
refreshData(false)
}
}
private fun refreshData(isGameRoom: Boolean) {
val disposable = if (isGameRoom) {
AvRoomModel.get().gameRoomBannerList
} else {
AvRoomModel.get().roomBannerList
}.subscribe { list: List<RoomIcon> ->
loadData(list)
}
getCompositeDisposable().add(disposable)
}
private fun loadData(list: List<RoomIcon>?) {
if (list.isNullOrEmpty()) {
this.isVisible = false
return
}
this.isVisible = true
// 只有一個圖標,隱藏底部指示器
indicatorVisible = list.size > 1
val bannerAdapter = RoomBannerAdapter(context, list)
bannerAdapter.onItemClickListener = androidx.core.util.Consumer<RoomIcon> {
if (it.isSeizeTreasure()) {
HomeFairyActivity.start(context)
} else if (it.isFirstCharge()) {
FirstChargeDialog.start(context)
} else if (it.isFindLove()) {
GoldBoxHelper.handleBoxClick(context)
} else if (it.isNauticalAdventure()) {
PullRadishActivity.start(context)
} else {
AvRoomModel.get().activityClickLog("2", it.id?.toString()).subscribe()
if (it.skipType == 3) {
if (it.tag == RoomIcon.TAG_GAMEPLAY) {
if (it.showType == 2) {
RoomWebDialogActivity.start(context, it.skipContent ?: "", false)
} else {
CommonWebViewActivity.start(context, it.skipContent ?: "")
}
} else {
val newList = list.filterList {
skipType == 3 && tag != RoomIcon.TAG_GAMEPLAY
}
val newPosition = newList.indexOfFirst { item ->
item == it
}
RoomBannerWebDialogActivity.start(context, newPosition, newList)
}
} else {
CommonJumpHelper.bannerJump(context, it)
}
}
}
binding.pagerView.adapter = bannerAdapter
binding.pagerView.setPlayDelay(3000)
//設置透明度
binding.pagerView.setAnimationDurtion(500)
bannerAdapter.notifyDataSetChanged()
val viewPager = binding.pagerView.viewPager
viewPager.offscreenPageLimit = list.size
}
private fun setIndicatorEnabled(isEnabled: Boolean) {
// 模擬指示器在viewpager底部效果
val viewPager = binding.pagerView.viewPager
val layoutParams = viewPager.layoutParams as RelativeLayout.LayoutParams
if (isEnabled) {
layoutParams.setMargins(0, 0, 0, Util.dip2px(context, 7f))
binding.pagerView.setHintView(object : ColorPointHintView(
context, Color.WHITE, ContextCompat.getColor(
context,
R.color.color_66FFFFFF
)
) {
override fun makeFocusDrawable(): Drawable? {
val dotFocus = GradientDrawable()
dotFocus.setColor(Color.WHITE)
dotFocus.cornerRadius = Util.dip2px(
context, 2f
).toFloat()
dotFocus.setSize(
Util.dip2px(context, 9f), Util.dip2px(
context, 4f
)
)
return if (indicatorVisible) dotFocus else null
}
override fun makeNormalDrawable(): Drawable? {
val dotNormal = GradientDrawable()
dotNormal.setColor(ContextCompat.getColor(context, R.color.color_66FFFFFF))
dotNormal.cornerRadius = Util.dip2px(
context, 2f
).toFloat()
dotNormal.setSize(
Util.dip2px(context, 4f), Util.dip2px(
context, 4f
)
)
return if (indicatorVisible) dotNormal else null
}
})
} else {
layoutParams.setMargins(0, 0, 0, 0)
binding.pagerView.setHintView(null)
}
viewPager.layoutParams = layoutParams
}
}

View File

@@ -0,0 +1,14 @@
package com.yizhuan.erban.avroom.bean
data class RoomAlbumPhotoInfo(
val giftId: Int,
val giftNum: Int,
val giftUrl: String,
val id: Int,
val photoUrl: String,
val roomUid: Int,
val status: Int,
val totalGoldPrice: Int,
val type: Int,
val uid: Int
)

View File

@@ -0,0 +1,8 @@
package com.yizhuan.erban.avroom.bean
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
data class RoomPlayBean(
val event: Int,
val chatRoomMessage: ChatRoomMessage
)

View File

@@ -0,0 +1,19 @@
package com.yizhuan.erban.avroom.core
import com.yizhuan.erban.avroom.redpackage.RedPackageHandler
import com.yizhuan.xchat_android_core.support.room.RoomAbility
import com.yizhuan.xchat_android_core.support.room.RoomContext
/**
* Created by Max on 2023/10/26 15:41
* Desc:语音房
* @param roomId roomUid
**/
class AudioRoomContext(roomId: Long) : RoomContext(roomId) {
override fun loadAbility(list: MutableMap<String, RoomAbility>) {
super.loadAbility(list)
// 红包处理器
list[RedPackageHandler::class.java.simpleName] = RedPackageHandler()
}
}

View File

@@ -33,10 +33,10 @@ class CreateGameRoomDialog : BaseDialog<DialogCreateGameRoomBinding>() {
@SuppressLint("CheckResult")
override fun init() {
binding.rvGame.itemAnimator = null
binding?.rvGame?.itemAnimator = null
rvDelegate = RVDelegate.Builder<GameInfo>()
.setAdapter(gameAdapter)
.setRecyclerView(binding.rvGame)
.setRecyclerView(binding?.rvGame)
.setLayoutManager(GridLayoutManager(context, 2))
.build()
@@ -48,7 +48,7 @@ class CreateGameRoomDialog : BaseDialog<DialogCreateGameRoomBinding>() {
)
}
binding.ivClose.setOnClickListener {
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}

View File

@@ -33,14 +33,14 @@ class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {
@SuppressLint("CheckResult")
override fun init() {
if(isHomeGame){
binding.tvPlayType.isVisible = false
binding.rgType.isVisible = false
binding.rvGame.isVisible = true
binding?.tvPlayType?.isVisible = false
binding?.rgType?.isVisible = false
binding?.rvGame?.isVisible = true
}
binding.rvGame.itemAnimator = null
binding?.rvGame?.itemAnimator = null
rvDelegate = RVDelegate.Builder<GameInfo>()
.setAdapter(gameAdapter)
.setRecyclerView(binding.rvGame)
.setRecyclerView(binding?.rvGame)
.setLayoutManager(LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false))
.build()
@@ -55,22 +55,22 @@ class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {
checkCreateEnable()
}
binding.rbGameRoom.setOnCheckedChangeListener { _, isChecked ->
binding?.rbGameRoom?.setOnCheckedChangeListener { _, isChecked ->
checkCreateEnable()
if (isChecked) {
binding.rvGame.isVisible = true
binding?.rvGame?.isVisible = true
}
}
binding.rbPartyRoom.setOnCheckedChangeListener { _, isChecked ->
binding?.rbPartyRoom?.setOnCheckedChangeListener { _, isChecked ->
checkCreateEnable()
if (isChecked) {
binding.rvGame.isInvisible = true
binding?.rvGame?.isInvisible = true
}
}
binding.tvCreate.setOnClickListener {
binding?.tvCreate?.setOnClickListener {
dismissAllowingStateLoss()
if (binding.rbPartyRoom.isChecked) {
if (binding?.rbPartyRoom?.isChecked == true) {
OpenRoomHelper.openHomePartyRoom(requireActivity() as BaseActivity)
} else {
if (selectIndex != -1) {
@@ -84,7 +84,7 @@ class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {
}
}
binding.ivClose.setOnClickListener {
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}
@@ -105,10 +105,10 @@ class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {
private fun checkCreateEnable() {
if(isHomeGame){
binding.tvCreate.isEnabled = selectIndex != -1
binding?.tvCreate?.isEnabled = selectIndex != -1
}else {
binding.tvCreate.isEnabled = binding.rbPartyRoom.isChecked ||
(binding.rbGameRoom.isChecked && selectIndex != -1)
binding?.tvCreate?.isEnabled = binding?.rbPartyRoom?.isChecked == true ||
(binding?.rbGameRoom?.isChecked == true && selectIndex != -1)
}
}
}

View File

@@ -0,0 +1,19 @@
package com.yizhuan.erban.avroom.dialog
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogNewUserGiftBinding
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo
class NewUserGiftDialog(val giftInfo: GiftInfo) :
BaseDialog<DialogNewUserGiftBinding>() {
override fun init() {
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}
binding?.ivGift?.load(giftInfo.giftUrl)
binding?.tvGiftName?.text = "${giftInfo.giftName}*${giftInfo.count}"
}
}

View File

@@ -24,13 +24,14 @@ import com.yizhuan.erban.avroom.activity.CreatePKActivity;
import com.yizhuan.erban.avroom.activity.RoomSettingActivity;
import com.yizhuan.erban.avroom.anotherroompk.RoomPKCreateActivity;
import com.yizhuan.erban.avroom.giftvalue.GiftValueDialogUiHelper;
import com.yizhuan.erban.avroom.room_album.RoomAlbumActivity;
import com.yizhuan.erban.avroom.singleroompk.SingleRoomPKCreateActivity;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.erban.ui.widget.recyclerview.layoutmanager.FullyGridLayoutManager;
import com.yizhuan.erban.vip.VipBroadcastDialog;
import com.yizhuan.erban.vip.dialog.VipBroadcastDialog;
import com.yizhuan.tutu.room_chat.activity.RoomInviteFansActivity;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.auth.AuthModel;
@@ -112,10 +113,11 @@ public class RoomOperationDialog extends BottomSheetDialog {
true));
rvOPtList.setLayoutManager(new FullyGridLayoutManager(getContext(), 5));
optAdapter = new OptAdapter(context, null);
addRoomAlbum(optAdapter);
addDatingAction(optAdapter);
// addPKAction(optAdapter);
addPKAction(optAdapter);
addRoomPKAction(optAdapter);
// addSingleRoomPKAction(optAdapter);
addSingleRoomPKAction(optAdapter);
addSendBroadcastAction(optAdapter);
// addInviteFansOptAdapter();
addVipSendBroadcastAction(optAdapter);
@@ -123,7 +125,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
addRoomSettingAction(optAdapter);
addGiftEffectAction(optAdapter);
addOpenOrClosePublicScreenAction(optAdapter);
addRedPackageSwitch();
// addRedPackageSwitch();
addCleanScreenAction(optAdapter);
addRoomLimit(optAdapter);
addGiftValueAction(optAdapter);
@@ -267,6 +269,14 @@ public class RoomOperationDialog extends BottomSheetDialog {
}
}
private void addRoomAlbum(OptAdapter optAdapter) {
if (AvRoomDataManager.get().isHasRoomAlbum()) {
optAdapter.addData(new OptAction(R.drawable.ic_room_operation_album, "房间相册", () -> {
RoomAlbumActivity.start(getContext());
}));
}
}
/**
* 相亲 模式
*
@@ -331,7 +341,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
* @param optAdapter
*/
private void addRedPacketAction(OptAdapter optAdapter) {
if (AvRoomDataManager.get().isRedEnvelopeOpen()) {
if (AvRoomDataManager.get().getRedEnvelopeType() > 0) {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) {
return;
@@ -342,7 +352,6 @@ public class RoomOperationDialog extends BottomSheetDialog {
}
}));
}
}
/**
@@ -419,7 +428,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
superAdminModel.roomOperate(SuperAdminModel.CLOSE_PUBLIC_SCREEN).subscribe();
}
AvRoomModel.get().closeScreen(roomInfo.getRoomId(),
!isCloseScreen)
!isCloseScreen)
.compose(RxHelper.bindContext(context))
.flatMap(data -> IMNetEaseManager.get().closeOpenScreen(
data.getRoomId(), data))
@@ -639,7 +648,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
}
optAdapter.addData(new OptAction(R.drawable.icon_room_shield_report,
ResUtil.getString(R.string.me_shield_report),
() ->{
() -> {
DialogManager dialogManager = new DialogManager(context);
List<ButtonItem> buttonItems = new ArrayList<>();
ButtonItem buttonItem1 = new ButtonItem(ResUtil.getString(R.string.me_shield_room), () -> {

View File

@@ -7,7 +7,6 @@ import android.text.Editable
import android.text.style.ForegroundColorSpan
import android.view.WindowManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.adapter.SendBroadcastAdapter
import com.yizhuan.erban.base.BaseActivity
import com.yizhuan.erban.base.BaseDialog
@@ -45,31 +44,31 @@ class SendBroadcastDialog : BaseDialog<DialogSendBroadcastBinding>() {
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding.ivClose.setOnClickListener {
binding?.ivClose?.setOnClickListener {
dismissAllowingStateLoss()
}
adapter = SendBroadcastAdapter()
rvDelegate = RVDelegate.Builder<String>()
.setAdapter(adapter)
.setRecyclerView(binding.rvRecommend)
.setRecyclerView(binding?.rvRecommend)
.setLayoutManager(LinearLayoutManager(context))
.build()
adapter.setOnItemClickListener { _, _, position ->
binding.editContent.setText(adapter.getItem(position))
binding?.editContent?.setText(adapter.getItem(position))
}
binding.editContent.addTextChangedListener(object : TextWatcherWrapper() {
binding?.editContent?.addTextChangedListener(object : TextWatcherWrapper() {
override fun afterTextChanged(editable: Editable?) {
val contentLength = editable?.length ?: 0
binding.tvContentNumLimit.text =
binding?.tvContentNumLimit?.text =
"${contentLength}/${broadcastInfo?.maxWords ?: 20}"
binding.tvSend.isEnabled = contentLength != 0
binding?.tvSend?.isEnabled = contentLength != 0
}
})
binding.tvSend.setOnClickListener {
binding?.tvSend?.setOnClickListener {
if (CommonUtils.isFastDoubleClick(1000)) return@setOnClickListener
sendBroadcast()
}
@@ -91,13 +90,13 @@ class SendBroadcastDialog : BaseDialog<DialogSendBroadcastBinding>() {
private fun initData(info: BroadcastInfo) {
broadcastInfo = info
rvDelegate.setNewData(info.recommends)
binding.tvAvailableCountNum.text = "${info.availableTimes}/${info.total}"
binding.editContent.hint = "${getString(R.string.input_content_cannot_be_less_than)}${info.minWords}${getString(R.string.please_speak_civilized_oh)}"
binding.tvContentNumLimit.text = "0/${info.maxWords}"
binding?.tvAvailableCountNum?.text = "${info.availableTimes}/${info.total}"
binding?.editContent?.hint = "输入内容不能少于${info.minWords}个字,请文明发言哦~"
binding?.tvContentNumLimit?.text = "0/${info.maxWords}"
if (info.seconds > 0) {
beginIntervalTime(info)
} else {
binding.tvSendHint.text = "${getString(R.string.after_the_release)}${info.minutes}${getString(R.string.do_not_broadcast_within_minutes)}"
binding?.tvSendHint?.text = "发布后,${info.minutes}分钟内不可再发布广播"
}
}
@@ -108,15 +107,15 @@ class SendBroadcastDialog : BaseDialog<DialogSendBroadcastBinding>() {
.observeOn(AndroidSchedulers.mainThread())
.compose(bindToLifecycle())
.doOnComplete {
binding.tvSendHint.text = "${getString(R.string.after_the_release)}${info.minutes}${getString(R.string.do_not_broadcast_within_minutes)}"
binding?.tvSendHint?.text = "发布后,${info.minutes}分钟内不可再发布广播"
}
.subscribe {
binding.tvSendHint.text = SpannableBuilder()
binding?.tvSendHint?.text = SpannableBuilder()
.append(
"${info.seconds - it}",
ForegroundColorSpan(Color.parseColor("#FFFDA615"))
)
.append(getString(R.string.you_can_publish_it_again))
.append("后可以再次发布")
.build()
}
}
@@ -124,13 +123,13 @@ class SendBroadcastDialog : BaseDialog<DialogSendBroadcastBinding>() {
@SuppressLint("CheckResult")
private fun sendBroadcast() {
if (broadcastInfo == null) {
getString(R.string.data_loading_please_wait).toast()
"数据加载中,请稍后...".toast()
return
}
broadcastInfo?.let {
val msg = binding.editContent.text
val msg = binding?.editContent?.text
if (msg.isNullOrEmpty() || msg.length < it.minWords) {
"${getString(R.string.the_input_content_cannot_be_less_than)}${it.minWords}${getString(R.string.a_world)}".toast()
"输入内容不能少于${it.minWords}个字!".toast()
return@let
}
val dialogManager = (requireActivity() as BaseActivity).dialogManager
@@ -139,7 +138,7 @@ class SendBroadcastDialog : BaseDialog<DialogSendBroadcastBinding>() {
.compose(bindToLifecycle())
.subscribe(
{
getString(R.string.send_success).toast()
"发送成功".toast()
dialogManager.dismissDialog()
dismissAllowingStateLoss()
},

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