Compare commits

..

33 Commits

Author SHA1 Message Date
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
641 changed files with 5171 additions and 3358 deletions

View File

@@ -4,15 +4,14 @@ apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android'
apply plugin: 'com.tencent.vasdolly'
apply from: '../mob.gradle'
apply plugin: "com.bytedance.android.aabResGuard"
apply plugin: "xml-class-guard"
def onlyArm64 = Boolean.parseBoolean(only_arm64)
android {
compileSdkVersion COMPILE_SDK_VERSION.toInteger()
defaultConfig {
applicationId "app.repo.cam"
applicationId "com.vele.pekolive"
minSdkVersion MIN_SDK_VERSION.toInteger()
targetSdkVersion TARGET_SDK_VERSION.toInteger()
versionCode Integer.valueOf(version_code)
@@ -61,7 +60,7 @@ android {
if (abi == null) {
abi = "universal"
}
outputFileName = "repo_${buildType.name}_v${defaultConfig.versionName}_${abi}_${date}.apk"
outputFileName = "piko_${buildType.name}_v${defaultConfig.versionName}_${defaultConfig.versionCode}_${abi}_${date}.apk"
}
}
@@ -82,13 +81,23 @@ android {
signingConfigs {
v2 {
storeFile file('../repo.jks')
storePassword "repo2023"
keyAlias "repo"
keyPassword "repo2023"
storeFile file('../pekolive.jks')
storePassword "peko2023"
keyAlias "pekolive"
keyPassword "peko2023"
v2SigningEnabled true
v1SigningEnabled true
}
v1 {
storeFile file('../pekolive.jks')
storePassword "peko2023"
keyAlias "pekolive"
keyPassword "peko2023"
v2SigningEnabled false
v1SigningEnabled true
}
}
sourceSets {
@@ -139,7 +148,7 @@ android {
buildTypes {
def server_url_debug = '"http://beta.api.pekolive.com/"'
def server_url_release = '"https://api.repo.cam/"'
def server_url_release = '"https://api.pekolive.com/"'
debug {
println("minifyEnabled = " + minify_enabled)
@@ -294,7 +303,7 @@ dependencies {
implementation 'com.contrarywind:wheelview:4.1.0'
implementation 'tech.sud.mgp:SudMGP-static:1.3.3.1158'
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
}
channel {
@@ -302,7 +311,7 @@ channel {
outputDir = new File(project.buildDir, "channelapk")
//多渠道包的命名规则,默认为:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
def only64 = onlyArm64 ? "-only64" : ""
apkNameFormat = 'repo-${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
@@ -310,143 +319,3 @@ channel {
//低内存模式仅针对V2签名默认为false只把签名块、中央目录和EOCD读取到内存不把最大头的内容块读取到内存在手机上合成APK时可以使用该模式
lowMemory = false
}
aabResGuard {
mappingFile = file("aab-res-guard-mapping.txt").toPath() // Mapping file used for incremental obfuscation
whiteList = [ // White list rules
"*.R.raw.*",
"*.R.drawable.icon",
//谷歌服务
"*.R.string.default_web_client_id",
"*.R.string.firebase_database_url",
"*.R.string.gcm_defaultSenderId",
"*.R.string.google_api_key",
"*.R.string.google_app_id",
"*.R.string.google_crash_reporting_api_key",
"*.R.string.google_storage_bucket",
"*.R.string.project_id",
//所有涉及到 getResources().getIdentifier 对应的资源ID
"*.R.array.a1",
"*.R.string.s1",
"*.R.mipmap.m1",
"*.R.dimen.d1",
"*.R.integer.int1",
//Firebase Crashlytics
"*.R.string.com.crashlytics.*",
"*.R.bool.com.crashlytics.useFirebaseAppId",
"*.R.string.com.crashlytics.useFirebaseAppId",
"*.R.bool.com.crashlytics.CollectDeviceIdentifiers",
"*.R.string.com.crashlytics.CollectDeviceIdentifiers",
"*.R.bool.com.crashlytics.CollectUserIdentifiers",
"*.R.string.com.crashlytics.CollectUserIdentifiers",
"*.R.string.com.crashlytics.ApiEndpoint",
"*.R.string.io.fabric.android.build_id",
"*.R.string.com.crashlytics.android.build_id",
"*.R.bool.com.crashlytics.RequireBuildId",
"*.R.string.com.crashlytics.RequireBuildId",
"*.R.bool.com.crashlytics.CollectCustomLogs",
"*.R.string.com.crashlytics.CollectCustomLogs",
"*.R.bool.com.crashlytics.Trace",
"*.R.string.com.crashlytics.Trace",
"*.R.string.com.crashlytics.CollectCustomKeys",
"*.R.string.com.google.firebase.crashlytics.mapping_file_id",
"*.R.string.com.google.firebase.crashlytics.unity_version"
]
obfuscatedBundleFileName = "duplicated-app.aab" // Obfuscated file name, must end with '.aab'
mergeDuplicatedRes = true // Whether to allow the merge of duplicate resources
enableFilterFiles = false // Whether to allow filter files
filterList = [ // file filter rules
// "*/arm64-v8a/*",
// "META-INF/*"
]
enableFilterStrings = false // switch of filter strings
unusedStringPath = file("unused.txt").toPath() // strings will be filtered in this file
languageWhiteList = ["en", "zh"] // keep en,en-xx,zh,zh-xx etc. remove others.
}
//以下均为非必须
xmlClassGuard {
findAabConstraintReferencedIds = true
//用于增量混淆的 mapping 文件
mappingFile = file("xml-class-mapping.txt")
//更改manifest文件的package属性即包名
packageChange = ["com.yizhuan.erban": "com.c.r"]
moveDir = [
"com.zhihu.matisse.internal.entity" : "fddbcec",
"com.yizhuan.xchat_android_library.easyphoto.models.album.entity" : "dafefbfcbdbe",
"com.chuhai.utils" : "cbeccaebfacee",
"com.yizhuan.xchat_android_library.utils" : "afeaaebba",
"com.yizhuan.erban.base" : "cceceecedec",
"com.yizhuan.xchat_android_library.common.base" : "efdbbabccaaf",
"com.yizhuan.erban.public_chat_hall.msg" : "cbfce",
"com.netease.nim.uikit.common.ui.recyclerview.adapter" : "dddeefacdcbfcbd",
"com.yizhuan.erban.ui.list" : "ffbbbeedfdddd",
"com.yizhuan.xchat_android_library.list" : "efcebcafccfff",
"com.yizhuan.erban.ui.im.avtivity" : "fbabadeadfbeab",
"com.netease.nim.uikit.business.session.activity" : "fbfacfcef",
"com.yizhuan.erban.common.util" : "dfffbcadbaecffd",
"com.netease.nim.uikit.common.util.media" : "bdbeeecbddacffef",
"com.netease.nim.uikit.common.media.picker.util" : "dcfdaddda",
"com.yizhuan.xchat_android_core.utils" : "eebaabdaacfdc",
"com.yizhuan.xchat_android_library.easyphoto.utils.bitmap" : "cafbbeeaccf",
"com.yizhuan.xchat_android_library.net.rxnet.manager" : "edeaeebedbddd",
"com.yizhuan.xchat_android_library.utils.cache" : "fafcafaecadbbab",
"com.yizhuan.erban.ui.pay" : "fdafbddcdeceeed",
"com.yizhuan.erban.pay.adapter" : "bcaacecbabacecdfb",
"com.yizhuan.erban.public_chat_hall.msg.viewholder" : "bedbdbf",
"com.netease.nim.uikit.business.chatroom.viewholder" : "aadeeeeda",
"com.yizhuan.erban.common.widget" : "aeccddabefcaaad",
"com.netease.nim.uikit.common.ui.imageview" : "baaabaffdafcee",
"com.soundcloud.android.crop" : "dcdfeaddbddfdbff",
"com.netease.nim.uikit.common.media.picker.activity" : "feaccce",
"com.yizhuan.erban.common.permission" : "bbbebcbdfbaadba",
"com.yizhuan.xchat_android_library.easypermisssion" : "dbcdcbabdfdefd",
"com.yizhuan.erban.module" : "ffccffc",
"com.netease.nim.uikit.business.session.constant" : "bebcdeebec",
"com.netease.nim.uikit.common.util.log.sdk.util" : "beebacccee",
"com.yizhuan.erban.ui.utils" : "bceafa",
"com.yizhuan.erban.ui.gift.util" : "aaaaffcaec",
"com.zhihu.matisse.engine.impl" : "eaedaafed",
"com.yizhuan.xchat_android_library.common.glide" : "ddcefebecddfacade",
"com.yizhuan.erban.friend" : "bffeaceaaed",
"com.yizhuan.erban.share" : "baadcaabfdcfdef",
"com.yizhuan.treasure_box.model" : "ffbefbdaaca",
"com.yizhuan.xchat_android_core.radish" : "cbaaafeb",
"com.yizhuan.xchat_android_library.easyphoto.engine" : "aeeebbccbfde",
"com.yizhuan.xchat_android_core.module_hall.income.bean" : "eaeebbdabcce",
"com.yizhuan.xchat_android_core.bills.bean" : "fcafacceabd",
"com.jph.takephoto.uitl" : "babbcdefdca",
"com.netease.nim.uikit.common.ui.recyclerview.loadmore" : "fbafabef",
"com.yizhuan.erban.ui.widget" : "accfffcddadfeefffafad",
"com.yizhuan.xchat_android_library.easyphoto.ui.dialog" : "dcbfaeffceafafade",
"com.yizhuan.erban.common.widget.dialog" : "aeedfefafd",
"com.yizhuan.erban.ui.im.fragment" : "eeceacedadfffff",
"com.netease.nim.uikit.business.session.fragment" : "facbafcfbefdcfccb",
"com.netease.nim.uikit.business.session.module.list" : "ffdfafebdbdaea",
"com.yizhuan.erban.ui.im.chat" : "aafeeecfaa",
"com.netease.nim.uikit.business.session.viewholder" : "dfafaeecf",
"com.yizhuan.erban.base.list" : "cecbbffbab",
"com.netease.nim.uikit.common.ui.recyclerview.entity" : "accaacebcfc",
"com.yizhuan.erban.ui.widget.password" : "ddefafca",
"com.yizhuan.erban.pay.interfaces" : "fafeddcdbeaa",
"com.yizhuan.erban.community.photo" : "daaccefbafac",
"com.yizhuan.erban.ui.user.adapter" : "aabafbccfaf",
"com.netease.nim.uikit.common.ui.recyclerview.holder" : "bbeaabadfdfeee",
"com.netease.nim.uikit.common.ui.recyclerview.util" : "bddceccecb",
"com.netease.nim.uikit.common.ui.recyclerview.listener" : "bafbafebdffacbdafe",
"com.yizhuan.erban.ui.widget.recyclerview.decoration" : "cddeddddd",
"com.netease.nim.uikit.common.ui.recyclerview.decoration" : "aefdcc",
"com.yizhuan.tutu.room_chat" : "afeefeddae",
"com.yizhuan.erban.bank_card" : "cdfcdafdabcccbfab",
"com.yizhuan.tutu.music" : "deebbdbefbbc",
"com.yizhuan.erban.team.adapter" : "aaefddefe",
"com.netease.nim.uikit.business.team.adapter" : "bfbdeedbcbbc",
"com.zhihu.matisse.internal.utils" : "fbdeaebfabae",
"com.netease.nim.uikit.impl.preference" : "acacff",
"com.netease.nim.uikit.business.preference" : "ccdedacaac",
"com.yizhuan.erban.avroom.widget" : "fbaebeeefabde",
"com.yizhuan.xchat_android_library.widget" : "aefdcddaaee",
]
}

View File

@@ -1,26 +1,36 @@
{
"project_info": {
"project_number": "557443720422",
"project_id": "repo-32561",
"storage_bucket": "repo-32561.appspot.com"
"project_number": "656602722869",
"project_id": "pekolive-30f9e",
"storage_bucket": "pekolive-30f9e.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:557443720422:android:d5d1480109b8af15b54727",
"mobilesdk_app_id": "1:656602722869:android:dac206f8aae0ba9021f77c",
"android_client_info": {
"package_name": "app.repo.cam"
"package_name": "com.vele.pekolive"
}
},
"oauth_client": [],
"oauth_client": [
{
"client_id": "656602722869-sss2inirem512et0015kdqjp39mqgn96.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyC2L4szjA4Le5D5_dq0a4PUDxJSCf8XuEI"
"current_key": "AIzaSyDDoTSpY3wxOefVDVKRmE9cDiT1iv8Ra-4"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
"other_platform_oauth_client": [
{
"client_id": "656602722869-sss2inirem512et0015kdqjp39mqgn96.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}

185
app/proguard-rules.pro vendored
View File

@@ -233,9 +233,10 @@
# TODO 网络加载 一些业务bean gson 时候混淆问题
-keep class org.json.** {*;}
-keep class com.yizhuan.**.bean.** {*;}
-keep class com.yizhuan.**.result.** {*;}
-keep class com.yizhuan.**.entity.** {*;}
-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.** {*;}
#百度统计
@@ -478,180 +479,4 @@
}
-keep public class com.android.installreferrer.**{ *; }
-keep public class * extends java.lang.Exception
-keep public class com.alibaba.android.arouter.routes.**{*;}
-keep public class com.alibaba.android.arouter.facade.**{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
-keep class b.** { *; }
-keep class cc.** { *; }
-keep public class * extends b.QQ
-keep public class * extends com.yizhuan.xchat_android_library.base.factory.AbstractMvpPresenter
-dontwarn com.yizhuan.erban.ui.im.recent.holder.**
-keep class com.yizhuan.erban.ui.im.recent.holder.** {*;}
-keep class aafeeecfaa.** {*;}
-keep class com.yizhuan.erban.luckymoney.viewholder.** {*;}
-keep class baadcaabfdcfdef.viewholder.** {*;}
-keep class cbfce.viewholder.** {*;}
-keep class com.yizhuan.erban.module_hall.im.msgholder.** {*;}
-keep class com.yizhuan.tutu.mentoring_relationship.viewholder.** {*;}
-dontwarn com.yizhuan.erban.bindadapter.**
-keep class com.yizhuan.erban.bindadapter.** {*;}
-keep class com.yizhuan.**.bean.** {*;}
-keep class com.yizhuan.**.result.** {*;}
-keep class com.yizhuan.**.entity.** {*;}
-keep class g.GL{*;}
-keep class bc.BV{*;}
-keep class d.BD {*;}
-keep class com.yizhuan.xchat_android_library.easyphoto.models.** { *; }
-keep class fn.** { *; }
-keep class com.jph.takephoto.** { *; }
-dontwarn com.jph.takephoto.**
-keep class babbcdefdca.** { *; }
-dontwarn babbcdefdca.**
-keep class dd.** { *; }
-dontwarn dd.**
-keep public class * extends bbeaabadfdfeee.RecyclerViewHolder {*;}
-keep public class * extends dfafaeecf.MsgViewHolderBase {*;}
-keep class h.** {*;}
-keep class k.** {*;}
-keep class w.** {*;}
-keep class bb.** {*;}
-keep class bd.** {*;}
-keep class be.** {*;}
-keep class bi.** {*;}
-keep class bl.** {*;}
-keep class ce.** {*;}
-keep class cm.** {*;}
-keep class h.J {*;}
-keep class h.K {*;}
-keep class k.N {*;}
-keep class w.BJ {*;}
-keep class bb.BU {*;}
-keep class bd.BX {*;}
-keep class be.BY {*;}
-keep class bd.CB {*;}
-keep class bi.CF {*;}
-keep class be.CG {*;}
-keep class bl.CK {*;}
-keep class bi.CP {*;}
-keep class bb.DG {*;}
-keep class bb.DX {*;}
-keep class ce.EL {*;}
-keep class bi.ES {*;}
-keep class bd.FH {*;}
-keep class bb.FJ {*;}
-keep class cm.FW {*;}
-keep class h.UD {*;}
-keep class h.UE {*;}
-keep class h.UF {*;}
-keep class h.UG {*;}
-keep class h.UH {*;}
-keep class h.UI {*;}
-keep class w.VA {*;}
-keep class w.VB {*;}
-keep class w.VC {*;}
-keep class w.VD {*;}
-keep class w.VE {*;}
-keep class w.VF {*;}
-keep class w.VG {*;}
-keep class w.VH {*;}
-keep class w.VI {*;}
-keep class w.VJ {*;}
-keep class w.VK {*;}
-keep class w.VL {*;}
-keep class w.VM {*;}
-keep class bb.WY {*;}
-keep class bb.WZ {*;}
-keep class bb.XA {*;}
-keep class bb.XB {*;}
-keep class bb.XC {*;}
-keep class bb.XD {*;}
-keep class bb.XE {*;}
-keep class bb.XF {*;}
-keep class bb.XG {*;}
-keep class bb.XH {*;}
-keep class bb.XI {*;}
-keep class bb.XJ {*;}
-keep class bb.XK {*;}
-keep class bb.XL {*;}
-keep class bb.XM {*;}
-keep class bb.XN {*;}
-keep class bb.XO {*;}
-keep class bb.XP {*;}
-keep class bb.XQ {*;}
-keep class bb.XR {*;}
-keep class bb.XS {*;}
-keep class bb.XT {*;}
-keep class bb.XU {*;}
-keep class bb.XV {*;}
-keep class bb.XW {*;}
-keep class bb.XX {*;}
-keep class bb.XY {*;}
-keep class bd.YC {*;}
-keep class bd.YD {*;}
-keep class bd.YE {*;}
-keep class be.YF {*;}
-keep class be.YG {*;}
-keep class be.YH {*;}
-keep class be.YI {*;}
-keep class be.YJ {*;}
-keep class be.YK {*;}
-keep class be.YL {*;}
-keep class be.YM {*;}
-keep class be.YN {*;}
-keep class bl.ZD {*;}
-keep class bl.ZE {*;}
-keep class bl.ZF {*;}
-keep class bl.ZG {*;}
-keep class bl.ZH {*;}
-keep class bl.ZI {*;}
-keep class bl.ZJ {*;}
-keep class bl.ZK {*;}
-keep class bl.ZL {*;}
-keep class bl.ZM {*;}
-keep class bl.ZN {*;}
-keep class bl.ZO {*;}
-keep class bl.ZP {*;}
-keep class ce.BDC {*;}
-keep class ce.BDD {*;}
-keep class ce.BDE {*;}
-keep class ce.BDF {*;}
-keep class ce.BDG {*;}
-keep class ce.BDH {*;}
-keep class ce.BDI {*;}
-keep class ce.BDJ {*;}
-keep class ce.BDK {*;}
-keep class ce.BDL {*;}
-keep class ce.BDM {*;}
-keep class ce.BDN {*;}
-keep class ce.BDO {*;}
-keep class ce.BDP {*;}
-keep class ce.BDQ {*;}
-keep class ce.BDR {*;}
-keep class ce.BDS {*;}
-keep class ce.BDT {*;}
-keep class ce.BDU {*;}
-keep class ce.BDV {*;}
-keep class ce.BDW {*;}
-keep class ce.BDX {*;}
-keep class ce.BDY {*;}
-keep class ce.BDZ {*;}
-keep class ce.BEA {*;}
-keep class ce.BEB {*;}
-keep class ce.BEC {*;}
-keep class ce.BED {*;}
-keep class ce.BEE {*;}
-keep class ce.BEF {*;}
-keep class ce.BEG {*;}
-keep class ce.BEH {*;}
-keep class ce.BEI {*;}
-keep class ce.BEJ {*;}
-keep class cm.BFD {*;}
-keep class cm.BFE {*;}
-keep class cm.BFF {*;}
-keep class cm.BFG {*;}
-keep public class * extends java.lang.Exception

View File

@@ -122,7 +122,7 @@
<data
android:host="main"
android:scheme="repoapp" />
android:scheme="pikoapp" />
</intent-filter>
</activity>
@@ -161,7 +161,7 @@
如果 SDKOptions 中提供了,取 SDKOptions 中的值。
-->
<activity
android:name="app.repo.cam.lineapi.LineAuthenticationCallbackActivity"
android:name="com.vele.pekolive.lineapi.LineAuthenticationCallbackActivity"
android:exported="true"
android:launchMode="singleTask"
android:noHistory="true">
@@ -222,7 +222,7 @@
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="Repo"
android:label="Piko"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateAlwaysHidden" /> <!-- 配置的service和receiver -->
@@ -355,6 +355,24 @@
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" />
@@ -521,7 +539,7 @@
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" />
@@ -825,7 +843,11 @@
<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" />

View File

@@ -1,4 +1,4 @@
package app.repo.cam.lineapi;
package com.vele.pekolive.lineapi;
import cn.sharesdk.line.LineHandlerActivity;

View File

@@ -15,7 +15,7 @@ import com.yizhuan.erban.other.activity.SplashActivity;
import com.yizhuan.xchat_android_core.linked.LinkedModel;
import com.yizhuan.xchat_android_core.linked.bean.LinkedInfo;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.CoreTextUtils;
import com.yizhuan.xchat_android_core.utils.TextUtils;
import java.util.HashMap;
import java.util.List;
@@ -49,7 +49,7 @@ public class AgentActivity extends AppCompatActivity implements SceneRestorable
if (roomuid != null) {
linkedInfo.setRoomUid(roomuid);
}
if (CoreTextUtils.isEmptyText(roomuid) && uid != null) {
if (TextUtils.isEmptyText(roomuid) && uid != null) {
linkedInfo.setRoomUid(uid);
}
if (uid != null) {

View File

@@ -112,10 +112,9 @@ import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
import com.yizhuan.xchat_android_core.user.event.NeedBindPhoneEvent;
import com.yizhuan.xchat_android_core.user.event.NeedCompleteInfoEvent;
import com.yizhuan.xchat_android_core.user.event.NeedVerifyBoundAuthCodeEvent;
import com.yizhuan.xchat_android_core.utils.CoreLogger;
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_core.utils.StringFormatUtils;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.threadmgr.ThreadPoolManager;
@@ -569,7 +568,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
.subscribe(new BeanObserver<Boolean>() {
@Override
public void onErrorMsg(String error) {
CoreLogger.info("isBoundAuthCode", error);
com.yizhuan.xchat_android_core.utils.Logger.info("isBoundAuthCode", error);
}
@Override
@@ -821,8 +820,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
GameHomeModel.get().getRoomShortcut()
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(uid -> {
if (StringFormatUtils.toLong(uid) != 0) {
AVRoomActivity.start(context, StringFormatUtils.toLong(uid));
if (StringUtils.toLong(uid) != 0) {
AVRoomActivity.start(context, StringUtils.toLong(uid));
}
},
Throwable::printStackTrace);

View File

@@ -108,7 +108,7 @@ public class UIHelper {
public static void showMonsterResult(Context context, String monsterId) {
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL +
"/repo/modules/monster/index.html?monsterId=" + monsterId);
"/peko/modules/monster/index.html?monsterId=" + monsterId);
}
public static void showLabelInfoAct(Activity mActivity, int requestCode) {
@@ -132,11 +132,11 @@ public class UIHelper {
*/
public static void showRecommendPosH5(Context context) {
String cardUrl = UriProvider.JAVA_WEB_URL +
"/repo/modules/recommend-card/index.html";
"/peko/modules/recommend-card/index.html";
CommonWebViewActivity.start(context, cardUrl);
}
public static void openContactUs(Context context) {
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL + "/repo/modules/contact/contact.html");
CommonWebViewActivity.start(context, UriProvider.IM_SERVER_URL + "/peko/modules/contact/contact.html");
}
}

View File

@@ -17,7 +17,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.pay.event.NewUserChargeEvent;
import com.yizhuan.xchat_android_core.recall.bean.CheckLostUserInfo;
import com.yizhuan.xchat_android_core.recall.event.CheckLostUserEvent;
import com.yizhuan.xchat_android_core.relation.cp.bean.CpInviteInfo;
import com.yizhuan.xchat_android_core.relation.cp.CpInviteInfo;
import com.yizhuan.xchat_android_core.upgrade.event.ImPushUpdateAppEvent;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;

View File

@@ -13,7 +13,7 @@ import com.chad.library.adapter.base.BaseViewHolder;
import com.yizhuan.erban.R;
import com.yizhuan.erban.audio.widget.VoiceLine;
import com.yizhuan.xchat_android_core.audio.bean.UserVoiceInfo;
import com.yizhuan.xchat_android_core.utils.StringFormatUtils;
import com.yizhuan.xchat_android_core.utils.StringUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import java.util.List;
@@ -105,7 +105,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
});
// 点击播放声音/停止声音
helper.voiceBarLayout.setOnClickListener(view -> {
if (StringFormatUtils.isEmpty(item.getVoiceUrl())) {
if (StringUtils.isEmpty(item.getVoiceUrl())) {
return;
}
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
@@ -140,7 +140,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
});
// 点击播放声音/停止声音
helper.voiceBarLayout.setOnClickListener(view -> {
if (StringFormatUtils.isEmpty(item.getVoiceUrl())) {
if (StringUtils.isEmpty(item.getVoiceUrl())) {
return;
}
boolean isChange = helper.getAdapterPosition() != voiceClickPos;
@@ -177,7 +177,7 @@ public class MyVoiceListAdapter extends BaseQuickAdapter<UserVoiceInfo, BaseView
});
// 点击播放声音/停止声音
helper.voiceBarLayout.setOnClickListener(view -> {
if (StringFormatUtils.isEmpty(item.getVoiceUrl())) {
if (StringUtils.isEmpty(item.getVoiceUrl())) {
return;
}
boolean isChange = helper.getAdapterPosition() != voiceClickPos;

View File

@@ -17,7 +17,7 @@ import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.manager.AudioEngineManager
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.sound.model.SoundModel
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.common.application.BaseApp
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.SingleToastUtil

View File

@@ -71,8 +71,7 @@ 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;
import com.yizhuan.xchat_android_core.noble.bean.AllServiceGiftProtocolDataBean;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.common.widget.CustomImageSpan;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
@@ -116,18 +115,19 @@ import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.module_hall.hall.HallModel;
import com.yizhuan.xchat_android_core.module_hall.hall.bean.SuperAdminInfo;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterDataBean;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterHuntingResult;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterInfo;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterProtocol;
import com.yizhuan.xchat_android_core.monsterhunting.manager.MonsterDataManager;
import com.yizhuan.xchat_android_core.noble.bean.NobleInfo;
import com.yizhuan.xchat_android_core.noble.AllServiceGiftProtocol;
import com.yizhuan.xchat_android_core.noble.NobleInfo;
import com.yizhuan.xchat_android_core.noble.NobleResourceType;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
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.bean.RedPackageNotifyInfo;
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;
import com.yizhuan.xchat_android_core.room.bean.RoomModeType;
@@ -140,12 +140,13 @@ 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.treasurefairy.bean.FairyMsgInfoBean;
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;
import com.yizhuan.xchat_android_core.utils.LogUtils;
import com.yizhuan.xchat_android_core.utils.StringFormatUtils;
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.ResUtil;
@@ -220,7 +221,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
private GiftBroadcastObserver giftObserver;
private Dialog giftDialog;
private LinkedList<AllServiceGiftProtocolDataBean> giftList;
private LinkedList<AllServiceGiftProtocol.DataBean> giftList;
@Nullable
private SingleRoomTipDialog singleRoomTipDialog;
// 通过红包进来时,有该参数
@@ -300,7 +301,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
public static void setBackBg(Context context, RoomInfo roomInfo, SVGAImageView svgaRoomBg, String[] bgPicture) {
if (roomInfo != null && svgaRoomBg != null) {
if (!StringFormatUtils.isBlank(roomInfo.getBackPic())) {
if (!StringUtils.isBlank(roomInfo.getBackPic())) {
int resourceType = NobleUtil.getResourceType(roomInfo.getBackPic());
if (resourceType == NobleResourceType.URLS) {
if (!roomInfo.getBackPic().equals(bgPicture[0])) {
@@ -561,7 +562,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
}
break;
case RoomEvent.MONSTER_STATUS_CHANGED:
MonsterDataBean dataBean = roomEvent.getMonsterStatusAttachment().getDataBean();
MonsterProtocol.DataBean dataBean = roomEvent.getMonsterStatusAttachment().getDataBean();
Log.e(TAG, "onRoomEventReceive: monster status changed: " + dataBean);
RoomInfo myRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
// 当前为房间页面并且当前房间为怪兽出现房间时才出现通知
@@ -609,7 +610,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
// 当前为房间页面并且当前房间为怪兽出现房间时才出现通知
if (UIUtils.isTopActivity(AVRoomActivity.this) && currentRoomInfo != null &&
currentRoomInfo.getUid() == monsterHuntingResult.getMonster().getAppearRoomUid()) {
MonsterDataBean monsterInfo = monsterHuntingResult.getMonster();
MonsterProtocol.DataBean monsterInfo = monsterHuntingResult.getMonster();
if (monsterDialog != null && monsterDialog.isShowing()) {
monsterDialog.dismiss();
}
@@ -620,6 +621,12 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
case RoomEvent.MY_SELF_KICK_OUT_ROOM_BY_S_ADMIN:
toBack(true);
break;
case RoomEvent.FAIRY_DRAW_GIFT_L5:
ChatRoomMessage message = roomEvent.getChatRoomMessage();
if (message != null) {
IMNetEaseManager.get().addMessages(message);
}
break;
default:
}
}
@@ -1203,7 +1210,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftList = new LinkedList<>();
}
int second2 = baseProtocol.getSecond();
AllServiceGiftProtocolDataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocolDataBean.class);
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
if (data == null || (data.getGiftUrl()) == null)
return;
giftList.add(data);
@@ -1320,7 +1327,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
if (!isValid()) return;
if (giftList == null) return;
if (giftList.size() == 0) return;
AllServiceGiftProtocolDataBean data = giftList.peekFirst();
AllServiceGiftProtocol.DataBean data = giftList.peekFirst();
if (data == null) return;
if (giftDialog != null && giftDialog.isShowing()) {
return;
@@ -1328,7 +1335,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftDialog = generateAllServiceGiftDialog(this, data);
giftDialog.setOnDismissListener(dialog -> {
giftList.pollFirst();
AllServiceGiftProtocolDataBean dataBean = giftList.peekFirst();
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
if (isValid()) {
showGiftDialog();
@@ -1340,7 +1347,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
giftDialog.show();
}
private AllServiceGiftLevelDialog generateAllServiceGiftDialog(@NonNull Context context, @NonNull AllServiceGiftProtocolDataBean dataBean) {
private AllServiceGiftLevelDialog generateAllServiceGiftDialog(@NonNull Context context, @NonNull AllServiceGiftProtocol.DataBean dataBean) {
return new AllServiceGiftLevelDialog(context, dataBean);
}
@@ -1413,6 +1420,12 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
return this;
}
@Nullable
@Override
public RoomWidget findWidget(@NonNull String name) {
return null;
}
private static class GiftBroadcastObserver implements Observer<BroadcastMessage> {
private WeakReference<AVRoomActivity> mReference;

View File

@@ -16,7 +16,7 @@ import com.yizhuan.erban.avroom.adapter.RecordForPKAdapter;
import com.yizhuan.erban.avroom.presenter.RecordForPKPresenter;
import com.yizhuan.erban.avroom.view.IRecordForPKView;
import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.room.pk.bean.PKRecordInfo;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;

View File

@@ -39,7 +39,7 @@ import com.yizhuan.xchat_android_core.room.pk.bean.PKTeamInfo;
import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
import com.yizhuan.xchat_android_core.utils.extension.StringExtensionKt;
import com.yizhuan.xchat_android_core.utils.StringExtensionKt;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;

View File

@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.room.game.bean.GameInfo
import com.yizhuan.xchat_android_core.room.game.GameInfo
class CreateRoomGameAdapter :
BaseQuickAdapter<GameInfo, BaseViewHolder>(R.layout.item_room_create_game) {

View File

@@ -4,7 +4,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.xchat_android_library.common.glide.GlideUtils
import com.yizhuan.xchat_android_core.room.game.bean.GameInfo
import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2
import com.yizhuan.xchat_android_core.room.game.GameInfo
class CreateRoomGameGuideAdapter :
BaseQuickAdapter<GameInfo, BaseViewHolder>(R.layout.item_room_create_game_guide) {

View File

@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class ExitRoomAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_exit_room) {

View File

@@ -17,7 +17,7 @@ import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.NobleAvatarView;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.utils.RegexUtil;
import com.yizhuan.xchat_android_core.noble.bean.NobleInfo;
import com.yizhuan.xchat_android_core.noble.NobleInfo;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.room.bean.RoomContributeUserInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomRankMultiItem;

View File

@@ -3,7 +3,7 @@ package com.yizhuan.erban.avroom.adapter
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.xchat_android_core.room.game.bean.GameInfo
import com.yizhuan.xchat_android_core.room.game.GameInfo
class SelectGameAdapter :
BaseQuickAdapter<GameInfo, BaseViewHolder>(R.layout.item_room_select_game) {

View File

@@ -16,7 +16,7 @@ import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.bean.RoomQueueInfo
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.praise.PraiseModel
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.config.BasicConfig

View File

@@ -26,7 +26,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowUserInfoDialogEvent
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_library.rxbus.RxBus
import com.yizhuan.xchat_android_library.utils.CommonUtils
import io.reactivex.Observable

View File

@@ -16,10 +16,10 @@ import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.RoomPKModel
import com.yizhuan.xchat_android_core.room.anotherroompk.SimpleRoomInfo
import com.yizhuan.xchat_android_core.utils.extension.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.extension.toIntOrDef
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.toIntOrDef
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.ResUtil
class RoomPKCreateActivity : BaseViewBindingActivity<ActivityRoomPkCreateBinding>() {

View File

@@ -16,7 +16,7 @@ import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.RoomPKModel
import com.yizhuan.xchat_android_core.room.anotherroompk.SimpleRoomInfo
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.ResUtil
class RoomPKSearchActivity : BaseViewBindingActivity<ActivityRoomPkSearchBinding>() {

View File

@@ -5,14 +5,14 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.room.anotherroompk.SimpleRoomInfo
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class RoomPKSearchAdapter :
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_room_pk_search) {
override fun convert(helper: BaseViewHolder, item: SimpleRoomInfo) {
helper.setText(R.id.tv_room_title,item.title.subAndReplaceDot(7))
.setText(R.id.tv_room_id,"Repo号:${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

@@ -9,7 +9,7 @@ import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogRoomPkFinishBinding
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class RoomPkFinishDialog : BaseDialog<DialogRoomPkFinishBinding>() {

View File

@@ -8,7 +8,7 @@ import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogRoomPkForceFinishBinding
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class RoomPkForceFinishDialog : BaseDialog<DialogRoomPkForceFinishBinding>() {

View File

@@ -8,9 +8,9 @@ import com.yizhuan.erban.databinding.DialogRoomPkReceivedBinding
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.RoomPKModel
import com.yizhuan.xchat_android_core.utils.extension.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.toast
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable

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

@@ -3,16 +3,24 @@ package com.yizhuan.erban.avroom.dialog
import android.annotation.SuppressLint
import android.view.Gravity
import android.view.WindowManager
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.adapter.CreateRoomGameAdapter
import com.yizhuan.erban.avroom.adapter.CreateRoomGameGuideAdapter
import com.yizhuan.erban.base.BaseActivity
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogCreateGameRoomBinding
import com.yizhuan.erban.databinding.DialogCreateRoomBinding
import com.yizhuan.erban.home.helper.OpenRoomHelper
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.game.bean.GameInfo
import com.yizhuan.xchat_android_core.room.game.GameInfo
import com.yizhuan.xchat_android_core.room.game.GameModel
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.ResUtil
class CreateGameRoomDialog : BaseDialog<DialogCreateGameRoomBinding>() {

View File

@@ -14,9 +14,9 @@ import com.yizhuan.erban.databinding.DialogCreateRoomBinding
import com.yizhuan.erban.home.helper.OpenRoomHelper
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.game.bean.GameInfo
import com.yizhuan.xchat_android_core.room.game.GameInfo
import com.yizhuan.xchat_android_core.room.game.GameModel
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.ResUtil
class CreateRoomDialog : BaseDialog<DialogCreateRoomBinding>() {

View File

@@ -23,7 +23,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.adapter.MicQueueAdapter;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.home.helper.LoadPageDataHelper;
import com.yizhuan.erban.ui.widget.dialog.BaseDialog;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;

View File

@@ -25,7 +25,7 @@ import com.yizhuan.erban.avroom.adapter.PKMicQueueAdapter;
import com.yizhuan.erban.home.helper.LoadPageDataHelper;
import com.yizhuan.erban.ui.widget.dialog.BaseDialog;
import com.yizhuan.erban.ui.widget.dialog.CommonLoadingDialog;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.auth.AuthModel;

View File

@@ -21,7 +21,7 @@ import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.ui.widget.dialog.BaseDialog;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.room.pk.bean.PKTeamInfo;

View File

@@ -18,7 +18,7 @@ import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.ui.widget.dialog.BaseDialog;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.xchat_android_core.bean.RoomQueueInfo;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.room.pk.bean.PKMemberInfo;

View File

@@ -19,7 +19,7 @@ import com.yizhuan.erban.avroom.activity.CpRoomInviteActivity;
import com.yizhuan.erban.avroom.widget.EditRoomTitleDialog;
import com.yizhuan.erban.databinding.DialogRoomImposeBinding;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;

View File

@@ -26,7 +26,7 @@ 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.xchat_android_library.common.util.Utils;
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;

View File

@@ -16,7 +16,7 @@ import com.yizhuan.erban.utils.SpannableBuilder
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.bean.BroadcastInfo
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.CommonUtils
import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper
import io.reactivex.Observable

View File

@@ -41,7 +41,7 @@ import com.yizhuan.xchat_android_core.pay.bean.PayRecordId
import com.yizhuan.xchat_android_core.pay.event.FirstChargeEvent
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.utils.net.IgnoreException
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.common.util.DeviceUtil
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil
import com.yizhuan.xchat_android_library.utils.ResUtil

View File

@@ -5,7 +5,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeReward
import com.yizhuan.xchat_android_core.utils.CoreTextUtils
import com.yizhuan.xchat_android_core.utils.TextUtils
class Reward2Adapter : BaseMultiItemQuickAdapter<FirstChargeReward, BaseViewHolder>(null) {
@@ -33,7 +33,7 @@ class Reward2Adapter : BaseMultiItemQuickAdapter<FirstChargeReward, BaseViewHold
)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, item.showTime)
.setGone(R.id.tv_time, !CoreTextUtils.isEmptyText(item.showTime))
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -4,10 +4,11 @@ import androidx.core.view.updateLayoutParams
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeReward
import com.yizhuan.xchat_android_core.utils.CoreTextUtils
import com.yizhuan.xchat_android_core.utils.TextUtils
class RewardAdapter(private val itemWidth: Int) :
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_first_charge_reward) {
@@ -23,6 +24,6 @@ class RewardAdapter(private val itemWidth: Int) :
)
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, item.showTime)
.setGone(R.id.tv_time, !CoreTextUtils.isEmptyText(item.showTime))
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -6,9 +6,6 @@ import android.app.Activity
import android.content.DialogInterface
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import android.text.TextUtils
import android.view.KeyEvent
@@ -47,7 +44,6 @@ import com.yizhuan.erban.avroom.dialog.AttentionHintDialog
import com.yizhuan.erban.avroom.dialog.DatingVipRuleDialog
import com.yizhuan.erban.avroom.dialog.RoomFreeGiftDialog
import com.yizhuan.erban.avroom.dialog.RoomOperationDialog
import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog
import com.yizhuan.erban.avroom.presenter.BaseRoomPresenter
import com.yizhuan.erban.avroom.redpackage.send.RedPackageSendDialog
import com.yizhuan.erban.avroom.room_album.RoomAlbumModel
@@ -59,34 +55,24 @@ import com.yizhuan.erban.base.BaseMvpActivity
import com.yizhuan.erban.base.BaseMvpFragment
import com.yizhuan.erban.event.OpenRoomIntroEvent
import com.yizhuan.erban.friend.view.SelectFriendActivity
import com.yizhuan.erban.home.adapter.RoomActAdapter
import com.yizhuan.erban.shipantics.PullRadishActivity
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper
import com.yizhuan.erban.ui.webview.DialogWebViewActivity
import com.yizhuan.erban.ui.widget.ButtonItem
import com.yizhuan.erban.ui.widget.GiftDialog
import com.yizhuan.erban.ui.widget.GiftDialog.OnGiftDialogBtnClickListener
import com.yizhuan.erban.ui.widget.GiftDialog.SenGiftCallback
import com.yizhuan.erban.ui.widget.UserInfoDialog
import com.yizhuan.erban.ui.widget.dynamicface.DynamicFaceDialog
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView
import com.yizhuan.erban.ui.widget.rollviewpager.Util
import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView
import com.yizhuan.erban.utils.KeyBoardUtils
import com.yizhuan.tutu.music.widget.MusicPlayerView
import com.yizhuan.tutu.room_chat.activity.RoomMsgActivity
import com.yizhuan.xchat_android_constants.XChatConstants
import com.yizhuan.xchat_android_core.Constants
import com.yizhuan.xchat_android_core.DemoCache
import com.yizhuan.xchat_android_core.UriProvider
import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.bean.RoomMicInfo
import com.yizhuan.xchat_android_core.gift.GiftModel
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo
import com.yizhuan.xchat_android_core.gift.event.RoomFreeGiftEvent
import com.yizhuan.xchat_android_core.helper.AtProxy
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
import com.yizhuan.xchat_android_core.home.event.OpenRoomMessageInputEvent
import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment
import com.yizhuan.xchat_android_core.im.custom.bean.RoomFollowOwnerAttachment2
@@ -97,7 +83,6 @@ import com.yizhuan.xchat_android_core.manager.RoomEvent
import com.yizhuan.xchat_android_core.mentoring_relationship.event.MentoringStopCountingEvent
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowUserInfoDialogEvent
import com.yizhuan.xchat_android_core.room.bean.RoomContributeUserInfo
import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.event.RoomAtEvent
import com.yizhuan.xchat_android_core.room.event.RoomClearScreenEvent
@@ -147,7 +132,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
protected lateinit var inputSend: ImageView
protected lateinit var microView: MicroView
private var musicPlayerView: MusicPlayerView? = null
private var ivRadishEntrance: View? = null
private var mVsMusicPlayer: ViewStub? = null
private var mDisposable: Disposable? = null
private var isCloseScreen = false
@@ -207,7 +191,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
inputSend = mView.findViewById(R.id.input_send)
microView = mView.findViewById(R.id.micro_view)
mVsMusicPlayer = mView.findViewById(R.id.vs_music_player)
ivRadishEntrance = mView.findViewById(R.id.iv_radish_entrance)
messageView.setClickConsumer {
if (!TextUtils.isEmpty(it) && it != "0") {
showUserCardDialog(it)
@@ -289,10 +272,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
checkFollowOwner()
GiftValueMrg.get().updateRoomGiftValue(false)
//先隐藏航海冒险
// ivRadishEntrance?.isVisible =
// !GoldBoxHelper.needIntegrateBoxEntrance() && GoldBoxHelper.isShowRadish()
//获取免费礼物详情
mvpPresenter?.queryFreeFlower()
initRoomAlbum()
@@ -464,65 +443,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
}
}
fun initRoomAct(
rollPagerView: RollPagerView,
dialogInfo: List<BannerInfo>,
bottomDp: Float = 0f
) {
if (!ListUtils.isListEmpty(dialogInfo)) {
rollPagerView.visibility = View.VISIBLE
// 只有一個圖標,隱藏底部指示器
val show = dialogInfo.size > 1
rollPagerView.setHintView(object : ColorPointHintView(
mContext, Color.WHITE, ContextCompat.getColor(
mContext,
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 (show) dotFocus else null
}
override fun makeNormalDrawable(): Drawable? {
val dotNormal = GradientDrawable()
dotNormal.setColor(ContextCompat.getColor(mContext, R.color.color_66FFFFFF))
dotNormal.cornerRadius = Util.dip2px(
context, 2f
).toFloat()
dotNormal.setSize(
Util.dip2px(context, 4f), Util.dip2px(
context, 4f
)
)
return if (show) dotNormal else null
}
})
val bannerAdapter = RoomActAdapter(mContext, dialogInfo)
rollPagerView.adapter = bannerAdapter
rollPagerView.setPlayDelay(3000)
//設置透明度
rollPagerView.setAnimationDurtion(500)
bannerAdapter.notifyDataSetChanged()
// 模擬指示器在viewpager底部效果
val viewPager = rollPagerView.viewPager
viewPager.offscreenPageLimit = dialogInfo.size
val layoutParams = viewPager.layoutParams as RelativeLayout.LayoutParams
layoutParams.setMargins(0, 0, 0, UIUtil.dip2px(mContext, bottomDp.toDouble()))
viewPager.layoutParams = layoutParams
}
}
private fun releaseView() {
roomFreeGiftDialog?.dismiss()
messageView.release()
@@ -586,10 +506,7 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
} else {
val roomQueueInfo = AvRoomDataManager.get()
.getRoomQueueMemberInfoByAccount(myUid.toString())
if (roomQueueInfo?.mChatRoomMember?.isNoProhibitMic == true && roomQueueInfo.mRoomMicInfo?.isMicMute == false) {
bottomView.setMicBtnEnable(true)
bottomView.setMicBtnOpen(true)
} else if (roomQueueInfo?.mChatRoomMember != null
if (roomQueueInfo?.mChatRoomMember != null
&& myUid.toString() == roomQueueInfo.mChatRoomMember.account
&& roomQueueInfo.mRoomMicInfo?.isMicMute == true
) {
@@ -678,12 +595,6 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
R.id.input_send -> {
sendMsg()
}
R.id.iv_first_charge_enter -> FirstChargeDialog.start(mContext)
R.id.iv_treasure_box,
R.id.iv_treasure_box_cp -> GoldBoxHelper.handleBoxClick(mContext)
R.id.iv_radish_entrance -> PullRadishActivity.start(mContext)
}
}
@@ -1320,6 +1231,10 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
return this
}
override fun findWidget(name: String): RoomWidget? {
return widgets[name]
}
open fun initWidget() {
}

View File

@@ -9,7 +9,7 @@ import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.event.SwitchRoomEvent
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_core.utils.StringFormatUtils
import com.yizhuan.xchat_android_core.utils.StringUtils
import com.yizhuan.xchat_android_library.utils.ResUtil
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -66,7 +66,7 @@ class FakeSingleRoomBackFragment : BaseViewBindingFragment<FragmentFakeSingleRoo
jumpRoom(it)
} else {
preRoomInfo = it
if (!StringFormatUtils.isBlank(it.backPic)) {
if (!StringUtils.isBlank(it.backPic)) {
AVRoomActivity.setBackBg(mContext, it, binding.svgaImageViewBg, bgPicture)
}
}

View File

@@ -14,7 +14,7 @@ import com.yizhuan.xchat_android_core.room.bean.RoomInfo
import com.yizhuan.xchat_android_core.room.event.SwitchRoomEvent
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_core.utils.StringFormatUtils
import com.yizhuan.xchat_android_core.utils.StringUtils
import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -56,7 +56,7 @@ class FakeSingleRoomFragment : BaseViewBindingFragment<FragmentFakeSingleRoomBin
jumpRoom(it)
} else {
preRoomInfo = it
if (!StringFormatUtils.isBlank(it.backPic)) {
if (!StringUtils.isBlank(it.backPic)) {
AVRoomActivity.setBackBg(mContext, it, binding.svgaImageViewBg, bgPicture)
}
}

View File

@@ -10,6 +10,7 @@ import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.adapter.GameMicroViewAdapter
import com.yizhuan.erban.avroom.adapter.GameMiniMicroViewAdapter
import com.yizhuan.erban.avroom.adapter.OnMicroItemClickListener
import com.yizhuan.erban.avroom.banner.RoomBannerWidget
import com.yizhuan.erban.avroom.firstcharge.FirstChargePrizeDialog
import com.yizhuan.erban.avroom.game.GameDelegate
import com.yizhuan.erban.avroom.game.OnGameStatusChangeListener
@@ -19,7 +20,6 @@ import com.yizhuan.erban.avroom.redpackage.RedPackageWidget
import com.yizhuan.erban.avroom.view.IGameRoomView
import com.yizhuan.erban.databinding.FragmentGameRoomBinding
import com.yizhuan.erban.ui.widget.GiftDialog.OnGiftDialogBtnClickListener
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.music.model.PlayerModel
import com.yizhuan.xchat_android_core.pay.event.FirstChargeEvent
@@ -79,7 +79,6 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
//游戏模式暂时不需要这个
PlayerModel.get().stop()
gameBinding.roomInfo = AvRoomDataManager.get().mCurrentRoomInfo
mvpPresenter?.getBannerList()
gameBinding.tvShowMiniMic.setOnClickListener { showMiniMic() }
gameBinding.ivShowMic.setOnClickListener { showMic() }
}
@@ -151,10 +150,6 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
}
}
override fun onShowBanner(dialogInfos: List<BannerInfo>) {
initRoomAct(gameBinding.activityImg, dialogInfos)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onFinishAvRoomEvent(event: FinishAvRoomEvent) {
gameDelegate.exitGame()
@@ -162,6 +157,8 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
@Subscribe(threadMode = ThreadMode.MAIN)
fun onFirstRechargeEvent(event: FirstChargeEvent) {
// banner里可能有首充入口刷新下
gameBinding.bannerWidget.refreshData()
FirstChargePrizeDialog(
requireContext(),
event.chargeProdTitle,
@@ -197,7 +194,9 @@ class GameRoomFragment : BaseRoomFragment<IGameRoomView?, GameRoomPresenter?>(),
override fun initWidget() {
super.initWidget()
gameBinding.bannerWidget.disabledIndicator()
registerWidget(RedPackageWidget::class.java.simpleName, gameBinding.redPackageWidget)
registerWidget(RoomRankWidget::class.java.simpleName, gameBinding.rankWidget)
registerWidget(RoomBannerWidget::class.java.simpleName, gameBinding.bannerWidget)
}
}

View File

@@ -58,14 +58,14 @@ import com.yizhuan.xchat_android_core.manager.RoomEvent;
import com.yizhuan.xchat_android_core.praise.PraiseModel;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomModeType;
import com.yizhuan.xchat_android_core.room.game.bean.GameInfo;
import com.yizhuan.xchat_android_core.room.game.GameInfo;
import com.yizhuan.xchat_android_core.room.game.GameModel;
import com.yizhuan.xchat_android_core.room.queuing_mic.event.HasAnimationEffect;
import com.yizhuan.xchat_android_core.share.ShareModel;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.CoreLogger;
import com.yizhuan.xchat_android_core.utils.Logger;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
@@ -155,7 +155,7 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
toast(getString(R.string.have_copy));
}
} catch (Exception e) {
CoreLogger.info("copyText", e.toString());
Logger.info("copyText", e.toString());
toast(e.toString());
}
return true;

View File

@@ -20,11 +20,14 @@ import com.yizhuan.erban.avroom.adapter.MicroViewAdapter;
import com.yizhuan.erban.avroom.anotherroompk.RoomPkFinishDialog;
import com.yizhuan.erban.avroom.anotherroompk.RoomPkForceFinishDialog;
import com.yizhuan.erban.avroom.anotherroompk.RoomPkReceivedDialog;
import com.yizhuan.erban.avroom.banner.RoomBannerWidget;
import com.yizhuan.erban.avroom.dialog.MicQueueDialog;
import com.yizhuan.erban.avroom.dialog.PKMicQueueDialog;
import com.yizhuan.erban.avroom.dialog.PKResultDialog;
import com.yizhuan.erban.avroom.dialog.PKScoreBoardDialog;
import com.yizhuan.erban.avroom.firstcharge.FirstChargePrizeDialog;
import com.yizhuan.erban.avroom.gameplay.RoomGameplayListWidget;
import com.yizhuan.erban.avroom.gameplay.RoomGameplayWidget;
import com.yizhuan.erban.avroom.giftvalue.GiftValueDialogUiHelper;
import com.yizhuan.erban.avroom.presenter.HomePartyPresenter;
import com.yizhuan.erban.avroom.rank.RoomRankWidget;
@@ -142,6 +145,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
super.initWidget();
registerWidget(RedPackageWidget.class.getSimpleName(), gameBinding.redPackageWidget);
registerWidget(RoomRankWidget.class.getSimpleName(), gameBinding.rankWidget);
registerWidget(RoomBannerWidget.class.getSimpleName(), gameBinding.bannerWidget);
registerWidget(RoomGameplayListWidget.class.getSimpleName(), gameBinding.gameplayListWidget);
registerWidget(RoomGameplayWidget.class.getSimpleName(), gameBinding.gameplayWidget);
}
@SuppressLint("CheckResult")
@@ -155,7 +161,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
updateQueuingMicBtn();
updatePkScoreBoard();
initRoomPkOrder(AvRoomDataManager.get().showPkBeginTime, AvRoomDataManager.get().pkBeginTime);
getMvpPresenter().getBannerList();
// if (!GoldBoxHelper.needIntegrateBoxEntrance()) {
// UserModel.get().getCurrentUserInfo()
// .compose(bindToLifecycle())
@@ -806,36 +811,6 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
} else {
gameBinding.layoutHourRank.setVisibility(View.GONE);
}
if (!GoldBoxHelper.needIntegrateBoxEntrance()) {
GoldBoxHelper.isHideBox().subscribe(
hide -> {
if (hide != null && !hide) {
if (AvRoomDataManager.get().isCpRoom()) {
gameBinding.ivTreasureBoxCp.setVisibility(View.VISIBLE);
gameBinding.ivTreasureBox.setVisibility(View.GONE);
} else {
gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
gameBinding.ivTreasureBox.setVisibility(View.VISIBLE);
GlideApp.with(BasicConfig.INSTANCE.getAppContext())
.load(GoldBoxHelper.getBoxIcon())
.error(R.drawable.icon_room_treasure_box)
.into(gameBinding.ivTreasureBox);
}
} else {
gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
gameBinding.ivTreasureBox.setVisibility(View.GONE);
}
},
throwable -> {
gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
gameBinding.ivTreasureBox.setVisibility(View.GONE);
});
} else {
gameBinding.ivTreasureBoxCp.setVisibility(View.GONE);
gameBinding.ivTreasureBox.setVisibility(View.GONE);
}
setDragonView();
}
@@ -969,15 +944,11 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
return pkMicQueueDialog != null && pkMicQueueDialog.isShowing();
}
@Override
public void onShowBanner(List<BannerInfo> bannerInfos) {
initRoomAct(gameBinding.activityImg, bannerInfos, 11f);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onFirstRechargeEvent(FirstChargeEvent event) {
gameBinding.ivFirstChargeEnter.setVisibility(View.GONE);
// banner里可能有首充入口刷新下
gameBinding.bannerWidget.refreshData();
new FirstChargePrizeDialog(requireContext(), event.getChargeProdTitle(), event.getFirstChargeRewardList()).openDialog();
}

View File

@@ -13,8 +13,11 @@ import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.adapter.OnMicroItemClickListener
import com.yizhuan.erban.avroom.adapter.SingleAnchorMicroViewAdapter
import com.yizhuan.erban.avroom.adapter.SingleRoomPKMicroViewAdapter
import com.yizhuan.erban.avroom.banner.RoomBannerWidget
import com.yizhuan.erban.avroom.dialog.RequestUpMicDialog
import com.yizhuan.erban.avroom.firstcharge.FirstChargePrizeDialog
import com.yizhuan.erban.avroom.gameplay.RoomGameplayListWidget
import com.yizhuan.erban.avroom.gameplay.RoomGameplayWidget
import com.yizhuan.erban.avroom.presenter.SingleRoomPresenter
import com.yizhuan.erban.avroom.rank.RoomRankWidget
import com.yizhuan.erban.avroom.redpackage.RedPackageWidget
@@ -26,15 +29,12 @@ import com.yizhuan.erban.databinding.FragmentSingleRoomBinding
import com.yizhuan.erban.fansteam.FansTeamJoinActivity
import com.yizhuan.erban.fansteam.FansTeamJoinedActivity
import com.yizhuan.erban.fansteam.FansTeamViewModel
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.erban.ui.webview.CommonWebViewActivity
import com.yizhuan.erban.ui.webview.DialogWebViewActivity
import com.yizhuan.tutu.music.widget.MusicPlayerView
import com.yizhuan.xchat_android_core.UriProvider
import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.fansteam.bean.FansTeamInitInfo
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
import com.yizhuan.xchat_android_core.fansteam.FansTeamInitInfo
import com.yizhuan.xchat_android_core.im.custom.bean.FansTeamMsgAttachment
import com.yizhuan.xchat_android_core.im.custom.bean.RequestUpmicAttachment
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPKAttachment
@@ -85,24 +85,7 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
@SuppressLint("CheckResult")
override fun initiate() {
super.initiate()
mvpPresenter?.getBannerList()
initSpeedyMessage(gameBinding.flSpeedyMessage)
GoldBoxHelper.isHideBox().subscribe(
{
if (it == false) {
gameBinding.ivTreasureBox.visibility = View.VISIBLE
gameBinding.ivTreasureBox.load(
GoldBoxHelper.getBoxIcon(),
defaultRes = R.drawable.icon_room_treasure_box
)
} else {
gameBinding.ivTreasureBox.visibility = View.GONE
}
}
) {
gameBinding.ivTreasureBox.visibility = View.GONE
}
fansTeamViewModel.loadFansTeamInitInfo()
fansTeamViewModel.fansTeamInitInfoLiveData.observe(viewLifecycleOwner) {
@@ -258,13 +241,10 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
}
}
override fun onShowBanner(dialogInfos: List<BannerInfo>) {
initRoomAct(gameBinding.activityImg, dialogInfos, 10f)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onFirstRechargeEvent(event: FirstChargeEvent) {
gameBinding.ivFirstChargeEnter.visibility = View.GONE
// banner里可能有首充入口刷新下
gameBinding.bannerWidget.refreshData()
FirstChargePrizeDialog(
requireContext(),
event.chargeProdTitle,
@@ -276,6 +256,9 @@ class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresente
super.initWidget()
registerWidget(RedPackageWidget::class.java.simpleName, gameBinding.redPackageWidget)
registerWidget(RoomRankWidget::class.java.simpleName, gameBinding.rankWidget)
registerWidget(RoomBannerWidget::class.java.simpleName, gameBinding.bannerWidget)
registerWidget(RoomGameplayListWidget::class.java.simpleName, gameBinding.gameplayListWidget)
registerWidget(RoomGameplayWidget::class.java.simpleName, gameBinding.gameplayWidget)
}
override fun onInitMusicPlayerView(view: MusicPlayerView) {

View File

@@ -14,7 +14,7 @@ import com.google.gson.Gson
import com.yizhuan.erban.R
import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.game.bean.GameCfg
import com.yizhuan.xchat_android_core.room.game.GameCfg
import com.yizhuan.xchat_android_core.room.game.GameModel
import com.yizhuan.xchat_android_core.room.game.GameStatus
import com.yizhuan.xchat_android_core.room.model.HomePartyModel

View File

@@ -0,0 +1,25 @@
package com.yizhuan.erban.avroom.gameplay
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.recyclerview.widget.RecyclerView
/**
* Created by Max on 2024/2/23 16:09
* Desc:
**/
class GameplayRecyclerView : RecyclerView {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
override fun onInterceptTouchEvent(e: MotionEvent?): Boolean {
parent.requestDisallowInterceptTouchEvent(true)
return super.onInterceptTouchEvent(e)
}
}

View File

@@ -0,0 +1,70 @@
package com.yizhuan.erban.avroom.gameplay
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.ViewConfiguration
import androidx.databinding.DataBindingUtil
import com.yizhuan.erban.R
import com.yizhuan.erban.databinding.RoomGameplayListWidgetBinding
import com.yizhuan.xchat_android_core.room.bean.RoomIcon
import com.yizhuan.xchat_android_core.support.room.FrameLayoutRoomWidget
/**
* Created by Max on 2024/2/20 10:42
* Desc:玩法活动
**/
class RoomGameplayListWidget : FrameLayoutRoomWidget {
private val adapter = RoomPlayListAdapter()
private val binding: RoomGameplayListWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_gameplay_list_widget, this, true
)
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 {
binding.recyclerView.adapter = adapter
binding.ivSwitch.setOnClickListener {
getGameplayIconWidget()?.switchUI(false)
}
adapter.setOnItemClickListener { adapter, view, position ->
(adapter.getItem(position) as? RoomIcon)?.let {
getGameplayIconWidget()?.jump(it)
}
}
}
private fun getGameplayIconWidget(): RoomGameplayWidget? {
return roomView?.findWidget(
RoomGameplayWidget::class.simpleName ?: ""
) as? RoomGameplayWidget
}
fun loadData(list: List<RoomIcon>) {
adapter.setNewData(list)
if (list.size > 6) {
binding.recyclerView.isScrollbarFadingEnabled = false
binding.recyclerView.scrollBarFadeDuration = 0
} else {
binding.recyclerView.isScrollbarFadingEnabled = true
binding.recyclerView.scrollBarFadeDuration =
ViewConfiguration.getScrollBarFadeDuration()
}
}
}

View File

@@ -0,0 +1,131 @@
package com.yizhuan.erban.avroom.gameplay
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import com.chuhai.utils.ktx.singleClick
import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog
import com.yizhuan.erban.databinding.RoomGameplayWidgetBinding
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.utils.load
import com.yizhuan.erban.ui.webview.CommonWebViewActivity
import com.yizhuan.erban.ui.webview.room_banner.RoomWebDialogActivity
import com.yizhuan.erban.utils.CommonJumpHelper
import com.yizhuan.xchat_android_core.room.bean.RoomIcon
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
/**
* Created by Max on 2024/2/20 10:42
* Desc:玩法活动
**/
class RoomGameplayWidget : FrameLayoutRoomWidget {
private val binding: RoomGameplayWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_gameplay_widget, this, true
)
private var isOpened = false
private var list: List<RoomIcon>? = null
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 {
binding.ivSwitch.setOnClickListener {
switchUI(!isOpened)
}
binding.ivIcon.singleClick {
list?.getOrNull(0)?.let {
jump(it)
}
}
}
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
super.onInitialize(roomView, roomContext)
refreshData()
}
private fun refreshData() {
val disposable = AvRoomModel.get().roomGamePlayList
.subscribe { list: List<RoomIcon> ->
loadData(list)
}
getCompositeDisposable().add(disposable)
}
fun switchUI(openListWidget: Boolean) {
this.isOpened = openListWidget
if (openListWidget) {
this.visibility = View.INVISIBLE
getGameplayListWidget()?.visibility = View.VISIBLE
} else {
this.visibility = View.VISIBLE
getGameplayListWidget()?.visibility = View.GONE
}
}
private fun loadData(list: List<RoomIcon>) {
this.list = list
this.isVisible = list.isNotEmpty()
val listWidget = getGameplayListWidget()
if (list.isEmpty()) {
listWidget?.isVisible = false
}
listWidget?.loadData(list)
binding.ivIcon.load(list.firstOrNull()?.icon)
}
fun jump(data: RoomIcon) {
if (data.isSeizeTreasure()) {
HomeFairyActivity.start(context)
} else if (data.isFirstCharge()) {
FirstChargeDialog.start(context)
} else if (data.isFindLove()) {
GoldBoxHelper.handleBoxClick(context)
} else if (data.isNauticalAdventure()) {
PullRadishActivity.start(context)
} else {
val url = data.skipContent
if (data.skipType == 3 && !url.isNullOrEmpty()) {
if (data.showType == 2) {
RoomWebDialogActivity.start(context, url, false)
} else {
CommonWebViewActivity.start(context, url)
}
} else {
CommonJumpHelper.bannerJump(context, data)
}
}
}
private fun getGameplayListWidget(): RoomGameplayListWidget? {
return roomView?.findWidget(
RoomGameplayListWidget::class.simpleName ?: ""
) as? RoomGameplayListWidget
}
}

View File

@@ -0,0 +1,19 @@
package com.yizhuan.erban.avroom.gameplay
import android.widget.ImageView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.room.bean.RoomIcon
/**
* Created by Max on 2024/2/20 11:38
* Desc:
**/
class RoomPlayListAdapter :
BaseQuickAdapter<RoomIcon, BaseViewHolder>(R.layout.room_gameplay_item) {
override fun convert(helper: BaseViewHolder, item: RoomIcon?) {
helper.getView<ImageView>(R.id.iv_icon).load(item?.icon)
}
}

View File

@@ -6,7 +6,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.pay.bean.FirstChargeReward
import com.yizhuan.xchat_android_core.utils.CoreTextUtils
import com.yizhuan.xchat_android_core.utils.TextUtils
class RewardAdapter :
BaseQuickAdapter<FirstChargeReward, BaseViewHolder>(R.layout.item_new_user_charge_reward) {
@@ -16,6 +16,6 @@ class RewardAdapter :
helper.setText(R.id.tv_name, item.showText)
.setText(R.id.tv_time, "(${item.showTime})")
.setGone(R.id.tv_time, !CoreTextUtils.isEmptyText(item.showTime))
.setGone(R.id.tv_time, !TextUtils.isEmptyText(item.showTime))
}
}

View File

@@ -1,15 +1,7 @@
package com.yizhuan.erban.avroom.presenter;
import android.annotation.SuppressLint;
import com.yizhuan.erban.avroom.view.IGameRoomView;
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import java.util.ArrayList;
import java.util.List;
/**
@@ -20,37 +12,4 @@ import java.util.List;
*/
public class GameRoomPresenter extends BaseRoomPresenter<IGameRoomView> {
@SuppressLint("CheckResult")
public void getBannerList() {
AvRoomModel.get().getRoomBanner()
.compose(bindToLifecycle())
.subscribe(bannerInfos -> {
if (bannerInfos == null) bannerInfos = new ArrayList<>();
final boolean firstCharge = UserUtils.getUserInfo().isFirstCharge();
if (firstCharge) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFirstCharge(true);
bannerInfos.add(0, bannerInfo);
}
if(GoldBoxHelper.isShowFairy()){
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFairy(true);
bannerInfos.add(firstCharge ? 1 : 0, bannerInfo);
}
List<BannerInfo> finalBannerInfos = bannerInfos;
GoldBoxHelper.isHideBox()
.subscribe(isHide -> {
if (!isHide) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setBox(true);
int index = 0;
if (firstCharge) index++;
if (GoldBoxHelper.isShowFairy()) index++;
finalBannerInfos.add(index, bannerInfo);
}
getMvpView().onShowBanner(finalBannerInfos);
}, throwable -> getMvpView().onShowBanner(finalBannerInfos));
});
}
}

View File

@@ -12,12 +12,10 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.view.IHomePartyView;
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.bean.RoomQueueInfo;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.FaceAttachment;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
@@ -297,49 +295,4 @@ public class HomePartyPresenter extends BaseRoomPresenter<IHomePartyView> {
.subscribe(s -> SingleToastUtil.showToast(ResUtil.getString(R.string.avroom_presenter_homepartypresenter_01))
, e -> SingleToastUtil.showToast(e.getMessage()));
}
@SuppressLint("CheckResult")
public void getBannerList() {
mAvRoomModel.getRoomBanner()
.compose(bindToLifecycle())
.subscribe(bannerInfos -> {
final boolean firstCharge = UserUtils.getUserInfo().isFirstCharge();
if (GoldBoxHelper.needIntegrateBoxEntrance()) {
if (firstCharge) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFirstCharge(true);
bannerInfos.add(0, bannerInfo);
}
if (GoldBoxHelper.isShowRadish()) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setRadish(true);
bannerInfos.add(firstCharge ? 1 : 0, bannerInfo);
}
GoldBoxHelper.isHideBox()
.subscribe(isHide -> {
if (!isHide) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setBox(true);
int index = 0;
if (firstCharge) index++;
if (GoldBoxHelper.isShowRadish()) index++;
bannerInfos.add(index, bannerInfo);
}
getMvpView().onShowBanner(bannerInfos);
}, throwable -> getMvpView().onShowBanner(bannerInfos));
} else {
if(GoldBoxHelper.isShowFairy()){
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFairy(true);
bannerInfos.add(0, bannerInfo);
}
if (firstCharge) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFirstCharge(true);
bannerInfos.add(0, bannerInfo);
}
getMvpView().onShowBanner(bannerInfos);
}
});
}
}

View File

@@ -1,11 +1,7 @@
package com.yizhuan.erban.avroom.presenter;
import android.annotation.SuppressLint;
import com.yizhuan.erban.avroom.view.ISingleRoomView;
import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
/**
* <p> </p>
@@ -14,50 +10,4 @@ import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
* @date 2017/12/8
*/
public class SingleRoomPresenter extends BaseRoomPresenter<ISingleRoomView> {
@SuppressLint("CheckResult")
public void getBannerList() {
mAvRoomModel.getRoomBanner()
.compose(bindToLifecycle())
.subscribe(bannerInfos -> {
final boolean firstCharge = UserUtils.getUserInfo().isFirstCharge();
if (GoldBoxHelper.needIntegrateBoxEntrance()) {
if (firstCharge) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFirstCharge(true);
bannerInfos.add(0, bannerInfo);
}
if (GoldBoxHelper.isShowRadish()) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setRadish(true);
bannerInfos.add(firstCharge ? 1 : 0, bannerInfo);
}
GoldBoxHelper.isHideBox()
.subscribe(isHide -> {
if (!isHide) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setBox(true);
int index = 0;
if (firstCharge) index++;
if (GoldBoxHelper.isShowRadish()) index++;
bannerInfos.add(index, bannerInfo);
}
getMvpView().onShowBanner(bannerInfos);
}, throwable -> getMvpView().onShowBanner(bannerInfos));
} else {
if(GoldBoxHelper.isShowFairy()){
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFairy(true);
bannerInfos.add(0, bannerInfo);
}
if (firstCharge) {
BannerInfo bannerInfo = new BannerInfo();
bannerInfo.setFirstCharge(true);
bannerInfos.add(0, bannerInfo);
}
getMvpView().onShowBanner(bannerInfos);
}
});
}
}

View File

@@ -60,7 +60,7 @@ public class MyRecommendCardActivity extends BaseViewBindingActivity<ActivityMyR
@Override
public void performAction(View view) {
CommonWebViewActivity.start(context, UriProvider.JAVA_WEB_URL +
"/repo/modules/recommend-card/help.html");
"/peko/modules/recommend-card/help.html");
}
});
}

View File

@@ -10,8 +10,8 @@ import com.yizhuan.erban.common.widget.dialog.DialogManager
import com.yizhuan.erban.databinding.DialogRedPackageGoRoomBinding
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageNotifyInfo
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_library.utils.ResUtil
import org.greenrobot.eventbus.EventBus

View File

@@ -10,7 +10,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.RedPackageAttachment
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager
import com.yizhuan.xchat_android_core.manager.RoomEvent
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageNotifyInfo
import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo
import com.yizhuan.xchat_android_core.support.room.RoomContext
import com.yizhuan.xchat_android_core.support.room.RoomHandler

View File

@@ -13,7 +13,7 @@ import com.yizhuan.erban.avroom.redpackage.open.RedPackageOpenDialog
import com.yizhuan.erban.common.widget.dialog.DialogManager
import com.yizhuan.erban.databinding.RedPackageWidgetBinding
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageNotifyInfo
import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo
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
@@ -21,6 +21,7 @@ import com.yizhuan.xchat_android_core.support.room.RoomWidget
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import okhttp3.internal.toLongOrDefault
import java.text.SimpleDateFormat

View File

@@ -32,10 +32,6 @@ import com.yizhuan.xchat_android_core.home.model.CollectionRoomModel
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.redpackage.*
import com.yizhuan.xchat_android_core.redpackage.bean.RedEnvelopeState
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageData
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageInfo
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageNotifyInfo
import com.yizhuan.xchat_android_core.support.config.Constants
import com.yizhuan.xchat_android_core.support.room.RoomContext
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes

View File

@@ -1,6 +1,7 @@
package com.yizhuan.erban.avroom.redpackage.open
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.view.isVisible
import com.chad.library.adapter.base.BaseQuickAdapter
@@ -8,8 +9,8 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.loadAvatar
import com.yizhuan.erban.utils.UserUtils
import com.yizhuan.xchat_android_core.redpackage.bean.RedEnvelopeItemVO
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.redpackage.RedEnvelopeItemVO
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_library.utils.ResUtil
import java.text.SimpleDateFormat
import java.util.Locale

View File

@@ -21,7 +21,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.utils.extension.toIntOrDef
import com.yizhuan.xchat_android_core.utils.toIntOrDef
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.SingleToastUtil

View File

@@ -17,7 +17,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.utils.extension.toIntOrDef
import com.yizhuan.xchat_android_core.utils.toIntOrDef
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
import com.yizhuan.xchat_android_library.utils.codec.DESUtils

View File

@@ -10,7 +10,7 @@ import androidx.appcompat.widget.AppCompatTextView;
import com.chuhai.utils.UiUtils;
import com.yizhuan.erban.R;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;

View File

@@ -7,7 +7,7 @@ import com.yizhuan.erban.avroom.bean.RoomAlbumPhotoInfo
import com.yizhuan.erban.base.BaseViewModel
import com.yizhuan.xchat_android_core.Constants
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
class RoomAlbumFragmentViewModel : BaseViewModel() {

View File

@@ -8,7 +8,7 @@ import com.yizhuan.erban.base.Event
import com.yizhuan.xchat_android_core.file.FileModel
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers

View File

@@ -19,8 +19,8 @@ import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.utils.ResUtil
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers

View File

@@ -16,10 +16,11 @@ import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.SimpleRoomInfo
import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel
import com.yizhuan.xchat_android_core.utils.extension.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.extension.toIntOrDef
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.toIntOrDef
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.common.application.Env
import com.yizhuan.xchat_android_library.utils.ResUtil
class SingleRoomPKCreateActivity : BaseViewBindingActivity<ActivitySingleRoomPkCreateBinding>() {

View File

@@ -8,7 +8,7 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.yizhuan.erban.R
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.room.anotherroompk.SimpleRoomInfo
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class SingleRoomPKSearchAdapter :
BaseQuickAdapter<SimpleRoomInfo, BaseViewHolder>(R.layout.item_single_room_pk_search) {

View File

@@ -9,7 +9,7 @@ import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogSingleRoomPkFinishBinding
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import java.util.concurrent.TimeUnit

View File

@@ -8,7 +8,7 @@ import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogSingleRoomPkForceFinishBinding
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class SingleRoomPkForceFinishDialog : BaseDialog<DialogSingleRoomPkForceFinishBinding>() {

View File

@@ -8,9 +8,9 @@ import com.yizhuan.erban.databinding.DialogSingleRoomPkReceivedBinding
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel
import com.yizhuan.xchat_android_core.utils.extension.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.ifNotNullOrEmpty
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.toast
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable

View File

@@ -4,7 +4,7 @@ import android.text.method.ScrollingMovementMethod
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogSingleRoomPkRuleBinding
import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
class SingleRoomPkRuleDialog : BaseDialog<DialogSingleRoomPkRuleBinding>() {

View File

@@ -1,8 +1,5 @@
package com.yizhuan.erban.avroom.view;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
@@ -12,6 +9,4 @@ import java.util.List;
*/
public interface IGameRoomView extends IBaseRoomView {
void onShowBanner(List<BannerInfo> dialogInfos);
}

View File

@@ -1,9 +1,7 @@
package com.yizhuan.erban.avroom.view;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
@@ -20,6 +18,4 @@ public interface IHomePartyView extends IBaseRoomView {
* 礼物值模式下换麦
*/
void onGiftValueChangeMic(int micPosition, String uId, boolean isInviteUpMic, RoomInfo roomInfo);
void onShowBanner(List<BannerInfo> bannerInfos);
}

View File

@@ -1,8 +1,5 @@
package com.yizhuan.erban.avroom.view;
import com.yizhuan.xchat_android_core.home.bean.BannerInfo;
import java.util.List;
/**
* <p> 轰趴房View层 </p>
@@ -12,6 +9,4 @@ import java.util.List;
*/
public interface ISingleRoomView extends IBaseRoomView {
void onShowBanner(List<BannerInfo> dialogInfos);
}

View File

@@ -39,7 +39,7 @@ import com.yizhuan.xchat_android_core.room.bean.RoomModeType;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_core.utils.extension.StringExtensionKt;
import com.yizhuan.xchat_android_core.utils.StringExtensionKt;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.ListUtils;

View File

@@ -34,7 +34,7 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.common.svga.SimpleSvgaParseCompletion;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.xchat_android_core.fansteam.bean.FansTeamMsgInfo;
import com.yizhuan.xchat_android_core.fansteam.FansTeamMsgInfo;
import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.gift.bean.GiftEffectInfo;
import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;

View File

@@ -2,8 +2,10 @@ package com.yizhuan.erban.avroom.widget;
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_GIFT_COMPOUND;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GUARDIAN_PLANET;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_RED_PACKAGE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ROOM_ALBUM;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_ROOM_TEMPLATE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_BOX_ME;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_CONVERT_L1;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_CONVERT_L2;
@@ -73,7 +75,7 @@ import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.avroom.dialog.PKResultDialog;
import com.yizhuan.erban.avroom.room_album.UnlockRoomAlbumPhotoDialog;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.common.widget.CustomAutoWidthImageSpan;
import com.yizhuan.erban.common.widget.CustomImageSpan;
import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan;
@@ -95,7 +97,7 @@ import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.bean.attachmsg.RoomQueueMsgAttachment;
import com.yizhuan.xchat_android_core.decoration.car.bean.CarInfo;
import com.yizhuan.xchat_android_core.fansteam.bean.FansTeamMsgInfo;
import com.yizhuan.xchat_android_core.fansteam.FansTeamMsgInfo;
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.GiftList;
@@ -119,6 +121,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.GiftAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.GiftBatchAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.GiftCompoundAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.GiftCompoundMsgBean;
import com.yizhuan.xchat_android_core.im.custom.bean.GuardianPlanetAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.JoinMiniWorldAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.JoinMiniWorldNoticeAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.MagicAllMicAttachment;
@@ -143,6 +146,7 @@ import com.yizhuan.xchat_android_core.im.custom.bean.RoomReceivedLuckyGiftAttach
import com.yizhuan.xchat_android_core.im.custom.bean.RoomTipAttachment;
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.im.custom.bean.TemplateMessageAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.User;
import com.yizhuan.xchat_android_core.im.custom.bean.VipMessageAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.WelcomeAttachment;
@@ -157,11 +161,11 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.miniworld.bean.MiniWorldInWorldInfo;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterHuntingResult;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterDataBean;
import com.yizhuan.xchat_android_core.noble.bean.NobleInfo;
import com.yizhuan.xchat_android_core.monsterhunting.bean.MonsterProtocol;
import com.yizhuan.xchat_android_core.noble.NobleInfo;
import com.yizhuan.xchat_android_core.noble.NobleUtil;
import com.yizhuan.xchat_android_core.praise.PraiseModel;
import com.yizhuan.xchat_android_core.redpackage.bean.RedEnvelopeRoomMsg;
import com.yizhuan.xchat_android_core.redpackage.RedEnvelopeRoomMsg;
import com.yizhuan.xchat_android_core.room.anotherroompk.ShowUserInfoDialogEvent;
import com.yizhuan.xchat_android_core.room.bean.DatingNotifyInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
@@ -177,14 +181,14 @@ import com.yizhuan.xchat_android_core.room.pk.bean.RoomPKInvitedUpMicMember;
import com.yizhuan.xchat_android_core.room.pk.bean.RoomPkData;
import com.yizhuan.xchat_android_core.room.queuing_mic.attachment.QueuingMicAttachment;
import com.yizhuan.xchat_android_core.room.queuing_mic.bean.QueuingMicInfo;
import com.yizhuan.xchat_android_core.treasurefairy.bean.FairyMsgInfoBean;
import com.yizhuan.xchat_android_core.treasurefairy.FairyMsgInfoBean;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.ExtensionUtil;
import com.yizhuan.xchat_android_core.utils.extension.StringExtensionKt;
import com.yizhuan.xchat_android_core.utils.StringExtensionKt;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_core.vip.bean.VipMessageInfo;
import com.yizhuan.xchat_android_core.vip.VipMessageInfo;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.xchat_android_library.utils.FormatUtils;
import com.yizhuan.xchat_android_library.utils.JavaUtil;
@@ -253,6 +257,7 @@ public class MessageView extends FrameLayout {
private OnClick onClick;
private OnMsgLongClickListener onLongClickListener;
private TemplateMessageAdapter templateMessageAdapter;
public MessageView(Context context) {
this(context, null);
@@ -433,7 +438,17 @@ public class MessageView extends FrameLayout {
}
}
});
}
private TemplateMessageAdapter getTemplateMessageAdapter() {
if (templateMessageAdapter == null) {
templateMessageAdapter = new TemplateMessageAdapter(uid -> {
if (clickConsumer != null) {
Single.just(String.valueOf(uid)).subscribe(clickConsumer);
}
});
}
return templateMessageAdapter;
}
public void onCurrentRoomReceiveNewMsg(List<ChatRoomMessage> messages) {
@@ -617,6 +632,19 @@ public class MessageView extends FrameLayout {
builder.setSpan(imageSpan, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* @param drawable -icon url
* @return -返回一個spannableStringBuilder
*/
public SpannableBuilder appendImg(String drawable, Object what) {
if (TextUtils.isEmpty(drawable)) return this;
int start = builder.length();
builder.append("-");
CustomImageSpan imageSpan = new CustomImageSpan(new ColorDrawable(Color.TRANSPARENT), textView, drawable);
builder.setSpan(imageSpan, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(what, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* @param drawable -icon url
@@ -633,6 +661,16 @@ public class MessageView extends FrameLayout {
return this;
}
public SpannableBuilder append(String drawable, int width, int height, Object what) {
if (TextUtils.isEmpty(drawable)) return this;
int start = builder.length();
builder.append("-");
CustomImageSpan imageSpan = new CustomImageSpan(new ColorDrawable(Color.TRANSPARENT), textView, drawable, width, height);
builder.setSpan(imageSpan, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(what, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* 文本和背景分離的情況
*/
@@ -674,6 +712,16 @@ public class MessageView extends FrameLayout {
return this;
}
public SpannableBuilder append(String imgUrl, int height, Object what) {
if (TextUtils.isEmpty(imgUrl)) return this;
int start = builder.length();
builder.append("-");
builder.setSpan(new CustomAutoWidthImageSpan(new ColorDrawable(Color.TRANSPARENT), textView, imgUrl, height)
, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(what, start, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return this;
}
/**
* @param drawable -icon
* @param width 寬
@@ -898,7 +946,7 @@ public class MessageView extends FrameLayout {
} else if (first == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) {
switch (second) {
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING:
MonsterDataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
setMonsterNotifyMessage(tvContent, dataBean.getNotifyMessage());
break;
case CustomAttachment.CUSTOM_NOTI_SUB_GAME_RESULT:
@@ -1032,6 +1080,15 @@ public class MessageView extends FrameLayout {
setFairyMsg(chatRoomMessage, tvContent);
} else if (first == CUSTOM_MSG_ROOM_ALBUM) {
setRoomAlbumMsg(chatRoomMessage, baseViewHolder);
} else if (first == CUSTOM_MSG_GUARDIAN_PLANET) {
setGuardianPlanetMsg(chatRoomMessage, tvContent);
} else if (first == CUSTOM_MSG_ROOM_TEMPLATE) {
TemplateMessageAttachment templateMessageAttachment = (TemplateMessageAttachment) chatRoomMessage.getAttachment();
if (templateMessageAttachment != null) {
getTemplateMessageAdapter().convert(tvContent, templateMessageAttachment.getTemplateMessage());
} else {
getTemplateMessageAdapter().convert(tvContent, null);
}
} else {
tvContent.setTextColor(Color.WHITE);
tvContent.setText(tvContent.getResources().getText(R.string.not_support_message_tip));
@@ -1948,6 +2005,37 @@ public class MessageView extends FrameLayout {
tvContent.setText(text.build());
}
private void setGuardianPlanetMsg(ChatRoomMessage chatRoomMessage, TextView tvContent) {
GuardianPlanetAttachment attachment = (GuardianPlanetAttachment) chatRoomMessage.getAttachment();
// 內容
SpannableBuilder text = new SpannableBuilder(tvContent)
.append(ResUtil.getString(R.string.congratulation), new ForegroundColorSpan(greyColor))
.append(attachment.getNick(), new ForegroundColorSpan(roomTipNickColor),
new OriginalDrawStatusClickSpan() {
@Override
public void onClick(@NonNull View widget) {
if (clickConsumer != null) {
Single.just(String.valueOf(attachment.getUid())).subscribe(clickConsumer);
}
}
})
.append(
ResUtil.getString(R.string.guardian_planet_msg_1),
new ForegroundColorSpan(greyColor)
)
.append(
String.valueOf(attachment.getDiamonds()),
new ForegroundColorSpan(whiteColor)
)
.append(
ResUtil.getString(R.string.guardian_planet_msg_2),
new ForegroundColorSpan(greyColor)
);
tvContent.setText(text.build());
tvContent.setOnClickListener(null);
tvContent.setMovementMethod(new LinkMovementMethod());
}
private void setLuckySeaMsg(ChatRoomMessage chatRoomMessage, TextView tvContent) {
RoomLuckySeaAttachment attachment = (RoomLuckySeaAttachment) chatRoomMessage.getAttachment();
RoomLuckySeaMsgBean bean = attachment.getRoomLuckySeaMsgInfo();
@@ -3034,7 +3122,7 @@ public class MessageView extends FrameLayout {
} else if (attachment.getFirst() == CustomAttachment.CUSTOM_MSG_HEADER_TYPE_MONSTER_HUNTING) {
switch (attachment.getSecond()) {
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_MONSTER_HUNTING:
MonsterDataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
MonsterProtocol.DataBean dataBean = ((MonsterStatusAttachment) attachment).getDataBean();
RoomInfo mCurrentRoomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (!Objects.equals(mCurrentRoomInfo.getUid(), dataBean.getAppearRoomUid())) {
AVRoomActivity.start(getContext(), dataBean.getAppearRoomUid());

View File

@@ -51,7 +51,7 @@ import com.yizhuan.xchat_android_core.room.bean.DatingNotifyInfo
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.UserInfo
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_library.utils.ListUtils
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.StringUtils
@@ -151,8 +151,8 @@ class RoomEffectBoxView @JvmOverloads constructor(
.subscribe { roomEvent: RoomEvent? ->
if (roomEvent == null || AvRoomDataManager.get().isSelfGamePlaying) return@subscribe
when (roomEvent.event) {
RoomEvent.BOX_NOTIFY -> addBoxNotify(roomEvent.chatRoomMessage)
RoomEvent.BOX_NOTIFY_SVGA -> addBoxNotify(roomEvent.chatRoomMessage)
// RoomEvent.BOX_NOTIFY -> addBoxNotify(roomEvent.chatRoomMessage)
// RoomEvent.BOX_NOTIFY_SVGA -> addBoxNotify(roomEvent.chatRoomMessage)
RoomEvent.DATING_ALL_NOTIFY -> addDatingAllNotify(roomEvent.chatRoomMessage)
RoomEvent.RADISH_NOTIFY,
RoomEvent.RADISH_NOTIFY_SVGA -> addRadishNotify(roomEvent.chatRoomMessage)

View File

@@ -32,12 +32,14 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomNotificationAttachment
import com.opensource.svgaplayer.*
import com.opensource.svgaplayer.SVGAParser.Companion.shareParser
import com.yizhuan.erban.R
import com.yizhuan.erban.application.XChatApplication
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.avroom.bean.RoomPlayBean
import com.yizhuan.erban.avroom.helper.AnimHelper
import com.yizhuan.erban.base.TitleBar
import com.yizhuan.erban.common.svga.SimpleSvgaCallback
import com.yizhuan.erban.databinding.LayoutRoomEffectBinding
import com.yizhuan.erban.treasure_box.activity.TreasureBoxActivity
import com.yizhuan.erban.ui.utils.ImageLoadUtils
import com.yizhuan.erban.ui.utils.isDestroyed
import com.yizhuan.erban.ui.utils.load
@@ -62,7 +64,7 @@ import com.yizhuan.xchat_android_core.room.bean.DatingNotifyInfo
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.UserInfo
import com.yizhuan.xchat_android_core.utils.extension.subAndReplaceDot
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
import com.yizhuan.xchat_android_library.utils.ListUtils
import com.yizhuan.xchat_android_library.utils.ResUtil
import com.yizhuan.xchat_android_library.utils.StringUtils
@@ -310,7 +312,7 @@ class RoomEffectView @JvmOverloads constructor(
val isPlay = onPlayAnimCallback?.invoke() ?: false
when (messagesPlay[0].event) {
RoomEvent.BOX_NOTIFY -> {//寻爱
if ((mContext as AVRoomActivity).isTopActivity) {
if ((mContext as AVRoomActivity).isTopActivity || XChatApplication.gStack.topActivity is TreasureBoxActivity) {
playNotifyStateLiveData?.value = true
resetPlayNotifyMargin()
showBoxNotify(
@@ -320,7 +322,7 @@ class RoomEffectView @JvmOverloads constructor(
}
RoomEvent.BOX_NOTIFY_SVGA -> {//寻爱
if ((mContext as AVRoomActivity).isTopActivity) {
if ((mContext as AVRoomActivity).isTopActivity || XChatApplication.gStack.topActivity is TreasureBoxActivity) {
playNotifyStateLiveData?.value = true
resetPlayNotifyMargin()
showBoxNotifyBySVGA(messagesPlay.removeAt(0))

View File

@@ -0,0 +1,133 @@
package com.yizhuan.erban.avroom.widget
import android.content.Context
import android.graphics.Color
import android.text.method.LinkMovementMethod
import android.text.style.ForegroundColorSpan
import android.view.View
import android.widget.TextView
import com.chuhai.utils.UiUtils
import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan
import com.yizhuan.erban.utils.CommonJumpHelper
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
import com.yizhuan.xchat_android_core.im.custom.bean.TemplateMessage
import com.yizhuan.xchat_android_core.im.custom.bean.TemplateMessage.TemplateNode
/**
* Created by Max on 2024/2/22 17:20
* Desc:模版消息适配器
**/
class TemplateMessageAdapter(val listener: Listener) {
fun convert(textView: TextView, attachment: TemplateMessage?) {
if (attachment == null) {
textView.text = ""
return
}
val nodeList = attachment.getNodeList()
val textBuilder = MessageView.SpannableBuilder(textView)
nodeList.forEach {
if (it is TemplateNode.NormalNode) {
val textColor = parseColor(it.textColor)
if (textColor != null) {
textBuilder.append(it.text, ForegroundColorSpan(textColor))
} else {
textBuilder.append(it.text)
}
} else if (it is TemplateNode.SpecialNode) {
when (it.content.type) {
TemplateMessage.Content.TEXT -> {
val text = it.content.text?.getFirstText()
if (!text.isNullOrEmpty()) {
val textColor = parseColor(it.content.textColor)
val clickSpan = createClickSpan(textView.context, it.content)
val list = ArrayList<Any>()
if (textColor != null) {
list.add(ForegroundColorSpan(textColor))
}
if (clickSpan != null) {
list.add(clickSpan)
}
textBuilder.append(text, *list.toArray())
}
}
TemplateMessage.Content.IMAGE -> {
val image = it.content.image
val width = it.content.width ?: 0
val height = it.content.height ?: 0
val clickSpan = createClickSpan(textView.context, it.content)
if (height > 0 && width == 0) {
if (clickSpan != null) {
textBuilder.append(
image,
UiUtils.dip2px(height.toFloat()),
clickSpan
)
} else {
textBuilder.append(image, UiUtils.dip2px(height.toFloat()))
}
} else if (height > 0 && width > 0) {
if (clickSpan != null) {
textBuilder.append(
image,
UiUtils.dip2px(width.toFloat()),
UiUtils.dip2px(height.toFloat()), clickSpan
)
} else {
textBuilder.append(
image,
UiUtils.dip2px(width.toFloat()),
UiUtils.dip2px(height.toFloat())
)
}
} else {
if (clickSpan != null) {
textBuilder.appendImg(image, clickSpan)
} else {
textBuilder.appendImg(image)
}
}
}
}
}
}
textView.text = textBuilder.build()
textView.setOnClickListener(null)
textView.movementMethod = LinkMovementMethod()
}
private fun createClickSpan(
context: Context,
content: TemplateMessage.Content
): OriginalDrawStatusClickSpan? {
val skipType = content.getSkipType()
val skipUri = content.getSkipUri()
if (skipType > 0 && !skipUri.isNullOrEmpty()) {
return object : OriginalDrawStatusClickSpan() {
override fun onClick(widget: View) {
if (skipType == BannerInfo.SKIP_TYPE_ROOM_USER_CARD) {
listener.onShowUserCard(skipUri)
} else {
CommonJumpHelper.bannerJump(context, content)
}
}
}
} else {
return null
}
}
private fun parseColor(color: String?): Int? {
try {
return Color.parseColor(color)
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
return null
}
interface Listener {
fun onShowUserCard(uid: String)
}
}

View File

@@ -110,21 +110,21 @@ 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.mentoring_relationship.event.GrabApprenticesEvent;
import com.yizhuan.xchat_android_core.newbie.bean.NewbieHelloInfo;
import com.yizhuan.xchat_android_core.newbie.NewbieHelloInfo;
import com.yizhuan.xchat_android_core.newbie.event.NewbieHelloDialogEvent;
import com.yizhuan.xchat_android_core.noble.bean.AllServiceGiftProtocolDataBean;
import com.yizhuan.xchat_android_core.noble.bean.NobleInfo;
import com.yizhuan.xchat_android_core.noble.bean.NobleProtocol;
import com.yizhuan.xchat_android_core.noble.AllServiceGiftProtocol;
import com.yizhuan.xchat_android_core.noble.NobleInfo;
import com.yizhuan.xchat_android_core.noble.NobleProtocol;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.pay.bean.WalletInfo;
import com.yizhuan.xchat_android_core.redpackage.bean.RedPackageNotifyInfo;
import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo;
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.RoomContext;
import com.yizhuan.xchat_android_core.treasurefairy.bean.FairyMsgInfoBean;
import com.yizhuan.xchat_android_core.treasurefairy.FairyMsgInfoBean;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_core.vip.bean.VipMessageInfo;
import com.yizhuan.xchat_android_core.vip.VipMessageInfo;
import com.yizhuan.xchat_android_library.common.util.DeviceUtil;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
@@ -177,7 +177,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
private boolean isShowingChargeDialog;
private Dialog giftDialog;
private LinkedList<AllServiceGiftProtocolDataBean> giftList;
private LinkedList<AllServiceGiftProtocol.DataBean> giftList;
private Dialog playEffectDialog;
private LinkedList<PlayEffectInfo> playEffectList;
@@ -988,7 +988,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
giftList = new LinkedList<>();
}
int second2 = baseProtocol.getSecond();
AllServiceGiftProtocolDataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocolDataBean.class);
AllServiceGiftProtocol.DataBean data = JSON.parseObject(String.valueOf(baseProtocol.getData()), AllServiceGiftProtocol.DataBean.class);
if (data == null || data.getGiftUrl() == null) return;
giftList.add(data);
if (second2 == CUSTOM_MSG_ALL_SERVICE_GIFT) {
@@ -1209,7 +1209,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
private void showGiftDialog() {
if (giftList == null) return;
if (giftList.size() == 0) return;
AllServiceGiftProtocolDataBean data = giftList.peekFirst();
AllServiceGiftProtocol.DataBean data = giftList.peekFirst();
if (data == null) {
return;
}
@@ -1222,7 +1222,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
giftDialog = generateAllServiceGiftDialog(this, data);
giftDialog.setOnDismissListener(dialog -> {
giftList.pollFirst();
AllServiceGiftProtocolDataBean dataBean = giftList.peekFirst();
AllServiceGiftProtocol.DataBean dataBean = giftList.peekFirst();
if (dataBean != null) {
if (isValid()) {
showGiftDialog();
@@ -1252,7 +1252,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
return false;
}
private AllServiceGiftLevelDialog generateAllServiceGiftDialog(@NonNull Context context, @NonNull AllServiceGiftProtocolDataBean dataBean) {
private AllServiceGiftLevelDialog generateAllServiceGiftDialog(@NonNull Context context, @NonNull AllServiceGiftProtocol.DataBean dataBean) {
return new AllServiceGiftLevelDialog(context, dataBean);
}

View File

@@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.yizhuan.xchat_android_core.utils.extension.toast
import com.yizhuan.xchat_android_core.utils.toast
import com.yizhuan.xchat_android_library.net.rxnet.exception.ExceptionHandle
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch

View File

@@ -19,7 +19,7 @@ public abstract class CommonAdapter<T, K extends BaseViewHolder> extends Recycle
private List<T> mData;
private OnItemParentClickListener<T, K> mOnItemClickListener;
private OnItemClickListener<T, K> mOnItemClickListener;
private OnItemChildClickListener<T, K> mOnItemChildClickListener;
@@ -37,7 +37,7 @@ public abstract class CommonAdapter<T, K extends BaseViewHolder> extends Recycle
return this;
}
public CommonAdapter<T, K> setOnItemClickListener(OnItemParentClickListener<T, K> onItemClickListener) {
public CommonAdapter<T, K> setOnItemClickListener(OnItemClickListener<T, K> onItemClickListener) {
this.mOnItemClickListener = onItemClickListener;
return this;
}

View File

@@ -4,6 +4,6 @@ package com.yizhuan.erban.base.list;
* Created by lvzebiao on 2018/12/18.
*/
public interface OnItemParentClickListener<T, K extends BaseViewHolder> {
public interface OnItemClickListener<T, K extends BaseViewHolder> {
void onItemClick(K holder, T item, int position);
}

View File

@@ -10,7 +10,7 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import java.util.List;

View File

@@ -6,7 +6,7 @@ import android.content.Context;
import com.yizhuan.erban.application.XChatApplication;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.utils.ActWhiteListMrg;
import com.yizhuan.xchat_android_core.utils.CoreLogger;
import com.yizhuan.xchat_android_core.utils.Logger;
import java.lang.ref.WeakReference;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -84,7 +84,7 @@ public class ActivityStack {
}
Activity existActivity = getActivity(activity.getClass());
if (existActivity != null) {
CoreLogger.error(TAG, "已存在多个相同的实例:" + existActivity.getClass());
Logger.error(TAG, "已存在多个相同的实例:" + existActivity.getClass());
existActivity.finish();//如果onActivityCreated回调时返回栈里面已存在当前Activity的实例则先关掉之前的Activity避免创建过多实例消耗太多内存
}
for (WeakReference<Activity> ac : mActivity) {

View File

@@ -11,8 +11,9 @@ import com.yizhuan.xchat_android_library.common.application.BaseApp
import com.yizhuan.xchat_android_library.common.delegate.SpDelegate
import com.yizhuan.xchat_android_library.common.file.FileHelper
import com.yizhuan.xchat_android_library.common.glide.GlideEngine
import com.yizhuan.xchat_android_library.common.util.LibLogger
import com.yizhuan.xchat_android_library.common.util.Logger
import com.yizhuan.xchat_android_library.easyphoto.EasyPhotos
import com.yizhuan.xchat_android_library.easyphoto.constant.Type.*
import com.yizhuan.xchat_android_library.easyphoto.models.album.entity.Photo
import com.yizhuan.xchat_android_library.utils.TimeUtils
import com.yizhuan.xchat_android_library.utils.TimeUtils.TIME_FORMAT
@@ -159,7 +160,7 @@ object PhotoProvider {
val path = "$foldPath${it.name}"
if (FileHelper.copyFileFromUri(it.uri, path, true)) {
newPaths.add(path)
LibLogger.debug(TAG, "path: ${it.path} , displayName: ${it.name} , newPath: $path ")
Logger.debug(TAG, "path: ${it.path} , displayName: ${it.name} , newPath: $path ")
}
}
}
@@ -173,7 +174,7 @@ object PhotoProvider {
* 清除复制缓存
*/
fun clearCache() {
LibLogger.debug(
Logger.debug(
TAG, "clearCache => mLastSelectTime: ${TimeUtils.getDateTimeString(
mLastSelectTime, TIME_FORMAT)}")
FileHelper.removeAllFile(getInternalPath() + File.separator)

View File

@@ -14,7 +14,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import com.yizhuan.xchat_android_library.common.util.LibLogger;
import com.yizhuan.xchat_android_library.common.util.Logger;
/**
* Created by wushaocheng
@@ -41,7 +41,7 @@ public class BitmapUtil {
final int height = options.outHeight;
final int width = options.outWidth;
LibLogger.info(TAG, "origin, w= " + width + " h=" + height);
Logger.info(TAG, "origin, w= " + width + " h=" + height);
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
@@ -54,13 +54,13 @@ public class BitmapUtil {
}
}
LibLogger.info(TAG, "sampleSize:" + inSampleSize);
Logger.info(TAG, "sampleSize:" + inSampleSize);
return inSampleSize;
}
public static Bitmap setImgSize(Bitmap bm, float newWidth, float newHeight) {
if (bm == null) {
LibLogger.error(TAG, "bitmap is null.");
Logger.error(TAG, "bitmap is null.");
return null;
}
// 获得图片的宽高.

View File

@@ -0,0 +1,227 @@
package com.yizhuan.erban.common.util;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.xchat_android_core.utils.Logger;
import java.util.List;
import com.yizhuan.xchat_android_library.common.base.BaseDialogFragment;
import com.yizhuan.xchat_android_library.common.util.ActivityHelper;
import com.yizhuan.xchat_android_library.common.util.ReflectionUtils;
/**
* User: wukai
* Date: 2017/04/06
* Description:
*/
public class DialogFragmentUtils {
private static final String TAG = "DialogFragmentUtils";
public static final String KEY_DIALOG_TAG = "dialog_tag";
private static int mFragmentIndex = 0;
public static String getFragmentTag(String tag, boolean appendIndexTag) {
if (appendIndexTag) {
return String.format("%s_%d", tag, mFragmentIndex++);
}
return tag;
}
public static String getTag(Bundle bundle) {
return bundle.getString(KEY_DIALOG_TAG);
}
public static boolean isShowing(String fragmentTag, Activity activity) {
if (activity == null) {
Logger.debug(TAG, "check isShowing activity is null return");
return false;
}
if (activity.isFinishing()) {
Logger.debug(TAG, "check isShowing activity isFinishing return");
return false;
}
if (activity.isDestroyed()) {
Logger.debug(TAG, "check isShowing activity is isDestroyed");
return false;
}
if (!(activity instanceof BaseActivity)) {
Logger.error(TAG, "check isShowing activity fail, activity is not BaseActivity");
return false;
}
FragmentManager fragmentManager = ((BaseActivity) activity).getSupportFragmentManager();
Fragment fragmentByTag = fragmentManager.findFragmentByTag(fragmentTag);
if (fragmentByTag == null) {
return false;
}
if (fragmentByTag instanceof DialogFragment) {
DialogFragment dialogFragment = (DialogFragment) fragmentByTag;
return dialogFragment.getDialog() != null && dialogFragment.getDialog().isShowing();
} else return fragmentByTag.isVisible();
}
public static BaseDialogFragment show(String fragmentTag, Activity activity, Class<? extends BaseDialogFragment> clazz, Bundle bundle, boolean appendIndexTag) {
try {
BaseDialogFragment baseDialogFragment = clazz.newInstance();
return show(fragmentTag, activity, baseDialogFragment, bundle, appendIndexTag);
} catch (Exception e1) {
Logger.error(TAG, String.valueOf(e1));
}
return null;
}
public static BaseDialogFragment show(String fragmentTag, Activity activity, BaseDialogFragment baseDialogFragment, Bundle bundle, boolean appendIndexTag) {
if (TextUtils.isEmpty(fragmentTag)) {
Logger.error(TAG, "show dialog failure, fragmentTag = null");
return null;
}
if (!ActivityHelper.isCanUse(activity)) {
Logger.error(TAG, "show dialog failure, activity is not can use");
return null;
}
if (!(activity instanceof BaseActivity)) {
Logger.error(TAG, "show dialog activity fail, activity is not BaseActivity");
return null;
}
FragmentManager fragmentManager = ((BaseActivity) activity).getSupportFragmentManager();
if (bundle == null) {
bundle = new Bundle();
}
String newFragmentTag = DialogFragmentUtils.getFragmentTag(fragmentTag, appendIndexTag);
Logger.debug(TAG, "showDialog: " + newFragmentTag);
Fragment fragment = fragmentManager.findFragmentByTag(newFragmentTag);
if (fragment == null) {
bundle.putString(KEY_DIALOG_TAG, newFragmentTag);
baseDialogFragment.setArguments(bundle);
} else {
if (ActivityHelper.isCanUse(activity)) {
baseDialogFragment = ((BaseDialogFragment) fragment);
baseDialogFragment.dismissAllowingStateLoss();
}
}
if (ActivityHelper.isCanUse(activity) && baseDialogFragment != null) {
try {
doShow(fragmentManager, baseDialogFragment, newFragmentTag);
} catch (Exception e) {
Logger.error(TAG, String.valueOf(e));
}
} else {
return null;
}
return baseDialogFragment;
}
public static void doShow(final FragmentManager fragmentManager, final BaseDialogFragment dialogFragment, final String tag) {
PauseWorkerHandler.instance().post(new Runnable() {
@Override
public void run() {
if (!fragmentManager.isStateSaved()) { // 保证只有在activity存在的时候弹出dialog防止崩溃
// Fix 快速显示同一个弹窗报 Fragment already added: 异常
if (isInvokeShow(dialogFragment)) {
Logger.error(TAG, "Already has fragment=" + dialogFragment.getTag());
return;
}
dialogFragment.show(fragmentManager, tag);
}
}
});
}
public static BaseDialogFragment show(String fragmentTag, Activity activity, Class<? extends BaseDialogFragment> clazz, Bundle bundle) {
return show(fragmentTag, activity, clazz, bundle, true);
}
public static BaseDialogFragment show(String fragmentTag, Activity activity, Class<? extends BaseDialogFragment> clazz) {
return show(fragmentTag, activity, clazz, null, true);
}
public static void dismiss(String fragmentTag, Activity activity) {
if (TextUtils.isEmpty(fragmentTag)) {
Logger.error(TAG, "dismiss dialog failure, fragmentTag = null");
return;
}
if (activity == null) {
Logger.error(TAG, "dismiss %s dialog failure, Activity = null, tag=" + fragmentTag);
return;
}
if (activity.isFinishing()) {
Logger.error(TAG, "dismiss %s dialog failure, Activity is finish, tag=" + fragmentTag);
return;
}
if (activity.isDestroyed()) {
Logger.error(TAG, "dismiss %s dialog failure, Activity is null, tag=" + fragmentTag);
return;
}
if (!(activity instanceof BaseActivity)) {
Logger.error(TAG, "dismiss %s dialog failure, Activity is not BaseActivity, tag=" + fragmentTag);
return;
}
FragmentManager manager = ((BaseActivity) activity).getSupportFragmentManager();
Utils.executePendingTransactionsSafely(fragmentTag, manager);
Fragment fragment = manager.findFragmentByTag(fragmentTag);
if (fragment == null) {
Logger.error(TAG, "dismiss %s dialog failure, Fragment = null, tag="+fragmentTag);
tryCleanDialogFragment(fragmentTag, manager);
} else {
Logger.debug(TAG, "closeDialog=" + fragmentTag);
((DialogFragment) fragment).dismissAllowingStateLoss();
}
}
public static void tryCleanDialogFragment(String fragmentTag, FragmentManager fragmentManager) {
List<Fragment> fragmentList = fragmentManager.getFragments();
int sizeChildFrgList = fragmentList.size();
for (int i = sizeChildFrgList - 1; i >= 0; i--) {
Fragment brotherFragment = fragmentList.get(i);
if (brotherFragment == null) {
continue;
}
Bundle arguments = brotherFragment.getArguments();
if (arguments == null) {
continue;
}
String findTag = getTag(arguments);
if (!TextUtils.isEmpty(findTag) &&
brotherFragment instanceof DialogFragment && findTag.equals(fragmentTag)) {
Logger.debug(TAG, "closeDialog " + fragmentTag + "by tryCleanDialogFragment");
((DialogFragment) brotherFragment).dismissAllowingStateLoss();
break;
}
}
}
private static boolean isInvokeShow(DialogFragment dialogFragment) {
Object value = ReflectionUtils.getFieldValue(dialogFragment, "mShownByMe");
if (value == null) {
Logger.error(TAG, "isInvokeShow value is null");
return false;
}
boolean isShown = (boolean) value;
Logger.debug(TAG, "isInvokeShow isShown=" + isShown);
return isShown;
}
}

View File

@@ -2,7 +2,7 @@ package com.yizhuan.erban.common.util;
import android.os.Handler;
import android.os.Looper;
import com.yizhuan.xchat_android_core.utils.CoreLogger;
import com.yizhuan.xchat_android_core.utils.Logger;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -47,7 +47,7 @@ public class PauseWorkerHandler {
@Override
public void run() {
boolean isBackground = AppLifeCycleHelper.isBackground();
CoreLogger.info(TAG, "onAppVisibleChangeEvent isBackground="+isBackground);
Logger.info(TAG, "onAppVisibleChangeEvent isBackground="+isBackground);
if (isBackground) {
pause();
} else {

View File

@@ -0,0 +1,106 @@
package com.yizhuan.erban.common.util;
import com.yizhuan.xchat_android_library.utils.FP;
public class StringUtils {
public static boolean isNullOrEmpty(String str) {
return FP.empty(str);
}
public static boolean isNotNullOrEmpty(String str) {
return !StringUtils.isNullOrEmpty(str);
}
public static boolean equal(String s1, String s2) {
return StringUtils.equal(s1, s2, false);
}
public static boolean equal(String s1, String s2, boolean ignoreCase) {
if (s1 != null && s2 != null) {
if (ignoreCase) {
return s1.equalsIgnoreCase(s2);
}
return s1.equals(s2);
}
return s1 == null && s2 == null;
}
public static int find(String pattern, String s) {
return StringUtils.find(pattern, s, false);
}
public static int find(String pattern, String s, boolean ignoreCase) {
return StringUtils.find(pattern, s, ignoreCase, false);
}
public static int find(String pattern, String s, boolean ignoreCase, boolean ignoreWidth) {
if (FP.empty(s)) {
return -1;
} else {
pattern = FP.ref(pattern);
if (ignoreCase) {
pattern = pattern.toLowerCase();
s = s.toLowerCase();
}
if (ignoreWidth) {
pattern = narrow(pattern);
s = narrow(s);
}
return s.indexOf(pattern);
}
}
public static String narrow(String s) {
if (FP.empty(s)) {
return "";
} else {
char[] cs = s.toCharArray();
for (int i = 0; i < cs.length; ++i) {
cs[i] = narrow(cs[i]);
}
return new String(cs);
}
}
public static char narrow(char c) {
if (c >= '' && c <= '') {
return (char) (c - 'ﻠ');
} else if (c == 12288) {
return (char) (c - 12288 + 32);
} else if (c == '。') {
return '。';
} else if (c == 12539) {
return '·';
} else {
return c == 8226 ? '·' : c;
}
}
public static int ord(char c) {
if ('a' <= c && c <= 'z') {
return c;
} else {
return 'A' <= c && c <= 'Z' ? c - 65 + 97 : 0;
}
}
public static int compare(String x, String y) {
return FP.ref(x).compareTo(FP.ref(y));
}
public static long parseLong(String s) {
long l = 0L;
try {
l = Long.parseLong(s.trim());
} catch (Exception e) {
return l;
}
return l;
}
}

View File

@@ -0,0 +1,180 @@
package com.yizhuan.erban.common.util;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import androidx.fragment.app.FragmentManager;
import com.yizhuan.xchat_android_core.utils.Logger;
import java.lang.reflect.Field;
import java.util.List;
/**
* author: wushaocheng
* time: 2022/11/15
* desc: 转换帮助类
*/
public class Utils {
public static <T> boolean notEmpty(List<T> list) {
return !isEmpty(list);
}
public static <T> boolean isEmpty(List<T> list) {
if (list == null || list.size() == 0) {
return true;
}
return false;
}
public static int getNavigationBarHeight(Context context) {
int statusBarHeight = 0;
int resourceId = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
if (resourceId != 0) {
resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
//根据资源ID获取响应的尺寸值
statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
}
return statusBarHeight;
}
/**
* 判断底部navigator是否已经显示
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public static boolean hasSoftKeys(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display d = windowManager.getDefaultDisplay();
DisplayMetrics realDisplayMetrics = new DisplayMetrics();
d.getRealMetrics(realDisplayMetrics);
int realHeight = realDisplayMetrics.heightPixels;
int realWidth = realDisplayMetrics.widthPixels;
DisplayMetrics displayMetrics = new DisplayMetrics();
d.getMetrics(displayMetrics);
int displayHeight = displayMetrics.heightPixels;
int displayWidth = displayMetrics.widthPixels;
return (realWidth - displayWidth) > 0 || (realHeight - displayHeight) > 0;
}
// 将px值转换为dip或dp值
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
// 将dip或dp值转换为px值
public static int dip2px(Context context, float dipValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
// 将px值转换为sp值
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}
// 将sp值转换为px值
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
// 屏幕宽度(像素)
public static int getWindowWidth(Context context) {
DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics();
return dm.widthPixels;
}
// 屏幕高度(像素)
public static int getWindowHeight(Context context) {
DisplayMetrics dm = context.getApplicationContext().getResources().getDisplayMetrics();
return dm.heightPixels;
}
// 根据Unicode编码判断中文汉字和符号
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
return true;
}
return false;
}
// 判断中文汉字和符号
public static boolean isChinese(String strName) {
char[] ch = strName.toCharArray();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (isChinese(c)) {
return true;
}
}
return false;
}
public static int getScreenPxWidth(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthPixels;
}
public static int getScreenDpWidth(Context context) {
int pxWidth = getScreenPxWidth(context);
return (int) px2dip(context, pxWidth);
}
public static int getScreenPxHeight(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightPixels;
}
public static int getScreenDpHeight(Context context) {
int pxHeight = getScreenPxHeight(context);
return (int) px2dip(context, pxHeight);
}
public static void executePendingTransactionsSafely(String TAG, FragmentManager fragmentManager) {
if (fragmentManager == null) {
Logger.error(TAG, "executePendingTransactionsSafely fragmentManager == null");
return;
}
try {
fragmentManager.executePendingTransactions();
} catch (Exception e) {
Logger.error(TAG, String.valueOf(e));
try {
Field mExecutingActions = fragmentManager.getClass().getDeclaredField("mExecutingActions");
mExecutingActions.setAccessible(true);
mExecutingActions.set(fragmentManager, false);
} catch (Exception e1) {
Logger.error(TAG, "set field value fail", e1);
}
}
}
}

View File

@@ -15,7 +15,7 @@ import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.ui.gift.widget.GlideCircleTransform;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;

View File

@@ -16,7 +16,7 @@ import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.xchat_android_library.common.util.Utils;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.lang.ref.WeakReference;

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