6.6.9版本
This commit is contained in:
parent
4513d8495f
commit
403b4c2aa3
@ -154,6 +154,9 @@
|
||||
<meta-data
|
||||
android:name="IS_PLUGIN_MODEL"
|
||||
android:value="${isPluginModel}" />
|
||||
<meta-data
|
||||
android:name="BUILD_TIME"
|
||||
android:value="${buildTime}" />
|
||||
<meta-data
|
||||
android:name="firebase_crashlytics_collection_enabled"
|
||||
android:value="${isUploadLog}" />
|
||||
|
@ -184,6 +184,9 @@ public class AppContext extends CommonAppContext {
|
||||
@Override
|
||||
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
|
||||
activities.add(new WeakReference<>(activity));
|
||||
if(activity instanceof LoginActivity){
|
||||
AppManager.getInstance().clear();
|
||||
}
|
||||
CrashSaveBean.getInstance().setActivitySize(activities);
|
||||
AppManager.getInstance().addActivity(activity);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# The proguard configuration file for the following section is E:\pdlsy\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1
|
||||
# The proguard configuration file for the following section is C:\Users\58381\Documents\AndroidProject\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1
|
||||
# This is a configuration file for ProGuard.
|
||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
||||
#
|
||||
@ -95,8 +95,8 @@
|
||||
# These classes are duplicated between android.jar and core-lambda-stubs.jar.
|
||||
-dontnote java.lang.invoke.**
|
||||
|
||||
# End of content from E:\pdlsy\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1
|
||||
# The proguard configuration file for the following section is E:\pdlsy\pandorapan\app\proguard-rules.pro
|
||||
# End of content from C:\Users\58381\Documents\AndroidProject\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1
|
||||
# The proguard configuration file for the following section is C:\Users\58381\Documents\AndroidProject\pandorapan\app\proguard-rules.pro
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in /Users/macpro/Library/Android/sdk/tools/proguard/proguard-android.txt
|
||||
@ -377,6 +377,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class tech.sud.mgp.hello.ui.main.settings.model.** {*;}
|
||||
-keep class tech.sud.mgp.hello.ui.main.nft.model.** {*;}
|
||||
-keep class tech.sud.mgp.hello.common.event.model.** {*;}
|
||||
-keep class tech.sud.mgp.**{*;}
|
||||
|
||||
-keep class bitter.jnibridge.** { *; }
|
||||
-keep class com.google.androidgamesdk.** { *; }
|
||||
-keep class com.unity3d.** { *; }
|
||||
-keep class do.do.do.** { *; }
|
||||
-keep class do.if.do.** { *; }
|
||||
-keep class for.do.** { *; }
|
||||
-keep class if.do.do.do.** { *; }
|
||||
-keep class org.fmod.** { *; }
|
||||
-keep class tech.sud.** { *; }
|
||||
-keep class tech.unity3d.** { *; }
|
||||
|
||||
-keep class com.yunbao.common.sud.** {*;}
|
||||
|
||||
@ -399,8 +411,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class com.qiniu.**{public <init>();}
|
||||
-ignorewarnings
|
||||
|
||||
# End of content from E:\pdlsy\pandorapan\app\proguard-rules.pro
|
||||
# The proguard configuration file for the following section is E:\pdlsy\pandorapan\app\build\intermediates\aapt_proguard_file\release\processReleaseResources\aapt_rules.txt
|
||||
# End of content from C:\Users\58381\Documents\AndroidProject\pandorapan\app\proguard-rules.pro
|
||||
# The proguard configuration file for the following section is C:\Users\58381\Documents\AndroidProject\pandorapan\app\build\intermediates\aapt_proguard_file\release\processReleaseResources\aapt_rules.txt
|
||||
-keep class androidx.core.app.CoreComponentFactory { <init>(); }
|
||||
-keep class androidx.core.content.FileProvider { <init>(); }
|
||||
-keep class androidx.core.content.FileProvider4Utils { <init>(); }
|
||||
@ -502,6 +514,9 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class com.yunbao.main.activity.EditUserHobbyActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.EntryActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.FansActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.FeedbackActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.FeedbackEditActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.FeedbackSuccessActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.FindPwdActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.FollowActivity { <init>(); }
|
||||
-keep class com.yunbao.main.activity.LanguageSettingActivity { <init>(); }
|
||||
@ -901,6 +916,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.yunbao.common.views.AutoSplitTextView { <init>(android.content.Context, android.util.AttributeSet); }
|
||||
|
||||
-keep class com.yunbao.common.views.CustomLayout { <init>(android.content.Context, android.util.AttributeSet); }
|
||||
|
||||
-keep class com.yunbao.common.views.FlowLayout { <init>(android.content.Context, android.util.AttributeSet); }
|
||||
|
||||
-keep class com.yunbao.common.views.MyFrameLayout2 { <init>(android.content.Context, android.util.AttributeSet); }
|
||||
@ -1064,8 +1081,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keepclassmembers class * { *** videoEditClick(android.view.View); }
|
||||
|
||||
|
||||
# End of content from E:\pdlsy\pandorapan\app\build\intermediates\aapt_proguard_file\release\processReleaseResources\aapt_rules.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt
|
||||
# End of content from C:\Users\58381\Documents\AndroidProject\pandorapan\app\build\intermediates\aapt_proguard_file\release\processReleaseResources\aapt_rules.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt
|
||||
# Generated keep rule for Lifecycle observer adapter.
|
||||
-if class com.lxj.xpopup.core.BasePopupView {
|
||||
<init>(...);
|
||||
@ -1074,8 +1091,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<init>(...);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt
|
||||
# Copyright (C) 2015 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -1123,16 +1140,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
}
|
||||
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt
|
||||
# The proguard configuration file for the following section is E:\pdlsy\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\Users\58381\Documents\AndroidProject\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt
|
||||
|
||||
# End of content from E:\pdlsy\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt
|
||||
# End of content from C:\Users\58381\Documents\AndroidProject\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt
|
||||
-keepattributes *Annotation*
|
||||
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt
|
||||
# To enable ProGuard in your project, edit project.properties
|
||||
# to define the proguard.config property as described in that file.
|
||||
#
|
||||
@ -1172,8 +1189,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
public android.os.Bundle getSkuDetails(int, java.lang.String, java.lang.String, android.os.Bundle);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\6baa4e4ee96e21acbcf3a49ef89d9f1f\transformed\jetified-facebook-android-sdk-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1214,8 +1231,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.facebook.gamingservices.GamingServices
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\44135493e77410a01759fde38f8d0bd2\transformed\jetified-facebook-gamingservices-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1256,8 +1273,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.facebook.share.Share
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\c831739b6efc746f59d2a47471573f41\transformed\jetified-facebook-share-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1298,8 +1315,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.facebook.login.Login
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\3815d0ddf4b17772bdba730e93b11daf\transformed\jetified-facebook-login-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1340,12 +1357,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.facebook.common.Common
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\43855db83adace9940918a3f6edcdc05\transformed\jetified-facebook-common-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt
|
||||
-keep class com.davemorrissey.labs.subscaleview.** { *; }
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\7bbb003dbf2685697cd42cfb46e77b3f\transformed\jetified-subsampling-scale-image-view-androidx-3.10.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt
|
||||
# Copyright (C) 2018 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -1369,13 +1386,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<methods>;
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt
|
||||
#Picasso Proguard Config https://github.com/square/picasso
|
||||
-dontwarn com.squareup.okhttp.**
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\b8e86bdadf487d72a43cd430b3f9db16\transformed\jetified-tweet-ui-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt
|
||||
# Copyright (C) 2016 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -1402,13 +1419,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
RuntimeVisibleParameterAnnotations,
|
||||
RuntimeVisibleTypeAnnotations
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\2dd2f4200d3a68f4165485a3d207312d\transformed\coordinatorlayout-1.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt
|
||||
-keepclasseswithmembers class androidx.recyclerview.widget.RecyclerView$ViewHolder {
|
||||
public final android.view.View *;
|
||||
}
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\940a969ab3fccb91703d8a9245e2974b\transformed\jetified-x-1.3.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt
|
||||
# Proguard rules specific to the UI module.
|
||||
|
||||
# Constructor method accessed via reflection in StyledPlayerView
|
||||
@ -1449,8 +1466,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-dontwarn kotlin.annotations.jvm.**
|
||||
-dontwarn javax.annotation.**
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\e452872bf1c6c06c71776c88e0bd7b6a\transformed\jetified-exoplayer-ui-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt
|
||||
# Copyright (C) 2015 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -1476,8 +1493,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
public void suppressLayout(boolean);
|
||||
public boolean isLayoutSuppressed();
|
||||
}
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\e9de7db2640f13ae2ab2a585dfd19337\transformed\recyclerview-1.2.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in G:\Android_IDE\ADT\sdk/tools/proguard/proguard-android.txt
|
||||
@ -1506,8 +1523,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep @com.blankj.utilcode.util.ApiUtils$Api class *
|
||||
|
||||
-keepattributes *Annotation*
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\6905c56d188193f144e40adf093778f1\transformed\jetified-utilcode-1.30.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1548,8 +1565,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.facebook.applinks.AppLinks
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\bb5ec4ef561b90312eb1ca52da1f144d\transformed\jetified-facebook-applinks-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1594,8 +1611,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-keep class com.facebook.messenger.Messenger
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\88221c7028fd958b12579787bcf1d5e0\transformed\jetified-facebook-messenger-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt
|
||||
# Copyright (C) 2020 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -1624,16 +1641,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
android.view.View findViewByAccessibilityIdTraversal(int);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt
|
||||
-assumenosideeffects public class androidx.compose.runtime.ComposerKt {
|
||||
void sourceInformation(androidx.compose.runtime.Composer,java.lang.String);
|
||||
void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String);
|
||||
void sourceInformationMarkerEnd(androidx.compose.runtime.Composer);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\3591196def6c89c6af74e7d30dfb6618\transformed\jetified-runtime-1.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt
|
||||
-dontwarn jp.co.cyberagent.android.gpuimage.**
|
||||
|
||||
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||||
@ -1643,8 +1660,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
public *;
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt
|
||||
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||||
-keep class * extends com.bumptech.glide.module.AppGlideModule {
|
||||
<init>(...);
|
||||
@ -1660,8 +1677,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
# Uncomment for DexGuard only
|
||||
#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\af9bdee4e01691bfa29595eaf6011f49\transformed\jetified-play-services-base-18.0.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\a9e5e066cbda5595303140a83b7c357f\transformed\jetified-glide-4.12.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\af9bdee4e01691bfa29595eaf6011f49\transformed\jetified-play-services-base-18.0.1\proguard.txt
|
||||
# b/35135904 Ensure that proguard will not strip the mResultGuardian.
|
||||
-keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult {
|
||||
com.google.android.gms.common.api.internal.BasePendingResult$ReleasableResultGuardian mResultGuardian;
|
||||
@ -1669,18 +1686,18 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\af9bdee4e01691bfa29595eaf6011f49\transformed\jetified-play-services-base-18.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\af9bdee4e01691bfa29595eaf6011f49\transformed\jetified-play-services-base-18.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt
|
||||
-dontwarn com.google.firebase.platforminfo.KotlinDetector
|
||||
-dontwarn com.google.auto.value.AutoValue
|
||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\4566a60c961a57d307c42a2fd5514004\transformed\jetified-play-services-tasks-18.0.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\1b549d0d5a78f93d1b3cd259941d27d6\transformed\jetified-firebase-common-20.1.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\4566a60c961a57d307c42a2fd5514004\transformed\jetified-play-services-tasks-18.0.1\proguard.txt
|
||||
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\4566a60c961a57d307c42a2fd5514004\transformed\jetified-play-services-tasks-18.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\98374b479c7a7c4245d90ea630585909\transformed\jetified-play-services-basement-18.1.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\4566a60c961a57d307c42a2fd5514004\transformed\jetified-play-services-tasks-18.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\98374b479c7a7c4245d90ea630585909\transformed\jetified-play-services-basement-18.1.0\proguard.txt
|
||||
# Needed when building against pre-Marshmallow SDK.
|
||||
-dontwarn android.security.NetworkSecurityPolicy
|
||||
|
||||
@ -1753,8 +1770,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\98374b479c7a7c4245d90ea630585909\transformed\jetified-play-services-basement-18.1.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\98374b479c7a7c4245d90ea630585909\transformed\jetified-play-services-basement-18.1.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt
|
||||
# Copyright (C) 2020 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -1775,12 +1792,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
public <init>();
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt
|
||||
# 本库模块专用的混淆规则
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\b826addf48d922103bc9588ad90ee0e6\transformed\jetified-Common-4.1.11\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -1838,8 +1855,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
public <methods>;
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\cee8df21fdda9dd7e6106d8566e7a8de\transformed\jetified-facebook-core-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt
|
||||
-keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel {
|
||||
<init>();
|
||||
}
|
||||
@ -1848,8 +1865,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<init>(android.app.Application);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\570c85082e748d036cbe1ff0c9d5e429\transformed\lifecycle-viewmodel-2.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt
|
||||
-keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel {
|
||||
<init>(androidx.lifecycle.SavedStateHandle);
|
||||
}
|
||||
@ -1858,8 +1875,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<init>(android.app.Application,androidx.lifecycle.SavedStateHandle);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\badee3548ba9b653d6517fdeb8829767\transformed\jetified-lifecycle-viewmodel-savedstate-2.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro
|
||||
# When editing this file, update the following files as well:
|
||||
# - META-INF/proguard/coroutines.pro
|
||||
# - META-INF/com.android.tools/proguard/coroutines.pro
|
||||
@ -1887,8 +1904,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
# An annotation used for build tooling, won't be directly accessed.
|
||||
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\0e43e19966d3ba7fcce157667e087c7e\transformed\rules\lib\META-INF\com.android.tools\r8\coroutines.pro
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro
|
||||
# Allow R8 to optimize away the FastServiceLoader.
|
||||
# Together with ServiceLoader optimization in R8
|
||||
# this results in direct instantiation when loading Dispatchers.Main
|
||||
@ -1913,8 +1930,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
boolean getDEBUG() return false;
|
||||
boolean getRECOVER_STACK_TRACES() return false;
|
||||
}
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\039aa78b17fc1889d62d4e8e7d7c1859\transformed\rules\lib\META-INF\com.android.tools\r8-from-1.6.0\coroutines.pro
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt
|
||||
#GSON
|
||||
# Retain Annotations for model objects
|
||||
-keepattributes *Annotation*
|
||||
@ -1938,8 +1955,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keepclasseswithmembers class * {
|
||||
@retrofit2.http.* <methods>;
|
||||
}
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro
|
||||
# JSR 305 annotations are for embedding nullability information.
|
||||
-dontwarn javax.annotation.**
|
||||
|
||||
@ -1952,16 +1969,16 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
|
||||
-dontwarn okhttp3.internal.platform.ConscryptPlatform
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\c77ecf57bcccb48a1c436095271858a9\transformed\rules\lib\META-INF\proguard\okhttp3.pro
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro
|
||||
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
|
||||
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\ba2f6b8d754037d8f03e9dcac5bb54b5\transformed\rules\lib\META-INF\proguard\okio.pro
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt
|
||||
-keep class cn.rongcloud.xcrash.NativeHandler {
|
||||
native <methods>;
|
||||
void crashCallback(...);
|
||||
@ -1969,22 +1986,22 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
void traceCallbackBeforeDump(...);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\b75b75d929caf1295aec25af1cc611a0\transformed\jetified-crash-1.0.8\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt
|
||||
# Proguard configuration.
|
||||
-dontwarn com.squareup.okhttp.**
|
||||
|
||||
# References to Picasso are okay if the consuming app doesn't use it
|
||||
-dontwarn com.squareup.picasso.Transformation
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\a7d2b366ebb4fa695d83564a8f8d9b9e\transformed\jetified-roundedimageview-2.3.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt
|
||||
-keep public class pl.droidsonroids.gif.GifIOException{<init>(int, java.lang.String);}
|
||||
#Prevents warnings for consumers not using AndroidX
|
||||
-dontwarn androidx.annotation.**
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\54e4d6b7585273307d9c6823366d92b9\transformed\jetified-android-gif-drawable-1.2.23\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt
|
||||
#https://github.com/leolin310148/ShortcutBadger/issues/46
|
||||
-keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { <init>(...); }
|
||||
-keep class me.leolin.shortcutbadger.impl.ApexHomeBadger { <init>(...); }
|
||||
@ -1995,8 +2012,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class me.leolin.shortcutbadger.impl.SolidHomeBadger { <init>(...); }
|
||||
-keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { <init>(...); }
|
||||
-keep class me.leolin.shortcutbadger.impl.XiaomiHomeBadger { <init>(...); }
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\11ff2b99188b7e7bf4e2771916717f0f\transformed\jetified-ShortcutBadger-1.1.22\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the filterSet of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
@ -2034,8 +2051,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
# 保持反射不被混淆
|
||||
-keepattributes EnclosingMethod
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
@ -2057,15 +2074,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\6dd79c19a3de7f7b4d3014c08d02f4ca\transformed\jetified-PagerGridLayoutManager-1.1.7\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt
|
||||
# 本库模块专用的混淆规则
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\3dd60f4554da3e797ddfca5958de5029\transformed\jetified-uyumao-1.1.2\proguard.txt
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\3dd60f4554da3e797ddfca5958de5029\transformed\jetified-uyumao-1.1.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\21d010a917a570a947ff266441748328\transformed\jetified-SudMGP-1.3.3.1158\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\adfc563cfaac18f99ab49176e8311139\transformed\jetified-WheelView-4.1.11\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\21d010a917a570a947ff266441748328\transformed\jetified-SudMGP-1.3.3.1158\proguard.txt
|
||||
-keep class com.cocos.game.**{ *; }
|
||||
-keep class tech.sud.runtime.**{ *; }
|
||||
-keep class tech.sud.mgp.core.**{ *; }
|
||||
@ -2217,8 +2231,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\21d010a917a570a947ff266441748328\transformed\jetified-SudMGP-1.3.3.1158\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\9bc6fb118e278279304d710763b86c85\transformed\jetified-SudASR-1.3.3.1158\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\21d010a917a570a947ff266441748328\transformed\jetified-SudMGP-1.3.3.1158\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\9bc6fb118e278279304d710763b86c85\transformed\jetified-SudASR-1.3.3.1158\proguard.txt
|
||||
-keep class com.microsoft.cognitiveservices.** { *; }
|
||||
-keep class tech.sud.mgp.asr.azure.** { *; }
|
||||
|
||||
@ -2233,8 +2247,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
*** *Callback(long);
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\9bc6fb118e278279304d710763b86c85\transformed\jetified-SudASR-1.3.3.1158\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\3d3f072f1af512d0e751a2c7c5e8b8ec\transformed\jetified-core-8.3.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\9bc6fb118e278279304d710763b86c85\transformed\jetified-SudASR-1.3.3.1158\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\3d3f072f1af512d0e751a2c7c5e8b8ec\transformed\jetified-core-8.3.1\proguard.txt
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
@ -2261,8 +2275,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class com.faceunity.wrapper.faceunity {*;}
|
||||
-keep class com.faceunity.wrapper.faceunity$RotatedImage {*;}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\3d3f072f1af512d0e751a2c7c5e8b8ec\transformed\jetified-core-8.3.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\3d3f072f1af512d0e751a2c7c5e8b8ec\transformed\jetified-core-8.3.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt
|
||||
# Proguard rules specific to the core module.
|
||||
|
||||
# Constructors accessed via reflection in DefaultRenderersFactory
|
||||
@ -2319,8 +2333,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<init>();
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\526e7910eaa433763f36b642f34c1fee\transformed\jetified-exoplayer-core-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt
|
||||
# Copyright (C) 2019 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -2339,8 +2353,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<init>();
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\2d16d937f787a1471d1fcefef8917ded\transformed\jetified-savedstate-1.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -2360,8 +2374,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
androidx.transition.ChangeBounds$ViewBounds mViewBounds;
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\f55e0290d55f2ec9dfa66384635c714c\transformed\transition-1.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt
|
||||
# Copyright (C) 2016 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -2382,8 +2396,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
*** get*();
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\093cf4894c646f12adcf0608a8578513\transformed\vectordrawable-animated-1.1.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
@ -2419,8 +2433,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
java.lang.Object readResolve();
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\3db9f5e64eaa2a61a80545d78dbfe4ed\transformed\jetified-facebook-bolts-15.2.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -2444,8 +2458,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class androidx.media.** implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\4bf1220f49ce7953fbb445d1fb03d04a\transformed\core-1.8.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\13795feba8dd8fc2e0266a202e40730e\transformed\media-1.6.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\4bf1220f49ce7953fbb445d1fb03d04a\transformed\core-1.8.0\proguard.txt
|
||||
# Never inline methods, but allow shrinking and obfuscation.
|
||||
-keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.ViewCompat$Api* {
|
||||
<methods>;
|
||||
@ -2463,8 +2477,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<methods>;
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\4bf1220f49ce7953fbb445d1fb03d04a\transformed\core-1.8.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\4bf1220f49ce7953fbb445d1fb03d04a\transformed\core-1.8.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt
|
||||
-keepattributes AnnotationDefault,
|
||||
RuntimeVisibleAnnotations,
|
||||
RuntimeVisibleParameterAnnotations,
|
||||
@ -2488,8 +2502,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
# this rule is need to work properly when app is compiled with api 28, see b/142778206
|
||||
# Also this rule prevents registerIn from being inlined.
|
||||
-keepclassmembers class androidx.lifecycle.ReportFragment$LifecycleCallbacks { *; }
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\2c964f4aa7e08caf6a082be78fa332c4\transformed\lifecycle-runtime-2.5.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt
|
||||
# Proguard rules specific to the DataSource module.
|
||||
|
||||
# Constant folding for resource integers may mean that a resource passed to this method appears to be unused. Keep the method to prevent this from happening.
|
||||
@ -2503,8 +2517,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
<init>();
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\4a3cce138aa30f2fd0df44bf999a62d2\transformed\jetified-exoplayer-datasource-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt
|
||||
# Proguard rules specific to the extractor module.
|
||||
|
||||
# Methods accessed via reflection in DefaultExtractorsFactory
|
||||
@ -2522,8 +2536,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-dontwarn kotlin.annotations.jvm.**
|
||||
-dontwarn javax.annotation.**
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\cccc4dd1e5210aae5c702cc866696db2\transformed\jetified-exoplayer-extractor-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt
|
||||
# Proguard rules specific to the common module.
|
||||
|
||||
# Don't warn about checkerframework and Kotlin annotations
|
||||
@ -2547,20 +2561,20 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
# This is needed for ProGuard but not R8.
|
||||
-keepclassmembernames class com.google.common.base.Function { *; }
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\5bd9c5cbdf66400a7932d1da1691bac0\transformed\jetified-exoplayer-common-2.18.2\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt
|
||||
-keep class * implements androidx.versionedparcelable.VersionedParcelable
|
||||
-keep public class android.support.**Parcelizer { *; }
|
||||
-keep public class androidx.**Parcelizer { *; }
|
||||
-keep public class androidx.versionedparcelable.ParcelImpl
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt
|
||||
-keep class * extends androidx.room.RoomDatabase
|
||||
-dontwarn androidx.room.paging.**
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\8c49f53105b230fe43669879f576cab6\transformed\room-runtime-2.4.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt
|
||||
# This Proguard rule ensures that ComponentInitializers are are neither shrunk nor obfuscated.
|
||||
# This is because they are discovered and instantiated during application initialization.
|
||||
-keep class * extends androidx.startup.Initializer {
|
||||
@ -2570,29 +2584,29 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
|
||||
-assumenosideeffects class androidx.startup.StartupLogger
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\f137f81e3ba6bf4187612f01b8d596d6\transformed\jetified-transport-backend-cct-3.1.7\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\48f6f745536202396d49c6664e656f00\transformed\jetified-startup-runtime-1.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\f137f81e3ba6bf4187612f01b8d596d6\transformed\jetified-transport-backend-cct-3.1.7\proguard.txt
|
||||
-dontwarn com.google.auto.value.AutoValue
|
||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\f137f81e3ba6bf4187612f01b8d596d6\transformed\jetified-transport-backend-cct-3.1.7\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\f137f81e3ba6bf4187612f01b8d596d6\transformed\jetified-transport-backend-cct-3.1.7\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt
|
||||
-dontwarn com.google.auto.value.AutoValue
|
||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\ad1f4a6564b34286db155b9a62614b62\transformed\jetified-transport-api-3.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt
|
||||
-dontwarn com.google.firebase.components.Component$Instantiation
|
||||
-dontwarn com.google.firebase.components.Component$ComponentType
|
||||
|
||||
-keep class * implements com.google.firebase.components.ComponentRegistrar
|
||||
-keep,allowshrinking interface com.google.firebase.components.ComponentRegistrar
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\e1bbd140b52a8e61bea52bf380947059\transformed\jetified-firebase-components-17.0.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\3b7d5c4af95619f43e4d0ea1cb1bf304\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\ff39e13547528b628eacff5bee8aa481\transformed\jetified-firebase-encoders-json-18.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\3b7d5c4af95619f43e4d0ea1cb1bf304\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro
|
||||
-keep,allowobfuscation @interface androidx.annotation.Keep
|
||||
-keep @androidx.annotation.Keep class * {*;}
|
||||
|
||||
@ -2612,8 +2626,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
@androidx.annotation.DoNotInline <methods>;
|
||||
}
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\3b7d5c4af95619f43e4d0ea1cb1bf304\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\e7e2a2183722056abf9bd4188272512b\transformed\jetified-annotation-experimental-1.1.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\3b7d5c4af95619f43e4d0ea1cb1bf304\transformed\rules\lib\META-INF\proguard\androidx-annotations.pro
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\e7e2a2183722056abf9bd4188272512b\transformed\jetified-annotation-experimental-1.1.0\proguard.txt
|
||||
# Copyright (C) 2020 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -2638,8 +2652,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-dontwarn kotlin.annotation.Retention
|
||||
-dontwarn kotlin.annotation.Target
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\e7e2a2183722056abf9bd4188272512b\transformed\jetified-annotation-experimental-1.1.0\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\e7e2a2183722056abf9bd4188272512b\transformed\jetified-annotation-experimental-1.1.0\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in /Developer/android-sdk-osx/tools/proguard/proguard-android.txt
|
||||
@ -2661,8 +2675,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-keep class io.github.inflationx.calligraphy3.* { *; }
|
||||
-keep class io.github.inflationx.calligraphy3.*$* { *; }
|
||||
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is F:\AS\gradle\caches\transforms-3\a358ff6705c32d8c6337aefd4316f1b9\transformed\jetified-billing-5.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\e4ea56c12de34fd26c2a84541f3aeb08\transformed\jetified-calligraphy3-3.1.1\proguard.txt
|
||||
# The proguard configuration file for the following section is C:\gradle-6.1.1\caches\transforms-3\a358ff6705c32d8c6337aefd4316f1b9\transformed\jetified-billing-5.0.0\proguard.txt
|
||||
# Keep the AIDL interface
|
||||
-keep class com.android.vending.billing.** { *; }
|
||||
|
||||
@ -2671,7 +2685,7 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
||||
-dontwarn com.google.android.apps.common.proguard.UsedByReflection
|
||||
|
||||
-keepnames class com.android.billingclient.api.ProxyBillingActivity
|
||||
# End of content from F:\AS\gradle\caches\transforms-3\a358ff6705c32d8c6337aefd4316f1b9\transformed\jetified-billing-5.0.0\proguard.txt
|
||||
# End of content from C:\gradle-6.1.1\caches\transforms-3\a358ff6705c32d8c6337aefd4316f1b9\transformed\jetified-billing-5.0.0\proguard.txt
|
||||
# The proguard configuration file for the following section is <unknown>
|
||||
|
||||
# End of content from <unknown>
|
@ -39,6 +39,7 @@ public class CommonAppConfig {
|
||||
public static final boolean IS_UPLOAD_ERROR_LOG = getMetaDataBoolean("IS_UPLOAD_ERROR_LOG");
|
||||
//是否为插件包模式
|
||||
public static final boolean IS_PLUGIN_MODEL = getMetaDataBoolean("IS_PLUGIN_MODEL");
|
||||
public static final String BUILD_TIME = getMetaDataString("BUILD_TIME");
|
||||
|
||||
//外部sd卡
|
||||
public static final String DCMI_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
|
||||
|
@ -3,6 +3,8 @@ package com.yunbao.common.bean;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -421,7 +423,13 @@ public class IMLoginModel extends BaseModel {
|
||||
}
|
||||
|
||||
public String getAvatar() {
|
||||
return avatar;
|
||||
if ("/default.jpg".equals(avatar)) {
|
||||
avatar = CommonAppConfig.HOST + avatar;
|
||||
}
|
||||
if (StringUtil.isEmpty(avatar)) {
|
||||
return "";
|
||||
}
|
||||
return avatar.trim();
|
||||
}
|
||||
|
||||
public IMLoginModel setAvatar(String avatar) {
|
||||
|
@ -0,0 +1,30 @@
|
||||
package com.yunbao.common.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
public class MainMessageChatListTimer extends BaseModel {
|
||||
@SerializedName("uid")
|
||||
private String uid;
|
||||
@SerializedName("time")
|
||||
private int time;
|
||||
|
||||
public MainMessageChatListTimer() {
|
||||
}
|
||||
|
||||
public String getUid() {
|
||||
return uid;
|
||||
}
|
||||
|
||||
public void setUid(String uid) {
|
||||
this.uid = uid;
|
||||
}
|
||||
|
||||
public int getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(int time) {
|
||||
this.time = time;
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import android.text.TextUtils;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
|
||||
/**
|
||||
@ -417,7 +418,13 @@ public class UserBean implements Parcelable {
|
||||
}
|
||||
|
||||
public String getAvatar() {
|
||||
return avatar;
|
||||
if ("/default.jpg".equals(avatar)) {
|
||||
avatar = CommonAppConfig.HOST + avatar;
|
||||
}
|
||||
if (StringUtil.isEmpty(avatar)) {
|
||||
return "";
|
||||
}
|
||||
return avatar.trim();
|
||||
}
|
||||
|
||||
public void setAvatar(String avatar) {
|
||||
|
@ -15,6 +15,7 @@ import com.lzf.easyfloat.EasyFloat;
|
||||
import com.lzf.easyfloat.enums.ShowPattern;
|
||||
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
||||
import com.lzf.easyfloat.permission.PermissionUtils;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.adapter.DebugDialogAdapter;
|
||||
import com.yunbao.common.utils.AppManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
@ -129,6 +130,7 @@ public class DebugDialog {
|
||||
recyclerView.setAdapter(adapter);
|
||||
recyclerView.setBackgroundColor(Color.WHITE);
|
||||
TextView textView = new TextView(mContext);
|
||||
TextView buildTime = new TextView(mContext);
|
||||
textView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
@ -137,6 +139,7 @@ public class DebugDialog {
|
||||
}
|
||||
});
|
||||
params.put("debug弹窗", textView);
|
||||
params.put("发包时间:" + CommonAppConfig.BUILD_TIME, buildTime);
|
||||
adapter.setParamMap(params);
|
||||
|
||||
EasyFloat.with(mContext)
|
||||
@ -144,7 +147,6 @@ public class DebugDialog {
|
||||
.setShowPattern(this.showPattern)
|
||||
.setLayout(recyclerView)
|
||||
.show();
|
||||
runnable.run(this);
|
||||
Log.i("debug弹窗", "createView: 创建");
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@ import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.RequestBuilder;
|
||||
import com.bumptech.glide.load.DataSource;
|
||||
import com.bumptech.glide.load.engine.GlideException;
|
||||
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.bumptech.glide.request.target.CustomTarget;
|
||||
@ -48,10 +49,10 @@ public class ImgLoader {
|
||||
if (!contextIsExist(context)) {
|
||||
return;
|
||||
}
|
||||
if(StringUtil.isEmpty(url)){
|
||||
if (StringUtil.isEmpty(url)) {
|
||||
return;
|
||||
}
|
||||
if(!url.startsWith("http")){
|
||||
if (!url.startsWith("http")) {
|
||||
return;
|
||||
}
|
||||
RequestBuilder<Drawable> builder = Glide.with(context)
|
||||
@ -159,11 +160,33 @@ public class ImgLoader {
|
||||
displayAvatar(context, url, imageView, -1, -1);
|
||||
}
|
||||
|
||||
public static void displayAvatarCircleCrop(Context context, String url, ImageView imageView) {
|
||||
if (!contextIsExist(context)) {
|
||||
return;
|
||||
}
|
||||
if (!contextIsExist(context) || imageView == null) {
|
||||
return;
|
||||
}
|
||||
if (StringUtil.isEmpty(url)) {
|
||||
return;
|
||||
}
|
||||
if (!url.startsWith("http")) {
|
||||
imageView.setImageResource(R.mipmap.chat_head_mo);
|
||||
return;
|
||||
}
|
||||
RequestBuilder<Drawable> builder = Glide.with(context)
|
||||
.load(url)
|
||||
.thumbnail(thumbnail)
|
||||
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
|
||||
.error(R.mipmap.icon_avatar_placeholder);
|
||||
builder.into(imageView);
|
||||
}
|
||||
|
||||
public static void displayAvatar(Context context, String url, ImageView imageView, int width, int height) {
|
||||
if (!contextIsExist(context) || imageView == null) {
|
||||
return;
|
||||
}
|
||||
if(StringUtil.isEmpty(url)){
|
||||
if (StringUtil.isEmpty(url)) {
|
||||
return;
|
||||
}
|
||||
if (!url.startsWith("http")) {
|
||||
|
@ -51,6 +51,7 @@ import com.yunbao.common.bean.LiveRoomVoteModel;
|
||||
import com.yunbao.common.bean.LiveStetUpStatusModel;
|
||||
import com.yunbao.common.bean.LiveTaskModel;
|
||||
import com.yunbao.common.bean.LiveUserMailBoxModel;
|
||||
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||
import com.yunbao.common.bean.MedalAchievementModel;
|
||||
import com.yunbao.common.bean.MessageChatIsAnchor;
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
@ -1346,6 +1347,14 @@ public interface PDLiveApi {
|
||||
@GET("/api/public/?service=User.userFeedbackRestrict")
|
||||
Observable<ResponseModel<List<BaseModel>>> checkFeedback();
|
||||
|
||||
@GET("/api/public/?service=Pdlinfos.getOtherList")
|
||||
Observable<ResponseModel<List<MessageChatUserBean>>> getOtherList(@Query("ids") String uids);
|
||||
|
||||
@GET("/api/public/?service=Pdlinfos.getRelation")
|
||||
Observable<ResponseModel<List<String>>> getRelation(@Query("type") String type);
|
||||
@GET("/api/public/?service=Pdlinfos.getIsLook")
|
||||
Observable<ResponseModel<List<MainMessageChatListTimer>>> getIsLook(@Query("ids") String uids);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param roomId 房间ID
|
||||
|
@ -55,6 +55,7 @@ import com.yunbao.common.bean.LiveRoomVoteModel;
|
||||
import com.yunbao.common.bean.LiveStetUpStatusModel;
|
||||
import com.yunbao.common.bean.LiveTaskModel;
|
||||
import com.yunbao.common.bean.LiveUserMailBoxModel;
|
||||
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||
import com.yunbao.common.bean.MedalAchievementModel;
|
||||
import com.yunbao.common.bean.MessageChatIsAnchor;
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
@ -3887,8 +3888,61 @@ public class LiveNetManager {
|
||||
}).isDisposed();
|
||||
}
|
||||
|
||||
public void getOtherList(String uids, HttpCallback<List<MessageChatUserBean>> callback) {
|
||||
API.get().pdLiveApi(mContext)
|
||||
.getOtherList(uids)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Consumer<ResponseModel<List<MessageChatUserBean>>>() {
|
||||
@Override
|
||||
public void accept(ResponseModel<List<MessageChatUserBean>> messageUserInfoBeanResponseModel) throws Exception {
|
||||
if (callback != null) {
|
||||
callback.onSuccess(messageUserInfoBeanResponseModel.getData().getInfo());
|
||||
}
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Exception {
|
||||
throwable.printStackTrace();
|
||||
if (callback != null) {
|
||||
callback.onError(mContext.getString(R.string.net_error));
|
||||
}
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
|
||||
|
||||
public void getRelation(String type, HttpCallback<List<String>> callback) {
|
||||
API.get().pdLiveApi(mContext)
|
||||
.getRelation(type)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(messageUserInfoBeanResponseModel -> {
|
||||
if (callback != null) {
|
||||
callback.onSuccess(messageUserInfoBeanResponseModel.getData().getInfo());
|
||||
}
|
||||
}, throwable -> {
|
||||
throwable.printStackTrace();
|
||||
if (callback != null) {
|
||||
callback.onError(mContext.getString(R.string.net_error));
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
public void getIsLook(String uids, HttpCallback<List<MainMessageChatListTimer>> callback) {
|
||||
API.get().pdLiveApi(mContext)
|
||||
.getIsLook(uids)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(messageUserInfoBeanResponseModel -> {
|
||||
if (callback != null) {
|
||||
callback.onSuccess(messageUserInfoBeanResponseModel.getData().getInfo());
|
||||
}
|
||||
}, throwable -> {
|
||||
throwable.printStackTrace();
|
||||
if (callback != null) {
|
||||
callback.onError(mContext.getString(R.string.net_error));
|
||||
}
|
||||
}).isDisposed();
|
||||
}
|
||||
private MultipartBody.Part createUploadFile(File file) {
|
||||
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
|
||||
return MultipartBody.Part.createFormData("file", file.getName(), requestBody);
|
||||
|
@ -0,0 +1,5 @@
|
||||
package com.yunbao.common.interfaces;
|
||||
|
||||
public interface OnRecyclerListRefreshListener<T> {
|
||||
void onFinish(T t);
|
||||
}
|
@ -427,7 +427,12 @@ public class IMLoginManager extends BaseCacheManager {
|
||||
public boolean isGiftEffect() {
|
||||
return getBoolean(GiftEffect, !(Build.VERSION.SDK_INT < Build.VERSION_CODES.O));
|
||||
}
|
||||
|
||||
public void setAnchorB(int isAnchor) {
|
||||
put("isAnchorB", isAnchor);
|
||||
}
|
||||
public int getAnchorB(){
|
||||
return getInt("isAnchorB", -1);
|
||||
}
|
||||
public void setLiveNotifySettings(boolean isTrue) {
|
||||
put(LIVE_NOTIFY_SETTINGS, isTrue);
|
||||
}
|
||||
@ -584,4 +589,5 @@ public class IMLoginManager extends BaseCacheManager {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.yunbao.common.bean.IMLoginModel;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -28,11 +29,41 @@ public class PDMessageInterceptor implements MessageInterceptor {
|
||||
TextMessage textMessage = (TextMessage) message.getContent();
|
||||
String context = textMessage.getContent();
|
||||
//符合条件的接受消息不做展示
|
||||
if (context.contains("LivePK")||context.contains("LiveDRPK")||context.contains("LiveRandomPK")) {
|
||||
if (context.contains("LivePK") ||
|
||||
context.contains("LivePKDRLM") ||
|
||||
context.contains("LiveDRPK") ||
|
||||
context.contains("LiveRandomPK")) {
|
||||
Message[] messages = new Message[]{message};
|
||||
Log.e("PDMessageInterceptor", textMessage.getContent());
|
||||
Log.e("PDMessageInterceptor", message.getMessageId() + "|" + textMessage.getContent());
|
||||
//删除消息
|
||||
IMCenter.getInstance().deleteRemoteMessages(Conversation.ConversationType.PRIVATE, message.getTargetId(), messages, null);
|
||||
IMCenter.getInstance().deleteMessages(Conversation.ConversationType.PRIVATE, message.getTargetId(), new int[]{
|
||||
message.getMessageId()
|
||||
}, new RongIMClient.ResultCallback<Boolean>() {
|
||||
@Override
|
||||
public void onSuccess(Boolean aBoolean) {
|
||||
Log.i("PDMessageInterceptor", "onSuccess: 删除成功:" + aBoolean+" "+ message.getMessageId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode errorCode) {
|
||||
Log.i("PDMessageInterceptor", "onSuccess: 删除失败:" + errorCode);
|
||||
ToastUtil.showDebug("删除消息失败:"+errorCode.code+"|"+errorCode.msg);
|
||||
}
|
||||
});
|
||||
|
||||
IMCenter.getInstance().deleteRemoteMessages(Conversation.ConversationType.PRIVATE, message.getTargetId(), messages, new RongIMClient.OperationCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
Log.i("PDMessageInterceptor", "onSuccess: 删除成功:" + message.getMessageId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode errorCode) {
|
||||
Log.i("PDMessageInterceptor", "onSuccess: 删除失败:" + errorCode);
|
||||
ToastUtil.showDebug("删除消息失败:"+errorCode.code+"|"+errorCode.msg);
|
||||
}
|
||||
});
|
||||
|
||||
IMCenter.getInstance().clearMessagesUnreadStatus(Conversation.ConversationType.PRIVATE, message.getTargetId(), null);
|
||||
|
||||
// return true;
|
||||
|
@ -214,7 +214,7 @@ public class RongcloudIMManager {
|
||||
break;
|
||||
//用户账号在其它设备登录,此设备被踢下线
|
||||
case KICKED_OFFLINE_BY_OTHER_CLIENT:
|
||||
EventBus.getDefault().post(new RongIMConnectionStatusEvent());
|
||||
EventBus.getDefault().post(new RongIMConnectionStatusEvent().setStatus(-1));
|
||||
break;
|
||||
//连接暂时挂起(多是由于网络问题导致),SDK 会在合适时机进行自动重连
|
||||
case SUSPEND:
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.yunbao.common.utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.util.Log;
|
||||
|
||||
import com.yunbao.common.BuildConfig;
|
||||
|
||||
@ -11,7 +12,7 @@ public class AppManager {
|
||||
private static Stack<Activity> activityStack;
|
||||
|
||||
public AppManager() {
|
||||
activityStack=new Stack<>();
|
||||
activityStack = new Stack<>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,6 +49,10 @@ public class AppManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
activityStack.clear();
|
||||
}
|
||||
|
||||
public static class SingleApp {
|
||||
public static AppManager INSTANCE = new AppManager();
|
||||
}
|
||||
@ -59,6 +64,10 @@ public class AppManager {
|
||||
if (activityStack == null) {
|
||||
activityStack = new Stack<Activity>();
|
||||
}
|
||||
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>class com.yunbao.main.activity.MsgAddressBookActivity
|
||||
if (getActivity(activity.getClass()) != null) {
|
||||
activityStack.remove(getActivity(activity.getClass()));
|
||||
}
|
||||
activityStack.add(activity);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,38 @@
|
||||
package com.yunbao.common.utils;
|
||||
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import net.lucode.hackware.magicindicator.MagicIndicator;
|
||||
|
||||
public class ViewPageIndicatorUtils {
|
||||
public static void bind(final MagicIndicator magicIndicator, ViewPager2 viewPager,ViewPager2.OnPageChangeCallback callback) {
|
||||
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
if(callback!=null){
|
||||
callback.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
super.onPageSelected(position);
|
||||
magicIndicator.onPageSelected(position);
|
||||
if (callback != null) {
|
||||
callback.onPageSelected(position);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
super.onPageScrollStateChanged(state);
|
||||
magicIndicator.onPageScrollStateChanged(state);
|
||||
if (callback != null) {
|
||||
callback.onPageScrollStateChanged(state);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -2,8 +2,10 @@ package com.yunbao.common.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Paint;
|
||||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.TextView;
|
||||
|
||||
@ -42,6 +44,49 @@ public class AutoSplitTextView extends androidx.appcompat.widget.AppCompatTextVi
|
||||
}
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
}*/
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuffer tmp = new StringBuffer();
|
||||
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
super.onLayout(changed, left, top, right, bottom);
|
||||
TextPaint paint = getPaint();
|
||||
String text = getText().toString();
|
||||
Log.i("用户备注卡片", "默认值:" + text);
|
||||
float textWidth = paint.measureText(text);
|
||||
if (textWidth > getWidth()) {
|
||||
sb.setLength(0);
|
||||
tmp.setLength(0);
|
||||
for (int i = 0; i < text.length(); i++) {
|
||||
String str;
|
||||
str = text.substring(i, i + 1);
|
||||
Log.i("用户备注卡片", "添加:" + str + "|" + i);
|
||||
if (str.contains("\n") || str.contains("\r") || str.contains("\t")) {
|
||||
if(tmp.length()>0) {
|
||||
sb.append(tmp);
|
||||
}
|
||||
sb.append(str);
|
||||
tmp.setLength(0);
|
||||
continue;
|
||||
}
|
||||
float measured = paint.measureText(tmp.toString() + str);
|
||||
if (measured > getWidth()) {
|
||||
sb.append(tmp).append("\n");
|
||||
tmp.setLength(0);
|
||||
tmp.append(str);
|
||||
} else {
|
||||
tmp.append(str);
|
||||
}
|
||||
}
|
||||
if (tmp.length() > 0) {
|
||||
sb.append(tmp);
|
||||
}
|
||||
Log.i("用户备注卡片", "最终值:" + sb.toString());
|
||||
setText(sb);
|
||||
}
|
||||
}
|
||||
|
||||
public void setAutoText(CharSequence text) {
|
||||
this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
|
||||
|
136
common/src/main/java/com/yunbao/common/views/CustomLayout.java
Normal file
136
common/src/main/java/com/yunbao/common/views/CustomLayout.java
Normal file
@ -0,0 +1,136 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.text.Layout;
|
||||
import android.text.StaticLayout;
|
||||
import android.text.TextPaint;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.lzf.easyfloat.enums.ShowPattern;
|
||||
import com.yunbao.common.dialog.DebugDialog;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
|
||||
/**
|
||||
* TextView + View 动态布局
|
||||
*/
|
||||
public class CustomLayout extends ViewGroup {
|
||||
//单行显示
|
||||
private static final int SINGLE_LINE = 0x01;
|
||||
//多行显示
|
||||
private static final int MULTI_LINE = 0x02;
|
||||
//显示到下一行
|
||||
private static final int NEXT_LINE = 0x03;
|
||||
//显示样式
|
||||
private int type;
|
||||
//绘制文字最后一行的顶部坐标
|
||||
private int lastLineTop;
|
||||
//绘制文字最后一行的右边坐标
|
||||
private float lastLineRight;
|
||||
|
||||
public CustomLayout(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public CustomLayout(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public CustomLayout(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
int childCount = getChildCount();
|
||||
final int w = MeasureSpec.getSize(widthMeasureSpec);
|
||||
if (childCount == 2) {
|
||||
TextView tv = null;
|
||||
if(getChildAt(0) instanceof TextView){
|
||||
tv = (TextView) getChildAt(0);
|
||||
initTextParams(tv.getText(), tv.getMeasuredWidth(), tv.getPaint());
|
||||
}else{
|
||||
throw new RuntimeException("CustomLayout first child view not a TextView");
|
||||
}
|
||||
|
||||
View sencodView = getChildAt(1);
|
||||
|
||||
//测量子view的宽高
|
||||
measureChildren(widthMeasureSpec, heightMeasureSpec);
|
||||
|
||||
final String textWidth=String.valueOf(tv.getMeasuredWidth());
|
||||
final String viewWidth=String.valueOf(sencodView.getMeasuredWidth());
|
||||
final String maxWidth=String.valueOf(tv.getMeasuredWidth()+sencodView.getMeasuredWidth());
|
||||
|
||||
//两个子view宽度相加小于该控件宽度的时候
|
||||
if (tv.getMeasuredWidth() + sencodView.getMeasuredWidth() <= w) {
|
||||
int width = tv.getMeasuredWidth()+sencodView.getMeasuredWidth();
|
||||
//计算高度
|
||||
int height = Math.max(tv.getMeasuredHeight(), sencodView.getMeasuredHeight());
|
||||
//设置该viewgroup的宽高
|
||||
setMeasuredDimension(width, height);
|
||||
type = SINGLE_LINE;
|
||||
return;
|
||||
}
|
||||
if (getChildAt(0) instanceof TextView) {
|
||||
//最后一行文字的宽度加上第二个view的宽度大于viewgroup宽度时第二个控件换行显示
|
||||
if (lastLineRight + sencodView.getMeasuredWidth() > w) {
|
||||
setMeasuredDimension(tv.getMeasuredWidth(), tv.getMeasuredHeight() + sencodView.getMeasuredHeight());
|
||||
type = NEXT_LINE;
|
||||
return;
|
||||
}
|
||||
|
||||
int height = Math.max(tv.getMeasuredHeight(), lastLineTop + sencodView.getMeasuredHeight());
|
||||
setMeasuredDimension(tv.getMeasuredWidth(), height);
|
||||
type = MULTI_LINE;
|
||||
}
|
||||
} else {
|
||||
throw new RuntimeException("CustomLayout child count must is 2");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
||||
if (type == SINGLE_LINE || type == MULTI_LINE) {
|
||||
TextView tv = (TextView) getChildAt(0);
|
||||
View v1 = getChildAt(1);
|
||||
//设置第二个view在Textview文字末尾位置
|
||||
tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight());
|
||||
int left = (int) lastLineRight;
|
||||
int top = lastLineTop;
|
||||
//最后一行的高度 注:通过staticLayout得到的行高不准确故采用这种方式
|
||||
int lastLineHeight = tv.getBottom()-tv.getPaddingBottom() -lastLineTop;
|
||||
//当第二view高度小于单行文字高度时竖直居中显示
|
||||
if(v1.getMeasuredHeight() < lastLineHeight){
|
||||
top = lastLineTop + (lastLineHeight - v1.getMeasuredHeight())/2;
|
||||
}
|
||||
v1.layout(left, top, left + v1.getMeasuredWidth(), top+v1.getMeasuredHeight());
|
||||
} else if (type == NEXT_LINE) {
|
||||
View v0 = getChildAt(0);
|
||||
View v1 = getChildAt(1);
|
||||
//设置第二个view换行显示
|
||||
v0.layout(0, 0, v0.getMeasuredWidth(), v0.getMeasuredHeight());
|
||||
v1.layout(0, v0.getMeasuredHeight(), v1.getMeasuredWidth(), v0.getMeasuredHeight() + v1.getMeasuredHeight());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到Textview绘制文字的基本信息
|
||||
* @param text Textview的文字内容
|
||||
* @param maxWidth Textview的宽度
|
||||
* @param paint 绘制文字的paint
|
||||
*/
|
||||
private void initTextParams(CharSequence text, int maxWidth, TextPaint paint) {
|
||||
System.out.println("text = " + text + ", maxWidth = " + maxWidth + ", paint = " + paint);
|
||||
StaticLayout staticLayout = new StaticLayout(text, paint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
int lineCount = staticLayout.getLineCount();
|
||||
lastLineTop = staticLayout.getLineTop(lineCount - 1);
|
||||
lastLineRight = staticLayout.getLineRight(lineCount - 1);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
package com.yunbao.common.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.text.TextPaint;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.ViewParent;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.yunbao.common.R;
|
||||
|
||||
public class MainMessageChatListItemLayout extends LinearLayout {
|
||||
private static final String TAG = "消息列表佈局";
|
||||
|
||||
public int autoText = 0;
|
||||
|
||||
public MainMessageChatListItemLayout(Context context) {
|
||||
super(context);
|
||||
onLayoutChanged();
|
||||
}
|
||||
|
||||
public MainMessageChatListItemLayout(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MainMessageChatListItem_Layout);
|
||||
autoText = array.getResourceId(R.styleable.MainMessageChatListItem_Layout_autoTextEllipsize, 0);
|
||||
onLayoutChanged();
|
||||
}
|
||||
|
||||
public MainMessageChatListItemLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MainMessageChatListItem_Layout);
|
||||
autoText = array.getResourceId(R.styleable.MainMessageChatListItem_Layout_autoTextEllipsize, 0);
|
||||
onLayoutChanged();
|
||||
}
|
||||
|
||||
public MainMessageChatListItemLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
int itemIndex = 0;
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
||||
super.onLayout(changed, l, t, r, b);
|
||||
/*int width = getWidth();
|
||||
int count = getChildCount();
|
||||
double max = 0;
|
||||
double autoTextViewMeasuredWidth = 0;
|
||||
double otherViewWidth = 0;
|
||||
int autoId = -1;
|
||||
for (int i = 0; i < count; i++) {
|
||||
View item = getChildAt(i);
|
||||
// item.layout(l, t, r, b);
|
||||
double itemWidth = item.getMeasuredWidth();
|
||||
int padding = item.getPaddingLeft() + item.getPaddingRight();
|
||||
if (item instanceof TextView) {
|
||||
TextPaint paint = ((TextView) item).getPaint();
|
||||
itemWidth = paint.measureText(((TextView) item).getText().toString());
|
||||
if (item.getId() == autoText) {
|
||||
autoId = i;
|
||||
autoTextViewMeasuredWidth = itemWidth;
|
||||
} else {
|
||||
otherViewWidth += itemWidth;
|
||||
}
|
||||
Log.i(TAG, "TextView: " + ((TextView) item).getText() + "|" + paint.measureText(((TextView) item).getText().toString()));
|
||||
} else {
|
||||
Log.i(TAG, "onLayout: 不是TextView");
|
||||
}
|
||||
max += itemWidth + padding;
|
||||
Log.i(TAG, "autoId = " + autoId + "vid = " + autoText + " item = " + item + " width = " + itemWidth + "changed = " + changed + ", l = " + l + ", t = " + t + ", r = " + r + ", b = " + b);
|
||||
}
|
||||
Log.i(TAG, "布局总宽度 = " + width + "|" + "item总宽度 = " + max);
|
||||
if (autoId != -1 && max > width) {
|
||||
int diffValue = (int) (width - otherViewWidth);
|
||||
diffValue=20;
|
||||
int layoutChildViewCurX = 0;
|
||||
for (int i = 0; i < count; i++) {
|
||||
View view = getChildAt(i);
|
||||
if (view.getId() == autoId) {
|
||||
view.layout(layoutChildViewCurX, t, layoutChildViewCurX+diffValue, b);
|
||||
layoutChildViewCurX += diffValue;
|
||||
} else {
|
||||
view.layout(layoutChildViewCurX, t, layoutChildViewCurX + view.getMeasuredWidth(), b);
|
||||
layoutChildViewCurX += view.getMeasuredWidth();
|
||||
}
|
||||
}
|
||||
*//*int layoutChildViewCurX = l, tr = r, tt = t, tb = b;
|
||||
for (int i = 0; i < count; i++) {
|
||||
View item = getChildAt(i);
|
||||
tr=item.getMeasuredWidth();
|
||||
if (item.getId() == autoId) {
|
||||
int diffValue = (int) (width - otherViewWidth);
|
||||
item.layout(layoutChildViewCurX, tt, layoutChildViewCurX+item.getMeasuredWidth(), tb);
|
||||
layoutChildViewCurX=item.getMeasuredWidth();
|
||||
continue;
|
||||
}
|
||||
item.layout(layoutChildViewCurX, tt, layoutChildViewCurX+item.getMeasuredWidth(), tb);
|
||||
layoutChildViewCurX=item.getMeasuredWidth();
|
||||
}*//*
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
|
||||
}
|
||||
|
||||
void onLayoutChanged() {
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:width="68dp" android:height="37dp">
|
||||
<shape android:shape="rectangle">
|
||||
<stroke android:width="1dp" android:color="#EB6FFF" />
|
||||
<corners android:topLeftRadius="15dp" android:topRightRadius="15dp" android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" />
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
@ -3,6 +3,7 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:background="@color/white"
|
||||
android:orientation="vertical">
|
||||
|
||||
@ -361,8 +362,10 @@
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/authenticationLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
tools:layout_width="match_parent"
|
||||
tools:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
|
@ -659,7 +659,7 @@
|
||||
<string name="report">Report</string>
|
||||
<string name="reload">retry</string>
|
||||
<string name="refuse">refuse</string>
|
||||
<string name="save">Preservation</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="reg">Register</string>
|
||||
<string name="no_more_mic">No one is currently in the voice link</string>
|
||||
<string name="welcome_pdlive">Welcome to PDLive</string>
|
||||
|
@ -659,7 +659,7 @@
|
||||
<string name="report">Report</string>
|
||||
<string name="reload">retry</string>
|
||||
<string name="refuse">refuse</string>
|
||||
<string name="save">Preservation</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="reg">Register</string>
|
||||
<string name="no_more_mic">No one is currently in the voice link</string>
|
||||
<string name="welcome_pdlive">Welcome to PDLive</string>
|
||||
|
@ -138,4 +138,7 @@
|
||||
<item name="android:activityCloseEnterAnimation">@anim/out_to_right_abit</item>
|
||||
<item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
|
||||
</style>
|
||||
<declare-styleable name="MainMessageChatListItem_Layout">
|
||||
<attr format="reference|enum" name="autoTextEllipsize"/>
|
||||
</declare-styleable>
|
||||
</resources>
|
@ -4,8 +4,8 @@ ext {
|
||||
buildToolsVersion: "29.0.2",
|
||||
minSdkVersion : 23,
|
||||
targetSdkVersion : 33,
|
||||
versionCode : 525,
|
||||
versionName : "6.6.8",
|
||||
versionCode : 526,
|
||||
versionName : "6.6.9",
|
||||
namespace : "com.pandoralive.shayu"
|
||||
]
|
||||
manifestPlaceholders = [
|
||||
@ -13,6 +13,7 @@ ext {
|
||||
serverHost : "https://napi.yaoulive.com",
|
||||
// 测试
|
||||
// serverHost : " https://ceshi.yaoulive.com",
|
||||
buildTime : new Date().format("MM-dd HH:mm", TimeZone.getTimeZone("GMT+8")),
|
||||
|
||||
//百度语音识别
|
||||
baiduAppId : "23774720",
|
||||
|
@ -47,7 +47,7 @@ public class EditNameRemarksActivity extends AbsActivity implements View.OnClick
|
||||
userId = getIntent().getStringExtra(NAMEREMARK);
|
||||
mEditText = (EditText) findViewById(R.id.edit);
|
||||
mEditText.setFilters(new InputFilter[]{
|
||||
new InputFilter.LengthFilter(10)
|
||||
new InputFilter.LengthFilter(25)
|
||||
});
|
||||
findViewById(R.id.btn_save).setOnClickListener(this);
|
||||
String content = InstructorRemarkManager.get(mContext).getInstructorRemark().get(userId);
|
||||
|
@ -1,10 +1,13 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
@ -15,7 +18,9 @@ import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.Constants;
|
||||
import com.yunbao.common.adapter.RefreshAdapter;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.bean.SystemMessageBean;
|
||||
import com.yunbao.live.views.SystemMessageViewHolder;
|
||||
@ -23,6 +28,9 @@ import com.yunbao.live.views.SystemMessageViewHolder;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import io.rong.imkit.utils.RouteUtils;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
|
||||
/**
|
||||
* 互動信息
|
||||
*/
|
||||
@ -53,6 +61,7 @@ public class InteractionMessageAdapter extends RefreshAdapter<SystemMessageBean>
|
||||
LinearLayout toView, lt_content2, lt_reply, lt_img;
|
||||
ImageView img_content_pic1, img_content_pic2, img_content_pic3, img_content2_pic1, img_content2_pic2, img_item_interaction;
|
||||
RelativeLayout rt_root;
|
||||
Button mBtnChat;
|
||||
|
||||
public Vh(View itemView) {
|
||||
super(itemView);
|
||||
@ -67,6 +76,7 @@ public class InteractionMessageAdapter extends RefreshAdapter<SystemMessageBean>
|
||||
img_content_pic3 = itemView.findViewById(R.id.img_content_pic3);
|
||||
img_content2_pic1 = itemView.findViewById(R.id.img_content2_pic1);
|
||||
img_content2_pic2 = itemView.findViewById(R.id.img_content2_pic2);
|
||||
mBtnChat = itemView.findViewById(R.id.btn_chat);
|
||||
rt_root = itemView.findViewById(R.id.rt_root);
|
||||
lt_reply = itemView.findViewById(R.id.lt_reply);
|
||||
lt_img = itemView.findViewById(R.id.lt_img);
|
||||
@ -87,13 +97,29 @@ public class InteractionMessageAdapter extends RefreshAdapter<SystemMessageBean>
|
||||
RouteUtil.forwardUserHome(mContext, bean.getUid(), 2);
|
||||
}
|
||||
});
|
||||
if (IMLoginManager.get(mContext).getAnchorB() == 1) {
|
||||
mBtnChat.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mBtnChat.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
ViewClicksAntiShake.clicksAntiShake(mBtnChat, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
RouteUtils.routeToConversationActivity(
|
||||
mContext,
|
||||
Conversation.ConversationType.PRIVATE,
|
||||
bean.getUid()
|
||||
);
|
||||
}
|
||||
});
|
||||
if (bean.getDynamic_id() != null && !"0".equals(bean.getDynamic_id())) {
|
||||
lt_img.setVisibility(View.VISIBLE);
|
||||
rt_root.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Constants.myIntoIndex = 2;
|
||||
Constants.chatActionUrl=CommonAppConfig.HOST
|
||||
Constants.chatActionUrl = CommonAppConfig.HOST
|
||||
+ "/h5/shequ/index.html#/h5/shequ/details?isDetailsChat=1&dynamic_uid="
|
||||
+ bean.getUid()
|
||||
+ "&id=" + bean.getDynamic_id();
|
||||
|
@ -15,11 +15,14 @@ import androidx.annotation.NonNull;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.yunbao.common.bean.LiveBean;
|
||||
import com.yunbao.common.dialog.DebugDialog;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.http.LiveHttpUtil;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.message.content.MessageChatTipsContent;
|
||||
import com.yunbao.common.utils.DateFormatUtil;
|
||||
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
|
||||
import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.event.InputPanelViewHolderEvent;
|
||||
|
||||
@ -73,7 +76,7 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
||||
}
|
||||
holder.getConvertView().setBackgroundColor(Color.parseColor("#00000000"));
|
||||
holder.itemView.setBackgroundColor(Color.parseColor("#00000000"));
|
||||
ImageView readReceiptNew = holder.getConvertView().findViewById(R.id.rc_read_receipt_new);
|
||||
TextView readReceiptNew = holder.getConvertView().findViewById(R.id.rc_read_receipt_new);
|
||||
|
||||
if (messageDirection == Message.MessageDirection.RECEIVE) {
|
||||
RongIMClient.getInstance().syncConversationReadStatus(mDataList.get(position).getConversationType(),
|
||||
@ -99,9 +102,11 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
||||
readReceiptNew.setVisibility(View.GONE);
|
||||
}
|
||||
if (readReceipt.getVisibility() == View.VISIBLE) {
|
||||
readReceiptNew.setBackgroundResource(R.mipmap.icon_message_read);
|
||||
readReceiptNew.setText(WordUtil.getNewString(R.string.message_chat_msg_read_tip));
|
||||
readReceiptNew.setTextColor(Color.parseColor("#777777"));
|
||||
} else {
|
||||
readReceiptNew.setBackgroundResource(R.mipmap.icon_message_unread);
|
||||
readReceiptNew.setText(WordUtil.getNewString(R.string.message_chat_msg_unread_tip));
|
||||
readReceiptNew.setTextColor(Color.parseColor("#FF4874"));
|
||||
}
|
||||
if (readReceipt != null) {
|
||||
readReceipt.setVisibility(View.GONE);
|
||||
@ -109,7 +114,6 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
||||
if (content instanceof MessageChatTipsContent) {
|
||||
readReceiptNew.setVisibility(View.GONE);
|
||||
}
|
||||
readReceiptNew.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
holder.getConvertView().setOnTouchListener(new View.OnTouchListener() {
|
||||
@ -163,6 +167,8 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
||||
holder.getView(R.id.right_liveStatus).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
ImgLoader.displayAvatarCircleCrop(holder.getContext(), IMLoginManager.get(holder.getContext()).getUserInfo().getAvatar(),holder.getView(R.id.rc_right_portrait));
|
||||
/* if (messageDirection == Message.MessageDirection.RECEIVE) {
|
||||
holder.setText(R.id.left_time, DateFormatUtil.formatDate(new Date(mDataList.get(position).getSentTime()), "MM-dd hh:mm:ss"));
|
||||
holder.getView(R.id.left_time).setVisibility(View.VISIBLE);
|
||||
|
@ -691,6 +691,11 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
|
||||
} else if (pkInfo != null && pkInfo.getIntValue("drpk_status") == 1) {
|
||||
if (mLiveRoomViewHolder != null) {
|
||||
mLiveRoomViewHolder.initPkRank(null);
|
||||
String pkUid = pkInfo.getString("pkuid");
|
||||
if (!StringUtil.isEmpty(pkUid)) {
|
||||
//初始化天梯赛信息
|
||||
mLiveRoomViewHolder.initRankPKInfo(String.valueOf(data.getLiveInfo().getUid()), pkUid);
|
||||
}
|
||||
}
|
||||
if (mLivePlayViewHolder != null) {
|
||||
mLivePlayViewHolder.setViewUP(4);
|
||||
|
24
live/src/main/res/layout/fragment_main_message_chat_list.xml
Normal file
24
live/src/main/res/layout/fragment_main_message_chat_list.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_height="match_parent">
|
||||
<FrameLayout
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="50dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lt_nodata_msg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@mipmap/img_no_new" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
@ -30,8 +31,8 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="3dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
@ -54,6 +55,28 @@
|
||||
android:textColor="@color/black1"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lt_img"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="visible">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
app:cardCornerRadius="8dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_item_interaction"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@ -92,29 +115,21 @@
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lt_img"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="visible">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
app:cardCornerRadius="8dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_item_interaction"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_chat"
|
||||
android:layout_width="68dp"
|
||||
android:layout_height="37dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@drawable/bg_msg_address_book_user_btn_fan"
|
||||
android:text="@string/message_interactive_chat"
|
||||
android:textColor="#FFF"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
@ -53,35 +53,71 @@
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rc_conversation_title_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/rc_margin_size_12"
|
||||
android:orientation="horizontal"
|
||||
app:autoTextEllipsize="@+id/rc_conversation_title"
|
||||
app:layout_constraintEnd_toStartOf="@+id/rc_conversation_date"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_title"
|
||||
style="@style/TextStyle.Alignment"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/rc_margin_size_12"
|
||||
android:layout_marginTop="@dimen/rc_margin_size_16"
|
||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
||||
android:text="张三"
|
||||
android:ellipsize="end"
|
||||
android:maxWidth="120dp"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/rc_text_main_color"
|
||||
android:textSize="@dimen/rc_font_secondary_size"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintHorizontal_bias="0"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="张三11111111111111111111111" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_live_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
||||
android:background="@drawable/bg_main_message_chat_list_live_timer"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingEnd="3dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="#EC70FD"
|
||||
android:textSize="10sp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="看直播10min"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_status"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/rc_margin_size_12"
|
||||
android:layout_marginTop="@dimen/rc_margin_size_16"
|
||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textSize="8sp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintEnd_toStartOf="@+id/rc_conversation_date"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_title"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_live_status"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="在线" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_content"
|
||||
@ -91,15 +127,15 @@
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginEnd="60dp"
|
||||
android:text="你好,朋友!11111111111111111111111111111111111111111"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="你好,朋友!11111111111111111111111111111111111111111"
|
||||
android:textColor="@color/rc_secondary_color"
|
||||
android:textSize="@dimen/rc_font_text_third_size"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl"
|
||||
app:layout_constraintTop_toBottomOf="@+id/rc_conversation_title" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/rc_conversation_title_layout" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_conversation_date"
|
||||
@ -116,14 +152,14 @@
|
||||
<ImageView
|
||||
android:id="@+id/rc_conversation_no_disturb"
|
||||
android:layout_width="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
||||
android:layout_marginBottom="@dimen/rc_margin_size_12"
|
||||
android:src="@drawable/rc_no_disturb"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:src="@drawable/rc_no_disturb" />
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rc_conversation_read_receipt"
|
||||
@ -131,18 +167,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/rc_margin_size_2"
|
||||
android:layout_marginBottom="@dimen/rc_margin_size_12"
|
||||
android:src="@drawable/rc_read_receipt"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/rc_conversation_no_disturb"
|
||||
app:layout_goneMarginRight="@dimen/rc_margin_size_12"
|
||||
android:src="@drawable/rc_read_receipt" />
|
||||
app:layout_goneMarginRight="@dimen/rc_margin_size_12" />
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0.5dp"
|
||||
android:layout_marginTop="71.5dp"
|
||||
android:background="@color/rc_divider_color"
|
||||
app:layout_constraintStart_toStartOf="@id/rc_conversation_title"
|
||||
app:layout_constraintStart_toStartOf="@id/rc_conversation_title_layout"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
@ -142,12 +142,6 @@
|
||||
android:src="@drawable/rc_read_receipt"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/rc_read_receipt_new"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginEnd="4dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_read_receipt_request"
|
||||
@ -182,6 +176,16 @@
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rc_read_receipt_new"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="[已读]"
|
||||
android:visibility="gone"
|
||||
android:text="11sp"
|
||||
app:layout_constraintEnd_toEndOf="@+id/ll_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ll_content"
|
||||
tools:visibility="visible" />
|
||||
<View
|
||||
android:id="@+id/rc_v_edit"
|
||||
android:layout_width="0dp"
|
||||
|
@ -117,4 +117,11 @@
|
||||
<string name="live_fans_group_send_gift_tips">Fan group level Of Lv%s Can send this gift</string>
|
||||
<string name="live_rad_pack_join_fans_group_tip">Join the fan group can be opened [Join]</string>
|
||||
<string name="live_rad_pack_join_fans_group_click_tip">Join the fan group to open</string>
|
||||
<string name="message_chat_msg_all">全部聊天</string>
|
||||
<string name="message_chat_msg_system">系統匹配</string>
|
||||
<string name="message_chat_msg_user">對方主動</string>
|
||||
<string name="message_chat_msg_look_live">看直播%dmin</string>
|
||||
<string name="message_chat_msg_read_tip">[Read]</string>
|
||||
<string name="message_chat_msg_unread_tip">[Unread]</string>
|
||||
<string name="message_interactive_chat">發起聊天</string>
|
||||
</resources>
|
@ -115,4 +115,12 @@
|
||||
<string name="live_fans_group_send_gift_tips">粉絲團等級達到 Lv%s 可送出該禮物</string>
|
||||
<string name="live_rad_pack_join_fans_group_tip">加入粉絲團可開啟【加入】</string>
|
||||
<string name="live_rad_pack_join_fans_group_click_tip">加入粉絲團可開啟</string>
|
||||
<string name="message_chat_msg_all">全部聊天</string>
|
||||
<string name="message_chat_msg_system">系統匹配</string>
|
||||
<string name="message_chat_msg_user">對方主動</string>
|
||||
<string name="message_chat_msg_look_live">看直播%dmin</string>
|
||||
<string name="message_chat_msg_read_tip">[已讀]</string>
|
||||
<string name="message_chat_msg_unread_tip">[未讀]</string>
|
||||
<string name="message_interactive_chat">發起聊天</string>
|
||||
|
||||
</resources>
|
||||
|
@ -59,6 +59,7 @@ import com.yunbao.main.R;
|
||||
import com.yunbao.main.event.EditProfileEvent;
|
||||
import com.yunbao.main.http.MainHttpConsts;
|
||||
import com.yunbao.main.http.MainHttpUtil;
|
||||
import com.yunbao.main.manager.imrongcloud.ConversationIMListManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
@ -30,6 +30,7 @@ import com.yunbao.common.utils.ListUtils;
|
||||
import com.yunbao.common.utils.RandomUtil;
|
||||
import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ViewPageIndicatorUtils;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.main.R;
|
||||
import com.yunbao.main.adapter.MainMsgAddressBookListAdapter;
|
||||
@ -224,7 +225,7 @@ public class MsgAddressBookActivity extends AbsActivity {
|
||||
}
|
||||
});
|
||||
mIndicator.setNavigator(commonNavigator);
|
||||
bind(mIndicator, mViewPager);
|
||||
ViewPageIndicatorUtils.bind(mIndicator, mViewPager,null);
|
||||
}
|
||||
|
||||
private void initViewPager() {
|
||||
@ -311,27 +312,7 @@ public class MsgAddressBookActivity extends AbsActivity {
|
||||
});
|
||||
}
|
||||
|
||||
public static void bind(final MagicIndicator magicIndicator, ViewPager2 viewPager) {
|
||||
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
super.onPageSelected(position);
|
||||
magicIndicator.onPageSelected(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
super.onPageScrollStateChanged(state);
|
||||
magicIndicator.onPageScrollStateChanged(state);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private List<MessageChatUserBean> createTempData(int type) {
|
||||
List<MessageChatUserBean> list = new ArrayList<>();
|
||||
|
@ -5,6 +5,7 @@ import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.text.InputFilter;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.GestureDetector;
|
||||
@ -53,6 +54,7 @@ import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.ViewUtils;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.live.bean.SearchUserBean;
|
||||
import com.yunbao.live.dialog.MenuPopuwWindow;
|
||||
import com.yunbao.live.event.InputPanelViewHolderEvent;
|
||||
@ -63,7 +65,6 @@ import com.yunbao.main.R;
|
||||
import com.yunbao.main.adapter.MessageChatTopImageListAdapter;
|
||||
import com.yunbao.main.adapter.MessageChatTopTopListAdapter;
|
||||
import com.yunbao.main.http.MainHttpUtil;
|
||||
import com.yunbao.main.manager.imrongcloud.ConversationIMListManager;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@ -262,8 +263,11 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
||||
|
||||
}
|
||||
});
|
||||
ViewUtils.findViewById(card, R.id.rc_conversation_portrait, ImageView.class).setOnClickListener(view -> {
|
||||
ViewClicksAntiShake.clicksAntiShake(ViewUtils.findViewById(card, R.id.rc_conversation_portrait, ImageView.class), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
RouteUtil.forwardUserHome(targetId);
|
||||
}
|
||||
});
|
||||
|
||||
} catch (Exception e) {
|
||||
@ -297,10 +301,10 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
||||
showBanner();
|
||||
showTag();
|
||||
if (data.getUser().getAttention() <= 1) {
|
||||
ViewUtils.findViewById(card, R.id.follow, Button.class).setOnClickListener(new View.OnClickListener() {
|
||||
ViewClicksAntiShake.clicksAntiShake(ViewUtils.findViewById(card, R.id.follow, Button.class), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
follow((Button) view, userInfoBean.getUser().getId() + "");
|
||||
public void onViewClicks() {
|
||||
follow(ViewUtils.findViewById(card, R.id.follow, Button.class), userInfoBean.getUser().getId() + "");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@ -313,7 +317,9 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
||||
public void onSuccess(List<Integer> data) {
|
||||
if (data.contains(Integer.parseInt(targetId))) {
|
||||
ViewUtils.findViewById(card, R.id.liveStatus).setVisibility(View.VISIBLE);
|
||||
ViewUtils.findViewById(card, R.id.liveStatus).setOnClickListener(view -> {
|
||||
ViewClicksAntiShake.clicksAntiShake(ViewUtils.findViewById(card, R.id.liveStatus), new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
LiveHttpUtil.getLiveInfo(targetId, new com.yunbao.common.http.HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
@ -337,6 +343,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -413,7 +420,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
||||
JSONArray array = JSONArray.parseArray(Arrays.toString(info));
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
JSONObject json = array.getJSONObject(0);
|
||||
if (json.containsKey(targetId)) {
|
||||
if (json.containsKey(targetId) && !StringUtil.isEmpty(json.getString(targetId))) {
|
||||
titleView.setText(json.getString(targetId));
|
||||
ViewUtils.findViewById(card, R.id.userName, TextView.class).setText(json.getString(targetId));
|
||||
return;
|
||||
|
@ -14,25 +14,42 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||
import com.yunbao.common.dialog.DebugDialog;
|
||||
import com.yunbao.common.glide.ImgLoader;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.message.content.MessageChatCardContent;
|
||||
import com.yunbao.common.utils.AppManager;
|
||||
import com.yunbao.common.utils.DateFormatUtil;
|
||||
import com.yunbao.common.utils.ListUtils;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.ViewUtils;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
import com.yunbao.main.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.IMCenter;
|
||||
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.utils.RouteUtils;
|
||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
import io.rong.imkit.widget.refresh.listener.OnRefreshListener;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.MessageContent;
|
||||
import io.rong.message.TextMessage;
|
||||
|
||||
public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
public static final int TYPE_SEARCH_TITLE = 500;
|
||||
@ -40,12 +57,18 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
public static final int TYPE_SEARCH_CHAT = 520;
|
||||
private List<BaseUiConversation> srcList;
|
||||
private Context mContext;
|
||||
private boolean isChat=true;
|
||||
private boolean isChat = true;
|
||||
private OnRecyclerListRefreshListener<List<BaseUiConversation>> onRefreshListener;
|
||||
private Map<String, Integer> timerMap = new HashMap<>();
|
||||
|
||||
public MainConversationListAdapter(Context mContext) {
|
||||
this.mContext = mContext;
|
||||
}
|
||||
|
||||
public void setOnRefreshListener(OnRecyclerListRefreshListener<List<BaseUiConversation>> onRefreshListener) {
|
||||
this.onRefreshListener = onRefreshListener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
@ -104,28 +127,90 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
} else if (getItemViewType(position) != -200) {
|
||||
super.onBindViewHolder(holder, position);
|
||||
}
|
||||
if (getItemViewType(position) != -200) {
|
||||
bindDefault(holder, position);
|
||||
}
|
||||
}
|
||||
|
||||
private void bindDefault(ViewHolder holder, int position) {
|
||||
BaseUiConversation conversation = mDataList.get(position);
|
||||
Log.i("列表", "bindDefault: 用户头像:" + conversation.mCore.getPortraitUrl());
|
||||
Log.i("列表", "bindDefault: 用户名字:" + conversation.mCore.getConversationTitle());
|
||||
ImgLoader.display(holder.getContext(), conversation.mCore.getPortraitUrl(), holder.getView(R.id.rc_conversation_portrait));
|
||||
holder.setText(R.id.rc_conversation_title, conversation.mCore.getConversationTitle());
|
||||
if (conversation.mCore.getSentTime() != -1 && holder.getView(R.id.rc_conversation_date) != null) {
|
||||
holder.setText(R.id.rc_conversation_date, DateFormatUtil.getDateTimeString(conversation.mCore.getSentTime(), true, holder.getContext()));
|
||||
holder.getView(R.id.rc_conversation_date).setVisibility(View.VISIBLE);
|
||||
} else if (holder.getView(R.id.rc_conversation_date) != null) {
|
||||
holder.getView(R.id.rc_conversation_date).setVisibility(View.GONE);
|
||||
}
|
||||
if (holder.getView(R.id.rc_conversation_live_status) == null || IMLoginManager.get(holder.getContext()).getAnchorB() != 1) {
|
||||
return;
|
||||
}
|
||||
Integer timer = timerMap.get(mDataList.get(position).mCore.getTargetId());
|
||||
if (timer == null) {
|
||||
holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
if (timer >= 10) {
|
||||
holder.setText(R.id.rc_conversation_live_status,
|
||||
String.format(WordUtil.getNewString(R.string.message_chat_msg_look_live), timer)
|
||||
);
|
||||
holder.getView(R.id.rc_conversation_live_status).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.getView(R.id.rc_conversation_live_status).setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void bindEmpty(ViewHolder holder, int position) {
|
||||
if(isChat){
|
||||
ViewUtils.findViewById(holder.itemView,R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_chat_list);
|
||||
ViewUtils.findViewById(holder.itemView,R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list);
|
||||
}else{
|
||||
ViewUtils.findViewById(holder.itemView,R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_search);
|
||||
ViewUtils.findViewById(holder.itemView,R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list_search);
|
||||
if (isChat) {
|
||||
ViewUtils.findViewById(holder.itemView, R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_chat_list);
|
||||
ViewUtils.findViewById(holder.itemView, R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list);
|
||||
} else {
|
||||
ViewUtils.findViewById(holder.itemView, R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_search);
|
||||
ViewUtils.findViewById(holder.itemView, R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list_search);
|
||||
}
|
||||
}
|
||||
|
||||
public void onFinish() {
|
||||
if (onRefreshListener != null) {
|
||||
Log.i("聊天数据源", "设置数据源: " + mDataList.size());
|
||||
onRefreshListener.onFinish(mDataList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDataCollection(List<BaseUiConversation> data) {
|
||||
List<BaseUiConversation> tmp = new ArrayList<>();
|
||||
Log.i("聊天数据源", "setDataCollection: " + data.hashCode());
|
||||
List<String> urls = new ArrayList<>();
|
||||
if (srcList == null) {
|
||||
srcList = new ArrayList<>();
|
||||
}
|
||||
mDataList.clear();
|
||||
srcList.clear();
|
||||
if (mContext == null)
|
||||
mContext = AppManager.getInstance().getLastActivity();
|
||||
for (BaseUiConversation item : data) {
|
||||
if (urls.contains(item.mCore.getTargetId())) continue;
|
||||
if (item.mConversationContent != null && item.mConversationContent.toString().contains("_method_")) {
|
||||
IMCenter.getInstance().deleteMessages(Conversation.ConversationType.PRIVATE,
|
||||
item.mCore.getTargetId(),
|
||||
new int[]{item.mCore.getLatestMessageId()},
|
||||
new RongIMClient.ResultCallback<Boolean>() {
|
||||
public void onSuccess(Boolean aBoolean) {
|
||||
Log.i("PDMessageInterceptor", "onSuccess: 删除成功:" + aBoolean + " " + item.mCore.getLatestMessageId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode errorCode) {
|
||||
Log.i("PDMessageInterceptor", "onSuccess: 删除失败:" + errorCode);
|
||||
}
|
||||
}
|
||||
);
|
||||
IMCenter.getInstance().clearMessagesUnreadStatus(Conversation.ConversationType.PRIVATE, item.mCore.getTargetId(), null);
|
||||
}
|
||||
urls.add(item.mCore.getTargetId());
|
||||
Log.i("聊天数据源", item.mCore.getConversationTitle() + "|" + item.mCore.getPortraitUrl() + "|" + item.mCore.getTargetId());
|
||||
BaseUiConversation cn = new SingleConversation(mContext, item.mCore);
|
||||
srcList.add(cn);
|
||||
|
||||
@ -134,9 +219,17 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
item.mConversationContent = new SpannableString(WordUtil.getNewString(R.string.activity_msg_chat_list_card));
|
||||
}
|
||||
}
|
||||
tmp.add(item);
|
||||
}
|
||||
// ToastUtil.showDebug("消息数:"+data.size());
|
||||
super.setDataCollection(tmp);
|
||||
}
|
||||
|
||||
super.setDataCollection(data);
|
||||
public void clear() {
|
||||
mDataList.clear();
|
||||
if (srcList != null) {
|
||||
srcList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
public List<BaseUiConversation> getSrcList() {
|
||||
@ -172,8 +265,11 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
holder.getView(R.id.itemDecorationBottom).setVisibility(View.VISIBLE);
|
||||
holder.itemView.setBackgroundResource(R.drawable.bg_msg_list_item_centre);
|
||||
}
|
||||
holder.itemView.setOnClickListener(view -> {
|
||||
RouteUtils.routeToConversationActivity(view.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
||||
ViewClicksAntiShake.clicksAntiShake(holder.itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
RouteUtils.routeToConversationActivity(holder.itemView.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -199,16 +295,57 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
||||
holder.getView(R.id.itemDecorationBottom).setVisibility(View.VISIBLE);
|
||||
holder.itemView.setBackgroundResource(R.drawable.bg_msg_list_item_centre);
|
||||
}
|
||||
holder.itemView.setOnClickListener(view -> {
|
||||
RouteUtils.routeToConversationActivity(view.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
||||
ViewClicksAntiShake.clicksAntiShake(holder.itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||
@Override
|
||||
public void onViewClicks() {
|
||||
RouteUtils.routeToConversationActivity(holder.itemView.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setChat() {
|
||||
isChat=true;
|
||||
isChat = true;
|
||||
}
|
||||
|
||||
public void setSearch() {
|
||||
isChat=false;
|
||||
isChat = false;
|
||||
}
|
||||
|
||||
public void setTimerMap(Map<String, Integer> timerMap) {
|
||||
this.timerMap.putAll(timerMap);
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public int getMessageId(String senderUserId) {
|
||||
for (int i = 0; i < mDataList.size(); i++) {
|
||||
if (mDataList.get(i).mCore.getTargetId().equals(senderUserId)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public void update(Message bean, int id) {
|
||||
RongIMClient.getInstance().getUnreadCount(Conversation.ConversationType.PRIVATE, bean.getTargetId(), new RongIMClient.ResultCallback<Integer>() {
|
||||
@Override
|
||||
public void onSuccess(Integer integer) {
|
||||
BaseUiConversation conversation = mDataList.get(id);
|
||||
conversation.mCore.setSentTime(bean.getSentTime());
|
||||
conversation.mCore.setUnreadMessageCount(integer);
|
||||
conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent());
|
||||
mDataList.set(id, conversation);
|
||||
notifyItemChanged(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
BaseUiConversation conversation = mDataList.get(id);
|
||||
conversation.mCore.setSentTime(bean.getSentTime());
|
||||
conversation.mConversationContent = new SpannableString(((TextMessage) bean.getContent()).getContent());
|
||||
mDataList.set(id, conversation);
|
||||
notifyItemChanged(id);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,144 @@
|
||||
package com.yunbao.main.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||
import com.yunbao.common.dialog.DebugDialog;
|
||||
import com.yunbao.common.event.MessageIMEvent;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.manager.base.ACache;
|
||||
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
|
||||
import com.yunbao.common.utils.SpUtil;
|
||||
import com.yunbao.main.adapter.MainConversationListAdapter;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imlib.RongCoreClient;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.ReceivedProfile;
|
||||
import io.rong.message.TextMessage;
|
||||
|
||||
public abstract class AbsMainMessageChatListFragment extends Fragment {
|
||||
RecyclerView recyclerView;
|
||||
MainConversationListAdapter mAdapter;
|
||||
SmartRefreshLayout refreshLayout;
|
||||
|
||||
public void setAdapter(MainConversationListAdapter mAdapter) {
|
||||
this.mAdapter = mAdapter;
|
||||
}
|
||||
|
||||
|
||||
public abstract void onChatList();
|
||||
|
||||
public abstract void search(String string);
|
||||
|
||||
public abstract void updateList();
|
||||
|
||||
public void onTest() {
|
||||
}
|
||||
|
||||
public void onRefreshFinished() {
|
||||
if (refreshLayout != null) {
|
||||
refreshLayout.finishRefresh(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void onLoadMoreFinished() {
|
||||
if (refreshLayout != null) {
|
||||
refreshLayout.finishLoadMore(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
updateList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
EventBus.getDefault().register(this);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
private static long lastTime;
|
||||
private static boolean isNet = false;
|
||||
Map<String, BaseUiConversation> map = new HashMap<>();
|
||||
|
||||
public void loadLiveLookTime(List<BaseUiConversation> srcList, OnRecyclerListRefreshListener<Map<String, Integer>> onRefreshListener) {
|
||||
/* if (System.currentTimeMillis() - lastTime > 200 || isNet) {
|
||||
for (BaseUiConversation conversation : srcList) {
|
||||
if (map.containsKey(conversation.mCore.getTargetId())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
lastTime = System.currentTimeMillis();
|
||||
isNet = true;
|
||||
List<String> uids = new ArrayList<>();
|
||||
for (BaseUiConversation conversation : srcList) {
|
||||
map.put(conversation.mCore.getTargetId(), conversation);
|
||||
if (conversation.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) {
|
||||
uids.add(conversation.mCore.getTargetId());
|
||||
}
|
||||
}
|
||||
LiveNetManager.get(getContext())
|
||||
.getIsLook(String.join(",", uids), new HttpCallback<>() {
|
||||
@Override
|
||||
public void onSuccess(List<MainMessageChatListTimer> data) {
|
||||
Map<String, Integer> timerMap = new HashMap<>();
|
||||
for (MainMessageChatListTimer timer : data) {
|
||||
timerMap.put(timer.getUid(), timer.getTime());
|
||||
}
|
||||
onRefreshListener.onFinish(timerMap);
|
||||
isNet = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
isNet = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void sendMessage(io.rong.imlib.model.Message bean) {
|
||||
int id1 = mAdapter.getMessageId(bean.getSenderUserId());
|
||||
int id2 = mAdapter.getMessageId(bean.getTargetId());
|
||||
if (id1 != -1) {
|
||||
mAdapter.update(bean, id1);
|
||||
}
|
||||
if (id2 != -1) {
|
||||
mAdapter.update(bean, id2);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,12 +1,14 @@
|
||||
package com.yunbao.main.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
@ -17,36 +19,72 @@ import com.yunbao.main.adapter.MainConversationListAdapter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.rong.common.rlog.RLog;
|
||||
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
||||
import io.rong.imkit.conversationlist.ConversationListFragment;
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.event.Event;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.SearchConversationResult;
|
||||
|
||||
public class MainMessageChatFragment extends ConversationListFragment {
|
||||
|
||||
private static final String TAG = "融云列表";
|
||||
int listHashCode = 0;
|
||||
|
||||
@Nullable
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
Log.i(TAG, "onCreateView: 创建融云");
|
||||
return inflater.inflate(R.layout.rc_conversationlist_fragment, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
Log.i(TAG, "onViewCreated:创建融云页面");
|
||||
mConversationListViewModel.getConversationListLiveData().observe(this.getViewLifecycleOwner(), new Observer<List<BaseUiConversation>>() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onChanged(List<BaseUiConversation> uiConversations) {
|
||||
if (listHashCode != uiConversations.hashCode()) {
|
||||
listHashCode = uiConversations.hashCode();
|
||||
((MainConversationListAdapter) mAdapter).onFinish();
|
||||
}
|
||||
}
|
||||
});
|
||||
mConversationListViewModel.getRefreshEventLiveData().observe(this.getViewLifecycleOwner(), new Observer<Event.RefreshEvent>() {
|
||||
@Override
|
||||
public void onChanged(Event.RefreshEvent refreshEvent) {
|
||||
listHashCode = 0;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void setEmptyView(int viewLayoutMsgId) {
|
||||
super.setEmptyView(viewLayoutMsgId);
|
||||
}
|
||||
public void setEmptyView(View view){
|
||||
|
||||
public void setEmptyView(View view) {
|
||||
super.setEmptyView(view);
|
||||
}
|
||||
|
||||
|
||||
public void search(String search) {
|
||||
((MainConversationListAdapter)mAdapter).setSearch();
|
||||
((MainConversationListAdapter) mAdapter).setSearch();
|
||||
getContactsList(search);
|
||||
}
|
||||
|
||||
public MainConversationListAdapter getAdapter() {
|
||||
return (MainConversationListAdapter) mAdapter;
|
||||
}
|
||||
|
||||
private void getContactsList(String search) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
List<String> uidList = new ArrayList<>();
|
||||
|
||||
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_contacts));
|
||||
@ -58,6 +96,8 @@ public class MainMessageChatFragment extends ConversationListFragment {
|
||||
for (BaseUiConversation cn : ((MainConversationListAdapter) mAdapter).getSrcList()) {
|
||||
System.err.println(" ----------------------->" + cn.mCore.getConversationTitle() + "|" + cn.mCore.getSenderUserName());
|
||||
if (StringUtil.isEmpty(cn.mCore.getConversationTitle())) continue;
|
||||
if (uidList.contains(cn.mCore.getTargetId())) continue;
|
||||
uidList.add(cn.mCore.getTargetId());
|
||||
if (cn.mCore.getConversationTitle().contains(search)) {
|
||||
conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_USER" + search);
|
||||
@ -121,8 +161,12 @@ public class MainMessageChatFragment extends ConversationListFragment {
|
||||
}
|
||||
|
||||
public void onChatList() {
|
||||
((MainConversationListAdapter)mAdapter).setChat();
|
||||
if(mConversationListViewModel==null)return;
|
||||
((MainConversationListAdapter) mAdapter).setChat();
|
||||
((MainConversationListAdapter) mAdapter).clear();
|
||||
System.out.println(">!>!>!>!!>"+mConversationListViewModel);
|
||||
subscribeUi();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,92 @@
|
||||
package com.yunbao.main.fragment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.utils.AppManager;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.live.R;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
|
||||
public class MainMessageChatListFragment extends AbsMainMessageChatListFragment {
|
||||
private static final String TAG = "MainMessageChatListFragment";
|
||||
private Context mContext;
|
||||
|
||||
public MainMessageChatListFragment() {
|
||||
this.mContext = AppManager.getInstance().getMainActivity();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.fragment_main_message_chat_list, container, false);
|
||||
}
|
||||
|
||||
MainMessageChatFragment conversationListFragment;
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
Log.i(TAG, "onViewCreated: 准备创建融云");
|
||||
conversationListFragment = new MainMessageChatFragment();
|
||||
setAdapter(conversationListFragment.getAdapter());
|
||||
FragmentManager manager = ((FragmentActivity) mContext).getSupportFragmentManager();
|
||||
FragmentTransaction transaction = manager.beginTransaction();
|
||||
transaction.replace(R.id.container, conversationListFragment);
|
||||
transaction.commit();
|
||||
//自定义空数据背景View
|
||||
//conversationListFragment.setEmptyView(emptyView);
|
||||
conversationListFragment.setEmptyView(R.layout.view_layout_msg);
|
||||
conversationListFragment.getAdapter().setOnRefreshListener(new OnRecyclerListRefreshListener<List<BaseUiConversation>>() {
|
||||
@Override
|
||||
public void onFinish(List<BaseUiConversation> baseUiConversations) {
|
||||
loadLiveLookTime(baseUiConversations, new OnRecyclerListRefreshListener<Map<String, Integer>>() {
|
||||
@Override
|
||||
public void onFinish(Map<String, Integer> stringIntegerMap) {
|
||||
conversationListFragment.getAdapter().setTimerMap(stringIntegerMap);
|
||||
updateList();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void onChatList() {
|
||||
if (conversationListFragment == null) {
|
||||
return;
|
||||
}
|
||||
ToastUtil.showDebug("清空");
|
||||
conversationListFragment.onChatList();
|
||||
}
|
||||
|
||||
public void search(String string) {
|
||||
if (conversationListFragment == null) {
|
||||
return;
|
||||
}
|
||||
conversationListFragment.search(string);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateList() {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,346 @@
|
||||
package com.yunbao.main.fragment;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.InstructorRemarkManager;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.main.R;
|
||||
import com.yunbao.main.adapter.MainConversationListAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imkit.userinfo.UserDataProvider;
|
||||
import io.rong.imkit.utils.RouteUtils;
|
||||
import io.rong.imkit.widget.adapter.BaseAdapter;
|
||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.api.RefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener;
|
||||
import io.rong.imkit.widget.refresh.listener.OnRefreshListener;
|
||||
import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.SearchConversationResult;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
public class MainMessageChatListSystemFragment extends AbsMainMessageChatListFragment {
|
||||
private static final String TAG = "系统列表";
|
||||
|
||||
private List<String> needLoadInfo = new ArrayList<>();
|
||||
|
||||
|
||||
public MainMessageChatListSystemFragment() {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.rc_conversationlist_fragment, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
refreshLayout = view.findViewById(R.id.rc_refresh);
|
||||
recyclerView = view.findViewById(R.id.rc_conversation_list);
|
||||
refreshLayout.setNestedScrollingEnabled(false);
|
||||
refreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
||||
refreshLayout.setRefreshFooter(new RongRefreshHeader(this.getContext()));
|
||||
mAdapter = new MainConversationListAdapter(view.getContext());
|
||||
mAdapter.setEmptyView(com.yunbao.live.R.layout.view_layout_msg);
|
||||
mAdapter.setItemClickListener(new BaseAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(View view, ViewHolder holder, int position) {
|
||||
BaseUiConversation conversation = mAdapter.getSrcList().get(position);
|
||||
RouteUtils.routeToConversationActivity(view.getContext(), Conversation.ConversationType.PRIVATE, conversation.mCore.getTargetId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(View view, ViewHolder holder, int position) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
mAdapter.setOnRefreshListener(new OnRecyclerListRefreshListener<List<BaseUiConversation>>() {
|
||||
@Override
|
||||
public void onFinish(List<BaseUiConversation> baseUiConversations) {
|
||||
loadLiveLookTime(baseUiConversations, new OnRecyclerListRefreshListener<Map<String, Integer>>() {
|
||||
@Override
|
||||
public void onFinish(Map<String, Integer> stringIntegerMap) {
|
||||
mAdapter.setTimerMap(stringIntegerMap);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
initRefresh();
|
||||
init();
|
||||
}
|
||||
|
||||
private void initRefresh() {
|
||||
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
Log.i(TAG, "onLoadMore: 加载更多");
|
||||
checkList();
|
||||
}
|
||||
});
|
||||
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
Log.i(TAG, "onRefresh: 刷新");
|
||||
init();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private synchronized void checkList() {
|
||||
System.out.println("needLoadInfo = " + needLoadInfo.size());
|
||||
if (needLoadInfo.size() < 20) {
|
||||
getUserInfo(needLoadInfo);
|
||||
refreshLayout.setEnableLoadMore(false);
|
||||
} else {
|
||||
List<String> tmp = new ArrayList<>();
|
||||
System.out.println("tmp.size() = " + tmp.size());
|
||||
for (int i = 0; i < 20; i++) {
|
||||
tmp.add(needLoadInfo.get(i));
|
||||
}
|
||||
needLoadInfo.subList(0, 20).clear();
|
||||
System.out.println("tmp.size() = " + tmp.size());
|
||||
getUserInfo(tmp);
|
||||
refreshLayout.setEnableLoadMore(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChatList() {
|
||||
if(mAdapter==null) return;
|
||||
mAdapter.setChat();
|
||||
init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(String search) {
|
||||
mAdapter.setSearch();
|
||||
getContactsList(search);
|
||||
}
|
||||
|
||||
private void getContactsList(String search) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
|
||||
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_contacts));
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
list.add(conversation);
|
||||
|
||||
List<BaseUiConversation> data = new ArrayList<>();
|
||||
System.err.println(" ----------------------->" + mAdapter.getData().size());
|
||||
for (BaseUiConversation cn : ((MainConversationListAdapter) mAdapter).getSrcList()) {
|
||||
if (StringUtil.isEmpty(cn.mCore.getConversationTitle())) continue;
|
||||
System.err.println(" ----------------------->" + cn.mCore.getConversationTitle() + "|" + cn.mCore.getTargetId());
|
||||
if (cn.mCore.getConversationTitle().contains(search)) {
|
||||
conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_USER" + search);
|
||||
conversation.mCore.setConversationTitle(cn.mCore.getConversationTitle());
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
conversation.mCore.setPortraitUrl(cn.mCore.getPortraitUrl());
|
||||
conversation.mCore.setTargetId(cn.mCore.getTargetId());
|
||||
conversation.mCore.setSenderUserId(cn.mCore.getSenderUserId());
|
||||
data.add(conversation);
|
||||
}
|
||||
}
|
||||
if (data.size() == 1) {
|
||||
data.get(0).mCore.setMentionedCount(3);
|
||||
} else if (data.size() != 0) {
|
||||
data.get(0).mCore.setMentionedCount(1);
|
||||
data.get(data.size() - 1).mCore.setMentionedCount(2);
|
||||
} else {
|
||||
list.remove(list.size() - 1);
|
||||
}
|
||||
list.addAll(data);
|
||||
getChatRecordList(list, search);
|
||||
}
|
||||
|
||||
private void getChatRecordList(List<BaseUiConversation> list, String search) {
|
||||
Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE};
|
||||
String[] messageTypeObjectNames = {"RC:TxtMsg"};
|
||||
|
||||
RongIMClient.getInstance().searchConversations(search, conversationTypes, messageTypeObjectNames, new RongIMClient.ResultCallback<List<SearchConversationResult>>() {
|
||||
@Override
|
||||
public void onSuccess(List<SearchConversationResult> searchConversationResults) {
|
||||
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_chat_records));
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
list.add(conversation);
|
||||
List<BaseUiConversation> data = new ArrayList<>();
|
||||
for (SearchConversationResult result : searchConversationResults) {
|
||||
BaseUiConversation cn = new SingleConversation(getContext(), result.getConversation());
|
||||
cn.mCore.setObjectName("SEARCH_CHAT" + search);
|
||||
data.add(cn);
|
||||
}
|
||||
if (data.size() == 1) {
|
||||
data.get(0).mCore.setMentionedCount(3);
|
||||
} else if (data.size() != 0) {
|
||||
data.get(0).mCore.setMentionedCount(1);
|
||||
data.get(data.size() - 1).mCore.setMentionedCount(2);
|
||||
} else {
|
||||
list.remove(list.size() - 1);
|
||||
}
|
||||
list.addAll(data);
|
||||
mAdapter.setDataCollection(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
ToastUtil.show("搜索出错了:" + e.getMessage());
|
||||
mAdapter.setDataCollection(list);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateList() {
|
||||
init();
|
||||
}
|
||||
|
||||
private void getUserInfo(List<String> uidList) {
|
||||
String uids = String.join(",", uidList);
|
||||
LiveNetManager.get(getContext())
|
||||
.getOtherList(uids, new HttpCallback<List<MessageChatUserBean>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MessageChatUserBean> data) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
for (MessageChatUserBean datum : data) {
|
||||
Conversation conversation = new Conversation();
|
||||
BaseUiConversation baseUiConversation = new SingleConversation(getContext(), conversation);
|
||||
baseUiConversation.mCore.setTargetId(datum.getId());
|
||||
baseUiConversation.mCore.setSenderUserId(IMLoginManager.get(getContext()).getUserInfo().getId() + "");
|
||||
baseUiConversation.mCore.setSentStatus(Message.SentStatus.CANCELED);
|
||||
baseUiConversation.mCore.setSentTime(-1);
|
||||
baseUiConversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
baseUiConversation.mCore.setPortraitUrl(datum.getAvatar());
|
||||
String remark = InstructorRemarkManager.get(getContext()).getInstructorRemark().get(datum.getId());
|
||||
baseUiConversation.mCore.setConversationTitle(StringUtil.isEmpty(remark) ? datum.getUserNiceName() : remark);
|
||||
|
||||
list.add(baseUiConversation);
|
||||
|
||||
UserInfo userInfo = new UserInfo(baseUiConversation.mCore.getTargetId(),
|
||||
baseUiConversation.mCore.getConversationTitle(),
|
||||
Uri.parse(baseUiConversation.mCore.getPortraitUrl()));
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
|
||||
}
|
||||
if (!list.isEmpty()) {
|
||||
List<BaseUiConversation> srcList = new ArrayList<>(mAdapter.getSrcList());
|
||||
srcList.addAll(list);
|
||||
Log.i(TAG, "onSuccess: 增加用户数:" + list.size() + "||总用户数:" + srcList.size());
|
||||
for (BaseUiConversation conversation : srcList) {
|
||||
Log.i(TAG, "onSuccess: 用户id:" + conversation.mCore.getTargetId() + "||用户名:" + conversation.mCore.getConversationTitle() + "||用户头像:" + conversation.mCore.getPortraitUrl());
|
||||
}
|
||||
int position = 0;
|
||||
try {
|
||||
position = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
mAdapter.setDataCollection(srcList);
|
||||
mAdapter.onFinish();
|
||||
recyclerView.scrollToPosition(position);
|
||||
}
|
||||
onRefreshFinished();
|
||||
onLoadMoreFinished();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
onLoadMoreFinished();
|
||||
onRefreshFinished();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void init() {
|
||||
LiveNetManager.get(getContext())
|
||||
.getRelation("1", new HttpCallback<List<String>>() {
|
||||
@Override
|
||||
public void onSuccess(List<String> data) {
|
||||
if (!data.isEmpty()) {
|
||||
getRongList(data);
|
||||
} else {
|
||||
onRefreshFinished();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
onRefreshFinished();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getRongList(List<String> uidList) {
|
||||
RongIMClient.getInstance().getConversationList(new RongIMClient.ResultCallback<List<Conversation>>() {
|
||||
@Override
|
||||
public void onSuccess(List<Conversation> conversations) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
needLoadInfo = new ArrayList<>(uidList);
|
||||
Log.i(TAG, "融云列表:" + conversations.size());
|
||||
for (Conversation conversation : conversations) {
|
||||
Log.i(TAG, "融云匹配:" + conversation.getTargetId());
|
||||
if (uidList.contains(conversation.getTargetId())) {
|
||||
BaseUiConversation _conversation = new SingleConversation(getContext(), conversation);
|
||||
list.add(_conversation);
|
||||
needLoadInfo.remove(conversation.getTargetId());
|
||||
}
|
||||
}
|
||||
Log.i(TAG, "成功匹配数:" + list.size());
|
||||
refreshLayout.setEnableLoadMore(!needLoadInfo.isEmpty());
|
||||
int position = 0;
|
||||
try {
|
||||
position = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
mAdapter.clear();
|
||||
mAdapter.setDataCollection(list);
|
||||
recyclerView.scrollToPosition(position);
|
||||
if (!needLoadInfo.isEmpty()) {
|
||||
checkList();
|
||||
} else {
|
||||
onRefreshFinished();
|
||||
mAdapter.onFinish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
Log.i(TAG, "onError: 匹配失败:" + e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,330 @@
|
||||
package com.yunbao.main.fragment;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.bean.MessageChatUserBean;
|
||||
import com.yunbao.common.http.base.HttpCallback;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.interfaces.OnRecyclerListRefreshListener;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.main.R;
|
||||
import com.yunbao.main.adapter.MainConversationListAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||
import io.rong.imkit.userinfo.RongUserInfoManager;
|
||||
import io.rong.imkit.utils.RouteUtils;
|
||||
import io.rong.imkit.widget.adapter.BaseAdapter;
|
||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
||||
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.api.RefreshLayout;
|
||||
import io.rong.imkit.widget.refresh.listener.OnLoadMoreListener;
|
||||
import io.rong.imkit.widget.refresh.listener.OnRefreshListener;
|
||||
import io.rong.imkit.widget.refresh.wrapper.RongRefreshHeader;
|
||||
import io.rong.imlib.RongIMClient;
|
||||
import io.rong.imlib.model.Conversation;
|
||||
import io.rong.imlib.model.Message;
|
||||
import io.rong.imlib.model.SearchConversationResult;
|
||||
import io.rong.imlib.model.UserInfo;
|
||||
|
||||
public class MainMessageChatListUserFragment extends AbsMainMessageChatListFragment {
|
||||
private static final String TAG = "系统列表";
|
||||
|
||||
private List<String> needLoadInfo = new ArrayList<>();
|
||||
|
||||
|
||||
public MainMessageChatListUserFragment() {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.rc_conversationlist_fragment, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
recyclerView = view.findViewById(R.id.rc_conversation_list);
|
||||
refreshLayout = view.findViewById(R.id.rc_refresh);
|
||||
refreshLayout.setNestedScrollingEnabled(false);
|
||||
refreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
|
||||
refreshLayout.setRefreshFooter(new RongRefreshHeader(this.getContext()));
|
||||
mAdapter = new MainConversationListAdapter(view.getContext());
|
||||
mAdapter.setEmptyView(com.yunbao.live.R.layout.view_layout_msg);
|
||||
mAdapter.setOnRefreshListener(new OnRecyclerListRefreshListener<List<BaseUiConversation>>() {
|
||||
@Override
|
||||
public void onFinish(List<BaseUiConversation> baseUiConversations) {
|
||||
loadLiveLookTime(baseUiConversations, new OnRecyclerListRefreshListener<Map<String, Integer>>() {
|
||||
@Override
|
||||
public void onFinish(Map<String, Integer> stringIntegerMap) {
|
||||
mAdapter.setTimerMap(stringIntegerMap);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
mAdapter.setItemClickListener(new BaseAdapter.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(View view, ViewHolder holder, int position) {
|
||||
BaseUiConversation conversation = mAdapter.getSrcList().get(position);
|
||||
RouteUtils.routeToConversationActivity(view.getContext(), Conversation.ConversationType.PRIVATE, conversation.mCore.getTargetId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(View view, ViewHolder holder, int position) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext(), LinearLayoutManager.VERTICAL, false));
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
initRefresh();
|
||||
init();
|
||||
}
|
||||
|
||||
private void initRefresh() {
|
||||
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
|
||||
@Override
|
||||
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
|
||||
checkList();
|
||||
}
|
||||
});
|
||||
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
||||
init();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void checkList() {
|
||||
if (needLoadInfo.size() < 20) {
|
||||
getUserInfo(needLoadInfo);
|
||||
refreshLayout.setEnableLoadMore(false);
|
||||
} else {
|
||||
List<String> tmp = needLoadInfo.subList(0, 20);
|
||||
needLoadInfo.subList(0, 20).clear();
|
||||
getUserInfo(tmp);
|
||||
refreshLayout.setEnableLoadMore(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChatList() {
|
||||
if(mAdapter==null) return;
|
||||
mAdapter.setChat();
|
||||
init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(String search) {
|
||||
mAdapter.setSearch();
|
||||
getContactsList(search);
|
||||
}
|
||||
private void getContactsList(String search) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
List<String> uidList=new ArrayList<>();
|
||||
|
||||
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_contacts));
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
list.add(conversation);
|
||||
|
||||
List<BaseUiConversation> data = new ArrayList<>();
|
||||
System.err.println(" ----------------------->" + mAdapter.getData().size());
|
||||
for (BaseUiConversation cn : ((MainConversationListAdapter) mAdapter).getSrcList()) {
|
||||
System.err.println(" ----------------------->" + cn.mCore.getConversationTitle() + "|" + cn.mCore.getSenderUserName());
|
||||
if (StringUtil.isEmpty(cn.mCore.getConversationTitle())) continue;
|
||||
if(uidList.contains(cn.mCore.getTargetId())) continue;
|
||||
uidList.add(cn.mCore.getTargetId());
|
||||
if (cn.mCore.getConversationTitle().contains(search)) {
|
||||
conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_USER" + search);
|
||||
conversation.mCore.setConversationTitle(cn.mCore.getConversationTitle());
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
conversation.mCore.setPortraitUrl(cn.mCore.getPortraitUrl());
|
||||
conversation.mCore.setTargetId(cn.mCore.getTargetId());
|
||||
conversation.mCore.setSenderUserId(cn.mCore.getSenderUserId());
|
||||
data.add(conversation);
|
||||
}
|
||||
}
|
||||
if (data.size() == 1) {
|
||||
data.get(0).mCore.setMentionedCount(3);
|
||||
} else if (data.size() != 0) {
|
||||
data.get(0).mCore.setMentionedCount(1);
|
||||
data.get(data.size() - 1).mCore.setMentionedCount(2);
|
||||
} else {
|
||||
list.remove(list.size() - 1);
|
||||
}
|
||||
list.addAll(data);
|
||||
getChatRecordList(list, search);
|
||||
}
|
||||
private void getChatRecordList(List<BaseUiConversation> list, String search) {
|
||||
Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE};
|
||||
String[] messageTypeObjectNames = {"RC:TxtMsg"};
|
||||
|
||||
RongIMClient.getInstance().searchConversations(search, conversationTypes, messageTypeObjectNames, new RongIMClient.ResultCallback<List<SearchConversationResult>>() {
|
||||
@Override
|
||||
public void onSuccess(List<SearchConversationResult> searchConversationResults) {
|
||||
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||
conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_chat_records));
|
||||
conversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
list.add(conversation);
|
||||
List<BaseUiConversation> data = new ArrayList<>();
|
||||
for (SearchConversationResult result : searchConversationResults) {
|
||||
BaseUiConversation cn = new SingleConversation(getContext(), result.getConversation());
|
||||
cn.mCore.setObjectName("SEARCH_CHAT" + search);
|
||||
data.add(cn);
|
||||
}
|
||||
if (data.size() == 1) {
|
||||
data.get(0).mCore.setMentionedCount(3);
|
||||
} else if (data.size() != 0) {
|
||||
data.get(0).mCore.setMentionedCount(1);
|
||||
data.get(data.size() - 1).mCore.setMentionedCount(2);
|
||||
} else {
|
||||
list.remove(list.size() - 1);
|
||||
}
|
||||
list.addAll(data);
|
||||
mAdapter.setDataCollection(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
ToastUtil.show("搜索出错了:" + e.getMessage());
|
||||
mAdapter.setDataCollection(list);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateList() {
|
||||
init();
|
||||
}
|
||||
|
||||
private void getUserInfo(List<String> uidList) {
|
||||
String uids = String.join(",", uidList);
|
||||
LiveNetManager.get(getContext())
|
||||
.getOtherList(uids, new HttpCallback<List<MessageChatUserBean>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MessageChatUserBean> data) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
for (MessageChatUserBean datum : data) {
|
||||
Conversation conversation = new Conversation();
|
||||
BaseUiConversation baseUiConversation = new SingleConversation(getContext(), conversation);
|
||||
baseUiConversation.mCore.setTargetId(datum.getId());
|
||||
baseUiConversation.mCore.setSenderUserId(IMLoginManager.get(getContext()).getUserInfo().getId() + "");
|
||||
baseUiConversation.mCore.setSentStatus(Message.SentStatus.CANCELED);
|
||||
baseUiConversation.mCore.setSentTime(-1);
|
||||
baseUiConversation.mCore.setConversationType(Conversation.ConversationType.PRIVATE);
|
||||
baseUiConversation.mCore.setPortraitUrl(datum.getAvatar());
|
||||
baseUiConversation.mCore.setConversationTitle(datum.getUserNiceName());
|
||||
list.add(baseUiConversation);
|
||||
UserInfo userInfo = new UserInfo(baseUiConversation.mCore.getTargetId(),
|
||||
baseUiConversation.mCore.getConversationTitle(),
|
||||
Uri.parse(baseUiConversation.mCore.getPortraitUrl()));
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
|
||||
}
|
||||
if (!list.isEmpty()) {
|
||||
List<BaseUiConversation> srcList = new ArrayList<>(mAdapter.getSrcList());
|
||||
srcList.addAll(list);
|
||||
Log.i(TAG, "onSuccess: 增加用户数:" + list.size() + "||总用户数:" + srcList.size());
|
||||
int position = 0;
|
||||
try {
|
||||
position = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
mAdapter.setDataCollection(srcList);
|
||||
mAdapter.onFinish();
|
||||
recyclerView.scrollToPosition(position);
|
||||
}
|
||||
onRefreshFinished();
|
||||
onLoadMoreFinished();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void init() {
|
||||
LiveNetManager.get(getContext())
|
||||
.getRelation("2", new HttpCallback<List<String>>() {
|
||||
@Override
|
||||
public void onSuccess(List<String> data) {
|
||||
if (!data.isEmpty()) {
|
||||
getRongList(data);
|
||||
} else {
|
||||
onRefreshFinished();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String error) {
|
||||
onRefreshFinished();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getRongList(List<String> uidList) {
|
||||
RongIMClient.getInstance().getConversationList(new RongIMClient.ResultCallback<List<Conversation>>() {
|
||||
@Override
|
||||
public void onSuccess(List<Conversation> conversations) {
|
||||
List<BaseUiConversation> list = new ArrayList<>();
|
||||
needLoadInfo = new ArrayList<>(uidList);
|
||||
Log.i(TAG, "融云列表:" + conversations.size());
|
||||
for (Conversation conversation : conversations) {
|
||||
Log.i(TAG, "融云匹配:" + conversation.getTargetId());
|
||||
if (uidList.contains(conversation.getTargetId())) {
|
||||
BaseUiConversation _conversation = new SingleConversation(getContext(), conversation);
|
||||
list.add(_conversation);
|
||||
needLoadInfo.remove(conversation.getTargetId());
|
||||
}
|
||||
}
|
||||
Log.i(TAG, "成功匹配数:" + list.size());
|
||||
refreshLayout.setEnableLoadMore(!needLoadInfo.isEmpty());
|
||||
int position = 0;
|
||||
try {
|
||||
position = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
mAdapter.clear();
|
||||
mAdapter.setDataCollection(list);
|
||||
recyclerView.scrollToPosition(position);
|
||||
if (!needLoadInfo.isEmpty()) {
|
||||
checkList();
|
||||
} else {
|
||||
onRefreshFinished();
|
||||
mAdapter.onFinish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(RongIMClient.ErrorCode e) {
|
||||
Log.i(TAG, "onError: 匹配失败:" + e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -42,7 +42,9 @@ import com.yunbao.main.utils.PDSightMessageItemProvider;
|
||||
import com.yunbao.main.views.MessageChatExtensionConfig;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import io.rong.imkit.IMCenter;
|
||||
import io.rong.imkit.RongIM;
|
||||
@ -71,6 +73,7 @@ public class ConversationIMListManager {
|
||||
private String targetId;
|
||||
private String topContent;
|
||||
private Handler conversationIMListHandler = new Handler();
|
||||
private Map<String, SearchUserBean> userCache = new HashMap<>();
|
||||
|
||||
private ConversationIMListManager(Context context) {
|
||||
mContext = context;
|
||||
@ -151,19 +154,51 @@ public class ConversationIMListManager {
|
||||
|
||||
}
|
||||
|
||||
public void clearUserCache() {
|
||||
userCache.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新用户信息(异步)
|
||||
*/
|
||||
public void addUserInfoProvider() {
|
||||
Log.i("刷新用户", "addUserInfoProvider: 准备刷新用户信息");
|
||||
RongUserInfoManager.getInstance().setUserInfoProvider(userId -> {
|
||||
Log.i("刷新用户", "1>" + userId);
|
||||
Log.i("刷新用户99", "1>" + userId);
|
||||
/*if (userCache.get(userId) != null) {
|
||||
return buildUser(userId, userCache.get(userId));
|
||||
}*/
|
||||
if (TextUtils.equals("__system__", userId)) {
|
||||
return null;
|
||||
}
|
||||
CommonHttpUtil.getUserBaseinfo(userId, new HttpCallback() {
|
||||
@Override
|
||||
public void onSuccess(int code, String msg, String[] info) {
|
||||
if (code == 0 && info.length > 0 && !TextUtils.equals("__system__", userId)) {
|
||||
JSONObject obj = JSON.parseObject(info[0]);
|
||||
SearchUserBean userBean = JSON.toJavaObject(obj, SearchUserBean.class);
|
||||
userCache.put(userId, userBean);
|
||||
UserInfo userInfo = buildUser(userId, userBean);
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
|
||||
if (userInfo != null && TextUtils.equals(userBean.getIs_admin(), "1")) {
|
||||
setConversationToTop(userInfo.getUserId());
|
||||
}
|
||||
} else {
|
||||
Log.i("刷新用户", "3>" + code + "|" + msg + "|" + info.length + "|" + userId);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return null;
|
||||
}, true);
|
||||
|
||||
}
|
||||
|
||||
private UserInfo buildUser(String userId, SearchUserBean userBean) {
|
||||
if (userBean == null) {
|
||||
return null;
|
||||
}
|
||||
Log.i("刷新用户2", "2>" + userBean.getId() + "|" + userId + "|" + userBean.getAvatar());
|
||||
String userNiceName = "";
|
||||
String remark = InstructorRemarkManager.get(mContext).getInstructorRemark().get(userId);
|
||||
@ -176,22 +211,9 @@ public class ConversationIMListManager {
|
||||
UserInfo userInfo = new UserInfo(userId, userNiceName, Uri.parse(userBean.getAvatar()));
|
||||
//使用空白字段存储自己服务器用户的所有的信息
|
||||
userInfo.setExtra(GsonUtils.toJson(userBean));
|
||||
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
|
||||
if (TextUtils.equals(userBean.getIs_admin(), "1")) {
|
||||
setConversationToTop(userInfo.getUserId());
|
||||
return userInfo;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
Log.i("刷新用户", "3>" + code + "|" + msg + "|" + info.length);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return null;
|
||||
}, true);
|
||||
|
||||
}
|
||||
|
||||
private String mUserId;
|
||||
|
@ -71,7 +71,7 @@ public class PDLiveCustomConversationProvider extends BaseConversationProvider {
|
||||
String cn = WordUtil.getChineseString(def);
|
||||
String en = WordUtil.getEnglishString(def);
|
||||
String content = uiConversation.mConversationContent.toString();
|
||||
Log.i("列表----", "bindViewHolder: " + str + " | " + uiConversation.mConversationContent+" | "+WordUtil.isNewZh());
|
||||
Log.i("列表----", "bindViewHolder: " + str + " | " + uiConversation.mConversationContent + " | " + WordUtil.isNewZh());
|
||||
if (WordUtil.isNewZh()) {
|
||||
if (en.equals(content)) {
|
||||
uiConversation.mConversationContent = new SpannableString(WordUtil.getNewString(def));
|
||||
@ -114,9 +114,13 @@ public class PDLiveCustomConversationProvider extends BaseConversationProvider {
|
||||
}
|
||||
|
||||
//设置时间
|
||||
if (uiConversation.mCore.getSentTime() > 0) {
|
||||
String date = new SimpleDateFormat("HH:mm", Locale.getDefault()).format(new Date(uiConversation.mCore.getSentTime()));
|
||||
date = DateFormatUtil.getDateTimeString(uiConversation.mCore.getSentTime(), true, holder.getContext());
|
||||
holder.setText(R.id.rc_conversation_date, date);
|
||||
} else {
|
||||
holder.getView(R.id.rc_conversation_date).setVisibility(View.GONE);
|
||||
}
|
||||
holder.getView(R.id.rc_conversation_portrait).setOnClickListener(view -> {
|
||||
RouteUtil.forwardUserHome(targetId);
|
||||
});
|
||||
|
@ -320,9 +320,7 @@ public class MainMeViewHolder extends AbsMainViewHolder implements OnItemClickLi
|
||||
}
|
||||
String singnature = u.getSignature();
|
||||
if (TextUtils.equals(singnature, "這個人很懶,什麼也沒留下") || TextUtils.equals(singnature, "这家伙很懒,什么都没留下") || TextUtils.isEmpty(singnature)) {
|
||||
String ct = Locale.getDefault().getCountry();
|
||||
ct = TextUtils.equals("CN", ct) ? "HK" : ct;
|
||||
if (TextUtils.equals(ct, "CN")) {
|
||||
if (WordUtil.isNewZh()) {
|
||||
singnature = "這個人很懶,什麼也沒留下";
|
||||
} else {
|
||||
singnature = "The guy was lazy and didn't write anything.";
|
||||
|
@ -1,24 +1,30 @@
|
||||
package com.yunbao.main.views;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Handler;
|
||||
import android.text.Editable;
|
||||
import android.text.InputFilter;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.binioter.guideview.Guide;
|
||||
@ -29,6 +35,11 @@ import com.opensource.svgaplayer.SVGADrawable;
|
||||
import com.opensource.svgaplayer.SVGAImageView;
|
||||
import com.opensource.svgaplayer.SVGAParser;
|
||||
import com.opensource.svgaplayer.SVGAVideoEntity;
|
||||
import com.yunbao.common.CommonAppConfig;
|
||||
import com.yunbao.common.dialog.DebugDialog;
|
||||
import com.yunbao.common.manager.base.ACache;
|
||||
import com.yunbao.common.utils.DateFormatUtil;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.MobclickAgent;
|
||||
import com.yunbao.common.bean.ImUserInfoModel;
|
||||
import com.yunbao.common.bean.LiveBean;
|
||||
@ -37,7 +48,6 @@ import com.yunbao.common.http.HttpCallback;
|
||||
import com.yunbao.common.http.LiveHttpUtil;
|
||||
import com.yunbao.common.http.live.LiveNetManager;
|
||||
import com.yunbao.common.manager.IMLoginManager;
|
||||
import com.yunbao.common.manager.NoviceInstructorManager;
|
||||
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
||||
import com.yunbao.common.utils.AppManager;
|
||||
import com.yunbao.common.utils.DeviceUtils;
|
||||
@ -46,6 +56,7 @@ import com.yunbao.common.utils.RouteUtil;
|
||||
import com.yunbao.common.utils.SVGAViewUtils;
|
||||
import com.yunbao.common.utils.StringUtil;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.ViewPageIndicatorUtils;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.common.views.AbsMainViewHolder;
|
||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||
@ -57,15 +68,28 @@ import com.yunbao.main.R;
|
||||
import com.yunbao.main.activity.MainActivity;
|
||||
import com.yunbao.main.adapter.SystemMessageAdapter;
|
||||
import com.yunbao.main.dialog.MsgMoreDialog;
|
||||
import com.yunbao.main.fragment.MainMessageChatFragment;
|
||||
import com.yunbao.main.fragment.AbsMainMessageChatListFragment;
|
||||
import com.yunbao.main.fragment.MainMessageChatListFragment;
|
||||
import com.yunbao.main.fragment.MainMessageChatListSystemFragment;
|
||||
import com.yunbao.main.fragment.MainMessageChatListUserFragment;
|
||||
import com.yunbao.main.manager.imrongcloud.ConversationIMListManager;
|
||||
|
||||
import net.lucode.hackware.magicindicator.MagicIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@ -74,8 +98,7 @@ import java.util.List;
|
||||
*/
|
||||
public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
|
||||
private MainMessageChatFragment conversationListFragment;
|
||||
private FrameLayout container;
|
||||
private static final String TAG = "消息中心";
|
||||
private SystemMessageAdapter messageAdapter;
|
||||
private TextView textNewsNotice, textNewsInteraction, textNewsOnline, textSystemMessages;
|
||||
private String type = null;
|
||||
@ -90,6 +113,10 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
XPopup.Builder moreXPopup;
|
||||
private String homeZdyPop;
|
||||
|
||||
private ViewPager2 viewPager;
|
||||
private MagicIndicator mIndicator;
|
||||
private List<AbsMainMessageChatListFragment> fragmentList;
|
||||
|
||||
public MainMessageViewHolder setHomeZdyPop(String homeZdyPop) {
|
||||
this.homeZdyPop = homeZdyPop;
|
||||
if (TextUtils.equals(homeZdyPop, "1")) {
|
||||
@ -121,7 +148,6 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
public void init() {
|
||||
EventBus.getDefault().register(this);
|
||||
//菜单
|
||||
container = (FrameLayout) findViewById(R.id.container);
|
||||
textNewsNotice = (TextView) findViewById(R.id.text_news_notice);
|
||||
textNewsInteraction = (TextView) findViewById(R.id.text_news_interaction);
|
||||
textNewsOnline = (TextView) findViewById(R.id.text_news_online);
|
||||
@ -132,6 +158,8 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
imgNewsInteraction = (ImageView) findViewById(R.id.img_news_interaction);
|
||||
imgSystemMessages = (ImageView) findViewById(R.id.img_system_messages);
|
||||
imgNewsOnline = (ImageView) findViewById(R.id.img_news_online);
|
||||
mIndicator = (MagicIndicator) findViewById(R.id.indicator);
|
||||
viewPager = findViewById(R.id.viewPager);
|
||||
contacts = findViewById(R.id.news_icon_contacts);
|
||||
more = findViewById(R.id.news_icon_more);
|
||||
search = findViewById(R.id.search);
|
||||
@ -141,6 +169,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
// mContext.startActivity(new Intent(mContext, com.yunbao.main.activity.CompleteUserInfoActivity.class));
|
||||
// mContext.startActivity(new Intent(mContext, MessageHiConfigRecordActivity.class));
|
||||
});
|
||||
search.setOnKeyListener(new View.OnKeyListener() {
|
||||
@Override
|
||||
public boolean onKey(View view, int i, KeyEvent keyEvent) {
|
||||
return i == KeyEvent.KEYCODE_ENTER || i == KeyEvent.KEYCODE_NUMPAD_ENTER;
|
||||
}
|
||||
});
|
||||
search.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||
@ -153,11 +187,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable editable) {
|
||||
if (conversationListFragment == null) return;
|
||||
if (fragmentList.isEmpty()) return;
|
||||
if (fragmentList.get(viewPager.getCurrentItem()) == null) return;
|
||||
if (StringUtil.isEmpty(editable.toString())) {
|
||||
conversationListFragment.onChatList();
|
||||
fragmentList.get(viewPager.getCurrentItem()).onChatList();
|
||||
} else {
|
||||
conversationListFragment.search(editable.toString());
|
||||
fragmentList.get(viewPager.getCurrentItem()).search(editable.toString());
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -166,6 +201,91 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
more.setOnClickListener(view -> {
|
||||
moreXPopup.asCustom(new MsgMoreDialog(mContext)).show();
|
||||
});
|
||||
initFragment();
|
||||
initIndicator();
|
||||
}
|
||||
|
||||
private void initFragment() {
|
||||
fragmentList = new ArrayList<>();
|
||||
fragmentList.add(new MainMessageChatListFragment());
|
||||
fragmentList.add(new MainMessageChatListSystemFragment());
|
||||
fragmentList.add(new MainMessageChatListUserFragment());
|
||||
|
||||
ToastUtil.showDebug("列表数量x" + fragmentList.size());
|
||||
viewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) AppManager.getInstance().getMainActivity()) {
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
Log.i(TAG, "viewpage 列表 getItemCount: " + fragmentList.size());
|
||||
return fragmentList.size();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment createFragment(int i) {
|
||||
Log.i(TAG, "createFragment: 创建fragment :" + i + " | " + fragmentList.get(i));
|
||||
return fragmentList.get(i);
|
||||
}
|
||||
});
|
||||
viewPager.setCurrentItem(0);
|
||||
viewPager.setUserInputEnabled(false);
|
||||
ConversationIMListManager.get(mContext).addUserInfoProvider();
|
||||
}
|
||||
|
||||
private void initIndicator() {
|
||||
final String[] titles = new String[]{
|
||||
WordUtil.getNewString(R.string.message_chat_msg_all),
|
||||
WordUtil.getNewString(R.string.message_chat_msg_system),
|
||||
WordUtil.getNewString(R.string.message_chat_msg_user)
|
||||
};
|
||||
CommonNavigator commonNavigator = new CommonNavigator(AppManager.getInstance().getMainActivity());
|
||||
commonNavigator.setAdjustMode(true);
|
||||
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return titles.length;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public IPagerTitleView getTitleView(Context context, final int index) {
|
||||
SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);
|
||||
simplePagerTitleView.setNormalColor(Color.parseColor("#777777"));
|
||||
simplePagerTitleView.setSelectedColor(Color.parseColor("#333333"));
|
||||
simplePagerTitleView.setText(titles[index]);
|
||||
simplePagerTitleView.setTextSize(18);
|
||||
simplePagerTitleView.getPaint().setFakeBoldText(true);
|
||||
simplePagerTitleView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (viewPager != null) {
|
||||
viewPager.setCurrentItem(index);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
return simplePagerTitleView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerIndicator getIndicator(Context context) {
|
||||
LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context);
|
||||
linePagerIndicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
|
||||
linePagerIndicator.setXOffset(DpUtil.dp2px(5));
|
||||
linePagerIndicator.setRoundRadius(DpUtil.dp2px(2));
|
||||
linePagerIndicator.setColors(Color.parseColor("#EB6FFF"), Color.parseColor("#FF83C6"));
|
||||
return linePagerIndicator;
|
||||
}
|
||||
});
|
||||
mIndicator.setNavigator(commonNavigator);
|
||||
ViewPageIndicatorUtils.bind(mIndicator, viewPager, new ViewPager2.OnPageChangeCallback() {
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
super.onPageSelected(position);
|
||||
search.setText("");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -227,32 +347,11 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
*/
|
||||
private void initData() {
|
||||
IMLoginManager.get(mContext).checkInstructor();
|
||||
container.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
netHandler.post(imUserInfoRunnable);
|
||||
if (IMLoginManager.get(mContext).hintChat()&&false) {
|
||||
container.setVisibility(View.GONE);
|
||||
ltNodataMsg.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
container.setVisibility(View.VISIBLE);
|
||||
ltNodataMsg.setVisibility(View.GONE);
|
||||
//展示会话列表
|
||||
conversationListFragment = new MainMessageChatFragment();
|
||||
FragmentManager manager = ((FragmentActivity) mContext).getSupportFragmentManager();
|
||||
FragmentTransaction transaction = manager.beginTransaction();
|
||||
transaction.replace(R.id.container, conversationListFragment);
|
||||
transaction.commit();
|
||||
//自定义空数据背景View
|
||||
//conversationListFragment.setEmptyView(emptyView);
|
||||
conversationListFragment.setEmptyView(R.layout.view_layout_msg);
|
||||
//刷新列表内用户信息
|
||||
ConversationIMListManager.get(mContext).addUserInfoProvider();
|
||||
}
|
||||
Log.i(TAG, "initData: 初始化数据");
|
||||
//获取一下系统通知
|
||||
MessageIMManager.get(mContext).getSystemMessages();
|
||||
}
|
||||
});
|
||||
LiveNetManager.get(mContext)
|
||||
.getIsAnchor(new com.yunbao.common.http.base.HttpCallback<MessageChatIsAnchor>() {
|
||||
@Override
|
||||
@ -262,7 +361,11 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||
});
|
||||
if (data.getIsAnchor() == 1) {
|
||||
more.setVisibility(View.VISIBLE);
|
||||
viewPager.setUserInputEnabled(true);
|
||||
mIndicator.setVisibility(View.VISIBLE);
|
||||
}
|
||||
IMLoginManager.get(mContext)
|
||||
.setAnchorB(data.getIsAnchor());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -143,7 +143,6 @@
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="94dp"
|
||||
@ -289,26 +288,45 @@
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="#FFE9F6" />
|
||||
<!-- 此容器用于动态放置 fragment-->
|
||||
<FrameLayout
|
||||
android:id="@+id/container"
|
||||
|
||||
<net.lucode.hackware.magicindicator.MagicIndicator
|
||||
android:id="@+id/indicator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="37dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/line" />
|
||||
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/viewPager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="50dp" />
|
||||
android:layout_marginBottom="50dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:overScrollMode="never"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/indicator" />
|
||||
<!-- 此容器用于动态放置 fragment-->
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lt_nodata_msg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:gravity="center"
|
||||
android:visibility="visible">
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -6,26 +6,48 @@
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/relativeLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:paddingTop="24dp"
|
||||
android:layout_marginTop="30dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="true"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toStartOf="@+id/img_more"
|
||||
app:layout_constraintStart_toEndOf="@+id/btn_back"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/titleView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginStart="20dp"
|
||||
android:clipChildren="true"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxWidth="245dp"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/textColor"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold"
|
||||
tools:text="123" />
|
||||
tools:text="ID001,主播小丽,用户A先生,28岁,北京,软件工程师,2023-10-23" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn_fold"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="40dp"
|
||||
android:onClick="backClick"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/ic_fold" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn_back"
|
||||
@ -33,17 +55,10 @@
|
||||
android:layout_height="40dp"
|
||||
android:onClick="backClick"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/ic_back" />
|
||||
android:src="@mipmap/ic_back"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn_fold"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginEnd="331dp"
|
||||
android:layout_toEndOf="@+id/titleView"
|
||||
android:onClick="backClick"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/ic_fold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_more"
|
||||
@ -53,8 +68,11 @@
|
||||
android:padding="9dp"
|
||||
android:scaleType="center"
|
||||
android:src="@mipmap/btn_more_black"
|
||||
android:visibility="visible" />
|
||||
</RelativeLayout>
|
||||
android:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/userCard"
|
||||
@ -106,26 +124,35 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/rc_conversation_portrait" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
<com.yunbao.common.views.CustomLayout
|
||||
android:id="@+id/userNameLayout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="-24dp"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginTop="60dp"
|
||||
android:gravity="center_vertical"
|
||||
app:layout_constraintEnd_toStartOf="@+id/constraintLayout6"
|
||||
app:layout_constraintStart_toStartOf="@+id/imageView"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.yunbao.common.views.AutoSplitTextView
|
||||
android:id="@+id/userName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginTop="60dp"
|
||||
android:text="TextView"
|
||||
android:maxWidth="228dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:textColor="#333333"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/imageView"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:textSize="15sp"
|
||||
tools:text="1234567890123456789012345" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/userName"
|
||||
app:layout_constraintStart_toEndOf="@+id/userName"
|
||||
app:layout_constraintTop_toTopOf="@+id/userName">
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_status"
|
||||
@ -145,6 +172,8 @@
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</com.yunbao.common.views.CustomLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/info"
|
||||
@ -154,8 +183,8 @@
|
||||
android:text="@string/activity_msg_chat_top_tip1"
|
||||
android:textColor="#777777"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintStart_toStartOf="@+id/userName"
|
||||
app:layout_constraintTop_toBottomOf="@+id/userName" />
|
||||
app:layout_constraintStart_toStartOf="@+id/userNameLayout"
|
||||
app:layout_constraintTop_toBottomOf="@+id/userNameLayout" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
@ -170,15 +199,18 @@
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginStart="4dp"
|
||||
app:srcCompat="@mipmap/bg_msg_chat_title_gift" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/user_auth_status"
|
||||
android:layout_width="84dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:scaleType="fitStart"
|
||||
app:srcCompat="@mipmap/ic_chat_auth"
|
||||
tools:layout_editor_absoluteX="124dp"
|
||||
tools:layout_editor_absoluteY="17dp" />
|
||||
tools:layout_editor_absoluteY="17dp"
|
||||
tools:layout_height="20dp"
|
||||
tools:layout_width="84dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@ -187,9 +219,9 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:maxLines="2"
|
||||
android:text="个性签名给性签名个性签名给性签名个性签名给性签名"
|
||||
android:textColor="#333333"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/constraintLayout6"
|
||||
app:layout_constraintStart_toStartOf="@+id/info"
|
||||
|
Loading…
Reference in New Issue
Block a user