6.6.9版本
This commit is contained in:
parent
4513d8495f
commit
403b4c2aa3
@ -154,6 +154,9 @@
|
|||||||
<meta-data
|
<meta-data
|
||||||
android:name="IS_PLUGIN_MODEL"
|
android:name="IS_PLUGIN_MODEL"
|
||||||
android:value="${isPluginModel}" />
|
android:value="${isPluginModel}" />
|
||||||
|
<meta-data
|
||||||
|
android:name="BUILD_TIME"
|
||||||
|
android:value="${buildTime}" />
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="firebase_crashlytics_collection_enabled"
|
android:name="firebase_crashlytics_collection_enabled"
|
||||||
android:value="${isUploadLog}" />
|
android:value="${isUploadLog}" />
|
||||||
|
@ -184,6 +184,9 @@ public class AppContext extends CommonAppContext {
|
|||||||
@Override
|
@Override
|
||||||
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
|
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
|
||||||
activities.add(new WeakReference<>(activity));
|
activities.add(new WeakReference<>(activity));
|
||||||
|
if(activity instanceof LoginActivity){
|
||||||
|
AppManager.getInstance().clear();
|
||||||
|
}
|
||||||
CrashSaveBean.getInstance().setActivitySize(activities);
|
CrashSaveBean.getInstance().setActivitySize(activities);
|
||||||
AppManager.getInstance().addActivity(activity);
|
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.
|
# This is a configuration file for ProGuard.
|
||||||
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
# 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.
|
# These classes are duplicated between android.jar and core-lambda-stubs.jar.
|
||||||
-dontnote java.lang.invoke.**
|
-dontnote java.lang.invoke.**
|
||||||
|
|
||||||
# End of content from E:\pdlsy\pandorapan\app\build\intermediates\default_proguard_files\global\proguard-android.txt-8.3.1
|
# 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 E:\pdlsy\pandorapan\app\proguard-rules.pro
|
# 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.
|
# Add project specific ProGuard rules here.
|
||||||
# By default, the flags in this file are appended to flags specified
|
# By default, the flags in this file are appended to flags specified
|
||||||
# in /Users/macpro/Library/Android/sdk/tools/proguard/proguard-android.txt
|
# 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.settings.model.** {*;}
|
||||||
-keep class tech.sud.mgp.hello.ui.main.nft.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.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.** {*;}
|
-keep class com.yunbao.common.sud.** {*;}
|
||||||
|
|
||||||
@ -399,8 +411,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
-keep class com.qiniu.**{public <init>();}
|
-keep class com.qiniu.**{public <init>();}
|
||||||
-ignorewarnings
|
-ignorewarnings
|
||||||
|
|
||||||
# End of content from E:\pdlsy\pandorapan\app\proguard-rules.pro
|
# End of content from C:\Users\58381\Documents\AndroidProject\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
|
# 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.app.CoreComponentFactory { <init>(); }
|
||||||
-keep class androidx.core.content.FileProvider { <init>(); }
|
-keep class androidx.core.content.FileProvider { <init>(); }
|
||||||
-keep class androidx.core.content.FileProvider4Utils { <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.EditUserHobbyActivity { <init>(); }
|
||||||
-keep class com.yunbao.main.activity.EntryActivity { <init>(); }
|
-keep class com.yunbao.main.activity.EntryActivity { <init>(); }
|
||||||
-keep class com.yunbao.main.activity.FansActivity { <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.FindPwdActivity { <init>(); }
|
||||||
-keep class com.yunbao.main.activity.FollowActivity { <init>(); }
|
-keep class com.yunbao.main.activity.FollowActivity { <init>(); }
|
||||||
-keep class com.yunbao.main.activity.LanguageSettingActivity { <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.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.FlowLayout { <init>(android.content.Context, android.util.AttributeSet); }
|
||||||
|
|
||||||
-keep class com.yunbao.common.views.MyFrameLayout2 { <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); }
|
-keepclassmembers class * { *** videoEditClick(android.view.View); }
|
||||||
|
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Generated keep rule for Lifecycle observer adapter.
|
||||||
-if class com.lxj.xpopup.core.BasePopupView {
|
-if class com.lxj.xpopup.core.BasePopupView {
|
||||||
<init>(...);
|
<init>(...);
|
||||||
@ -1074,8 +1091,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<init>(...);
|
<init>(...);
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from F:\AS\gradle\caches\transforms-3\8d3e3177c15403546de73d87508067d6\transformed\jetified-XPopup-2.10.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 F:\AS\gradle\caches\transforms-3\a1df9a6aa192455030f7c9970b70e0e9\transformed\material-1.4.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
|
# Copyright (C) 2015 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# 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
|
# 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 E:\pdlsy\pandorapan\lib_google\build\intermediates\consumer_proguard_dir\release\exportReleaseConsumerProguardFiles\lib0\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
|
# 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 F:\AS\gradle\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\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\proguard.txt
|
||||||
-keepattributes *Annotation*
|
-keepattributes *Annotation*
|
||||||
|
|
||||||
|
|
||||||
# End of content from F:\AS\gradle\caches\transforms-3\2929985d9627ba3bb45a0ebd18eaf9d3\transformed\jetified-linesdk-5.0.1\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 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 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 enable ProGuard in your project, edit project.properties
|
||||||
# to define the proguard.config property as described in that file.
|
# 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);
|
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
|
# 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 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 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1214,8 +1231,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.facebook.gamingservices.GamingServices
|
-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
|
# 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 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 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1256,8 +1273,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.facebook.share.Share
|
-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
|
# 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 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 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1298,8 +1315,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.facebook.login.Login
|
-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
|
# 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 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 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1340,12 +1357,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.facebook.common.Common
|
-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
|
# 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 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 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.** { *; }
|
-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
|
# 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 F:\AS\gradle\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\0fdcb88552259c6c22dbd3bb46b31518\transformed\appcompat-1.3.1\proguard.txt
|
||||||
# Copyright (C) 2018 The Android Open Source Project
|
# Copyright (C) 2018 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -1369,13 +1386,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<methods>;
|
<methods>;
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
#Picasso Proguard Config https://github.com/square/picasso
|
||||||
-dontwarn com.squareup.okhttp.**
|
-dontwarn com.squareup.okhttp.**
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2016 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -1402,13 +1419,13 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
RuntimeVisibleParameterAnnotations,
|
RuntimeVisibleParameterAnnotations,
|
||||||
RuntimeVisibleTypeAnnotations
|
RuntimeVisibleTypeAnnotations
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 {
|
-keepclasseswithmembers class androidx.recyclerview.widget.RecyclerView$ViewHolder {
|
||||||
public final android.view.View *;
|
public final android.view.View *;
|
||||||
}
|
}
|
||||||
# End of content from 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\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
|
# 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.
|
# Proguard rules specific to the UI module.
|
||||||
|
|
||||||
# Constructor method accessed via reflection in StyledPlayerView
|
# Constructor method accessed via reflection in StyledPlayerView
|
||||||
@ -1449,8 +1466,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
-dontwarn kotlin.annotations.jvm.**
|
-dontwarn kotlin.annotations.jvm.**
|
||||||
-dontwarn javax.annotation.**
|
-dontwarn javax.annotation.**
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2015 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# 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 void suppressLayout(boolean);
|
||||||
public boolean isLayoutSuppressed();
|
public boolean isLayoutSuppressed();
|
||||||
}
|
}
|
||||||
# End of content from 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\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
|
# 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.
|
# Add project specific ProGuard rules here.
|
||||||
# By default, the flags in this file are appended to flags specified
|
# By default, the flags in this file are appended to flags specified
|
||||||
# in G:\Android_IDE\ADT\sdk/tools/proguard/proguard-android.txt
|
# 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 *
|
-keep @com.blankj.utilcode.util.ApiUtils$Api class *
|
||||||
|
|
||||||
-keepattributes *Annotation*
|
-keepattributes *Annotation*
|
||||||
# End of content from 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\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
|
# 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1548,8 +1565,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.facebook.applinks.AppLinks
|
-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
|
# 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 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 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1594,8 +1611,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-keep class com.facebook.messenger.Messenger
|
-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
|
# 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 F:\AS\gradle\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\d709769056a5279a71bbb18b41ee69d2\transformed\jetified-ui-1.0.0\proguard.txt
|
||||||
# Copyright (C) 2020 The Android Open Source Project
|
# Copyright (C) 2020 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# 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);
|
android.view.View findViewByAccessibilityIdTraversal(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 {
|
-assumenosideeffects public class androidx.compose.runtime.ComposerKt {
|
||||||
void sourceInformation(androidx.compose.runtime.Composer,java.lang.String);
|
void sourceInformation(androidx.compose.runtime.Composer,java.lang.String);
|
||||||
void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String);
|
void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String);
|
||||||
void sourceInformationMarkerEnd(androidx.compose.runtime.Composer);
|
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
|
# 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 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 C:\gradle-6.1.1\caches\transforms-3\7931210372c8927a076053831aae79b7\transformed\jetified-glide-transformations-3.1.1\proguard.txt
|
||||||
-dontwarn jp.co.cyberagent.android.gpuimage.**
|
-dontwarn jp.co.cyberagent.android.gpuimage.**
|
||||||
|
|
||||||
-keep public class * implements com.bumptech.glide.module.GlideModule
|
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||||||
@ -1643,8 +1660,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
public *;
|
public *;
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 public class * implements com.bumptech.glide.module.GlideModule
|
||||||
-keep class * extends com.bumptech.glide.module.AppGlideModule {
|
-keep class * extends com.bumptech.glide.module.AppGlideModule {
|
||||||
<init>(...);
|
<init>(...);
|
||||||
@ -1660,8 +1677,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
# Uncomment for DexGuard only
|
# Uncomment for DexGuard only
|
||||||
#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
|
#-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
|
# 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 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 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.
|
# b/35135904 Ensure that proguard will not strip the mResultGuardian.
|
||||||
-keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult {
|
-keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult {
|
||||||
com.google.android.gms.common.api.internal.BasePendingResult$ReleasableResultGuardian mResultGuardian;
|
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
|
# 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 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 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.firebase.platforminfo.KotlinDetector
|
||||||
-dontwarn com.google.auto.value.AutoValue
|
-dontwarn com.google.auto.value.AutoValue
|
||||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
-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
|
# 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 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 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
|
# 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 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 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.
|
# Needed when building against pre-Marshmallow SDK.
|
||||||
-dontwarn android.security.NetworkSecurityPolicy
|
-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
|
# 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 F:\AS\gradle\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\8daf89c63ab14ea80f11dcfb9154f87e\transformed\fragment-1.5.0\proguard.txt
|
||||||
# Copyright (C) 2020 The Android Open Source Project
|
# Copyright (C) 2020 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -1775,12 +1792,12 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
public <init>();
|
public <init>();
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# 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 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 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -1838,8 +1855,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
public <methods>;
|
public <methods>;
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 {
|
-keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel {
|
||||||
<init>();
|
<init>();
|
||||||
}
|
}
|
||||||
@ -1848,8 +1865,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<init>(android.app.Application);
|
<init>(android.app.Application);
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 {
|
-keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel {
|
||||||
<init>(androidx.lifecycle.SavedStateHandle);
|
<init>(androidx.lifecycle.SavedStateHandle);
|
||||||
}
|
}
|
||||||
@ -1858,8 +1875,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<init>(android.app.Application,androidx.lifecycle.SavedStateHandle);
|
<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
|
# 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 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 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:
|
# When editing this file, update the following files as well:
|
||||||
# - META-INF/proguard/coroutines.pro
|
# - META-INF/proguard/coroutines.pro
|
||||||
# - META-INF/com.android.tools/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.
|
# An annotation used for build tooling, won't be directly accessed.
|
||||||
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
-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
|
# 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 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 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.
|
# Allow R8 to optimize away the FastServiceLoader.
|
||||||
# Together with ServiceLoader optimization in R8
|
# Together with ServiceLoader optimization in R8
|
||||||
# this results in direct instantiation when loading Dispatchers.Main
|
# this results in direct instantiation when loading Dispatchers.Main
|
||||||
@ -1913,8 +1930,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
boolean getDEBUG() return false;
|
boolean getDEBUG() return false;
|
||||||
boolean getRECOVER_STACK_TRACES() 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
|
# 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 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 C:\gradle-6.1.1\caches\transforms-3\33f970d366250728877e2f4671336331\transformed\jetified-twitter-core-3.1.1\proguard.txt
|
||||||
#GSON
|
#GSON
|
||||||
# Retain Annotations for model objects
|
# Retain Annotations for model objects
|
||||||
-keepattributes *Annotation*
|
-keepattributes *Annotation*
|
||||||
@ -1938,8 +1955,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
-keepclasseswithmembers class * {
|
-keepclasseswithmembers class * {
|
||||||
@retrofit2.http.* <methods>;
|
@retrofit2.http.* <methods>;
|
||||||
}
|
}
|
||||||
# End of content from 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\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
|
# 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.
|
# JSR 305 annotations are for embedding nullability information.
|
||||||
-dontwarn javax.annotation.**
|
-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.
|
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
|
||||||
-dontwarn okhttp3.internal.platform.ConscryptPlatform
|
-dontwarn okhttp3.internal.platform.ConscryptPlatform
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
|
||||||
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
-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
|
# 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 F:\AS\gradle\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\acd3bab55cb4f819050ef57ea2e25987\transformed\jetified-beautysdk-202202241203\proguard.txt
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 {
|
-keep class cn.rongcloud.xcrash.NativeHandler {
|
||||||
native <methods>;
|
native <methods>;
|
||||||
void crashCallback(...);
|
void crashCallback(...);
|
||||||
@ -1969,22 +1986,22 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
void traceCallbackBeforeDump(...);
|
void traceCallbackBeforeDump(...);
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Proguard configuration.
|
||||||
-dontwarn com.squareup.okhttp.**
|
-dontwarn com.squareup.okhttp.**
|
||||||
|
|
||||||
# References to Picasso are okay if the consuming app doesn't use it
|
# References to Picasso are okay if the consuming app doesn't use it
|
||||||
-dontwarn com.squareup.picasso.Transformation
|
-dontwarn com.squareup.picasso.Transformation
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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);}
|
-keep public class pl.droidsonroids.gif.GifIOException{<init>(int, java.lang.String);}
|
||||||
#Prevents warnings for consumers not using AndroidX
|
#Prevents warnings for consumers not using AndroidX
|
||||||
-dontwarn androidx.annotation.**
|
-dontwarn androidx.annotation.**
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
#https://github.com/leolin310148/ShortcutBadger/issues/46
|
||||||
-keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { <init>(...); }
|
-keep class me.leolin.shortcutbadger.impl.AdwHomeBadger { <init>(...); }
|
||||||
-keep class me.leolin.shortcutbadger.impl.ApexHomeBadger { <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.SolidHomeBadger { <init>(...); }
|
||||||
-keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { <init>(...); }
|
-keep class me.leolin.shortcutbadger.impl.SonyHomeBadger { <init>(...); }
|
||||||
-keep class me.leolin.shortcutbadger.impl.XiaomiHomeBadger { <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
|
# 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 F:\AS\gradle\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\bf0366dad8fd25b42dec7a0b29d3ed94\transformed\jetified-EasyFloat-2.0.4\proguard.txt
|
||||||
# Add project specific ProGuard rules here.
|
# Add project specific ProGuard rules here.
|
||||||
# You can control the filterSet of applied configuration files using the
|
# You can control the filterSet of applied configuration files using the
|
||||||
# proguardFiles setting in build.gradle.
|
# proguardFiles setting in build.gradle.
|
||||||
@ -2034,8 +2051,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
# 保持反射不被混淆
|
# 保持反射不被混淆
|
||||||
-keepattributes EnclosingMethod
|
-keepattributes EnclosingMethod
|
||||||
# End of content from 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\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
|
# 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.
|
# Add project specific ProGuard rules here.
|
||||||
# You can control the set of applied configuration files using the
|
# You can control the set of applied configuration files using the
|
||||||
# proguardFiles setting in build.gradle.
|
# 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
|
# If you keep the line number information, uncomment this to
|
||||||
# hide the original source file name.
|
# hide the original source file name.
|
||||||
#-renamesourcefileattribute SourceFile
|
#-renamesourcefileattribute SourceFile
|
||||||
# End of content from 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\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
|
# 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
|
# 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 F:\AS\gradle\caches\transforms-3\3dd60f4554da3e797ddfca5958de5029\transformed\jetified-uyumao-1.1.2\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
|
||||||
|
|
||||||
# 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
|
|
||||||
-keep class com.cocos.game.**{ *; }
|
-keep class com.cocos.game.**{ *; }
|
||||||
-keep class tech.sud.runtime.**{ *; }
|
-keep class tech.sud.runtime.**{ *; }
|
||||||
-keep class tech.sud.mgp.core.**{ *; }
|
-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
|
# 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 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 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 com.microsoft.cognitiveservices.** { *; }
|
||||||
-keep class tech.sud.mgp.asr.azure.** { *; }
|
-keep class tech.sud.mgp.asr.azure.** { *; }
|
||||||
|
|
||||||
@ -2233,8 +2247,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
*** *Callback(long);
|
*** *Callback(long);
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Add project specific ProGuard rules here.
|
||||||
# You can control the set of applied configuration files using the
|
# You can control the set of applied configuration files using the
|
||||||
# proguardFiles setting in build.gradle.
|
# 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 {*;}
|
||||||
-keep class com.faceunity.wrapper.faceunity$RotatedImage {*;}
|
-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
|
# 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 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 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.
|
# Proguard rules specific to the core module.
|
||||||
|
|
||||||
# Constructors accessed via reflection in DefaultRenderersFactory
|
# Constructors accessed via reflection in DefaultRenderersFactory
|
||||||
@ -2319,8 +2333,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<init>();
|
<init>();
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2019 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -2339,8 +2353,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<init>();
|
<init>();
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2017 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# 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;
|
androidx.transition.ChangeBounds$ViewBounds mViewBounds;
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2016 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -2382,8 +2396,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
*** get*();
|
*** get*();
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@ -2419,8 +2433,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
java.lang.Object readResolve();
|
java.lang.Object readResolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2017 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# 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 {
|
-keep class androidx.media.** implements android.os.Parcelable {
|
||||||
public static final android.os.Parcelable$Creator *;
|
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
|
# 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 F:\AS\gradle\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\4bf1220f49ce7953fbb445d1fb03d04a\transformed\core-1.8.0\proguard.txt
|
||||||
# Never inline methods, but allow shrinking and obfuscation.
|
# Never inline methods, but allow shrinking and obfuscation.
|
||||||
-keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.ViewCompat$Api* {
|
-keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.ViewCompat$Api* {
|
||||||
<methods>;
|
<methods>;
|
||||||
@ -2463,8 +2477,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
<methods>;
|
<methods>;
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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,
|
-keepattributes AnnotationDefault,
|
||||||
RuntimeVisibleAnnotations,
|
RuntimeVisibleAnnotations,
|
||||||
RuntimeVisibleParameterAnnotations,
|
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
|
# 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.
|
# Also this rule prevents registerIn from being inlined.
|
||||||
-keepclassmembers class androidx.lifecycle.ReportFragment$LifecycleCallbacks { *; }
|
-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
|
# 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 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 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.
|
# 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.
|
# 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>();
|
<init>();
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Proguard rules specific to the extractor module.
|
||||||
|
|
||||||
# Methods accessed via reflection in DefaultExtractorsFactory
|
# Methods accessed via reflection in DefaultExtractorsFactory
|
||||||
@ -2522,8 +2536,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
-dontwarn kotlin.annotations.jvm.**
|
-dontwarn kotlin.annotations.jvm.**
|
||||||
-dontwarn javax.annotation.**
|
-dontwarn javax.annotation.**
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Proguard rules specific to the common module.
|
||||||
|
|
||||||
# Don't warn about checkerframework and Kotlin annotations
|
# 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.
|
# This is needed for ProGuard but not R8.
|
||||||
-keepclassmembernames class com.google.common.base.Function { *; }
|
-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
|
# 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 F:\AS\gradle\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\25898cd92bff76be652caaeef3397500\transformed\versionedparcelable-1.1.1\proguard.txt
|
||||||
-keep class * implements androidx.versionedparcelable.VersionedParcelable
|
-keep class * implements androidx.versionedparcelable.VersionedParcelable
|
||||||
-keep public class android.support.**Parcelizer { *; }
|
-keep public class android.support.**Parcelizer { *; }
|
||||||
-keep public class androidx.**Parcelizer { *; }
|
-keep public class androidx.**Parcelizer { *; }
|
||||||
-keep public class androidx.versionedparcelable.ParcelImpl
|
-keep public class androidx.versionedparcelable.ParcelImpl
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
-keep class * extends androidx.room.RoomDatabase
|
||||||
-dontwarn androidx.room.paging.**
|
-dontwarn androidx.room.paging.**
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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 Proguard rule ensures that ComponentInitializers are are neither shrunk nor obfuscated.
|
||||||
# This is because they are discovered and instantiated during application initialization.
|
# This is because they are discovered and instantiated during application initialization.
|
||||||
-keep class * extends androidx.startup.Initializer {
|
-keep class * extends androidx.startup.Initializer {
|
||||||
@ -2570,29 +2584,29 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
|
|
||||||
-assumenosideeffects class androidx.startup.StartupLogger
|
-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
|
# 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 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 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
|
||||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
-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
|
# 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 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 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
|
||||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
-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
|
# 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 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 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$Instantiation
|
||||||
-dontwarn com.google.firebase.components.Component$ComponentType
|
-dontwarn com.google.firebase.components.Component$ComponentType
|
||||||
|
|
||||||
-keep class * implements com.google.firebase.components.ComponentRegistrar
|
-keep class * implements com.google.firebase.components.ComponentRegistrar
|
||||||
-keep,allowshrinking interface 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
|
# 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 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 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
|
# 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 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 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,allowobfuscation @interface androidx.annotation.Keep
|
||||||
-keep @androidx.annotation.Keep class * {*;}
|
-keep @androidx.annotation.Keep class * {*;}
|
||||||
|
|
||||||
@ -2612,8 +2626,8 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
@androidx.annotation.DoNotInline <methods>;
|
@androidx.annotation.DoNotInline <methods>;
|
||||||
}
|
}
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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
|
# Copyright (C) 2020 The Android Open Source Project
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# 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.Retention
|
||||||
-dontwarn kotlin.annotation.Target
|
-dontwarn kotlin.annotation.Target
|
||||||
|
|
||||||
# End of content from 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\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
|
# 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.
|
# Add project specific ProGuard rules here.
|
||||||
# By default, the flags in this file are appended to flags specified
|
# By default, the flags in this file are appended to flags specified
|
||||||
# in /Developer/android-sdk-osx/tools/proguard/proguard-android.txt
|
# 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.* { *; }
|
||||||
-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
|
# 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 F:\AS\gradle\caches\transforms-3\a358ff6705c32d8c6337aefd4316f1b9\transformed\jetified-billing-5.0.0\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 the AIDL interface
|
||||||
-keep class com.android.vending.billing.** { *; }
|
-keep class com.android.vending.billing.** { *; }
|
||||||
|
|
||||||
@ -2671,7 +2685,7 @@ rx.internal.util.atomic.LinkedQueueNode* consumerNode;
|
|||||||
-dontwarn com.google.android.apps.common.proguard.UsedByReflection
|
-dontwarn com.google.android.apps.common.proguard.UsedByReflection
|
||||||
|
|
||||||
-keepnames class com.android.billingclient.api.ProxyBillingActivity
|
-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>
|
# The proguard configuration file for the following section is <unknown>
|
||||||
|
|
||||||
# End of content from <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_UPLOAD_ERROR_LOG = getMetaDataBoolean("IS_UPLOAD_ERROR_LOG");
|
||||||
//是否为插件包模式
|
//是否为插件包模式
|
||||||
public static final boolean IS_PLUGIN_MODEL = getMetaDataBoolean("IS_PLUGIN_MODEL");
|
public static final boolean IS_PLUGIN_MODEL = getMetaDataBoolean("IS_PLUGIN_MODEL");
|
||||||
|
public static final String BUILD_TIME = getMetaDataString("BUILD_TIME");
|
||||||
|
|
||||||
//外部sd卡
|
//外部sd卡
|
||||||
public static final String DCMI_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
|
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 android.text.TextUtils;
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import com.yunbao.common.CommonAppConfig;
|
||||||
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -421,7 +423,13 @@ public class IMLoginModel extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getAvatar() {
|
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) {
|
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.alibaba.fastjson.annotation.JSONField;
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -417,7 +418,13 @@ public class UserBean implements Parcelable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getAvatar() {
|
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) {
|
public void setAvatar(String avatar) {
|
||||||
|
@ -15,6 +15,7 @@ import com.lzf.easyfloat.EasyFloat;
|
|||||||
import com.lzf.easyfloat.enums.ShowPattern;
|
import com.lzf.easyfloat.enums.ShowPattern;
|
||||||
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
import com.lzf.easyfloat.interfaces.OnPermissionResult;
|
||||||
import com.lzf.easyfloat.permission.PermissionUtils;
|
import com.lzf.easyfloat.permission.PermissionUtils;
|
||||||
|
import com.yunbao.common.CommonAppConfig;
|
||||||
import com.yunbao.common.adapter.DebugDialogAdapter;
|
import com.yunbao.common.adapter.DebugDialogAdapter;
|
||||||
import com.yunbao.common.utils.AppManager;
|
import com.yunbao.common.utils.AppManager;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
@ -129,6 +130,7 @@ public class DebugDialog {
|
|||||||
recyclerView.setAdapter(adapter);
|
recyclerView.setAdapter(adapter);
|
||||||
recyclerView.setBackgroundColor(Color.WHITE);
|
recyclerView.setBackgroundColor(Color.WHITE);
|
||||||
TextView textView = new TextView(mContext);
|
TextView textView = new TextView(mContext);
|
||||||
|
TextView buildTime = new TextView(mContext);
|
||||||
textView.setOnClickListener(new View.OnClickListener() {
|
textView.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
@ -137,6 +139,7 @@ public class DebugDialog {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
params.put("debug弹窗", textView);
|
params.put("debug弹窗", textView);
|
||||||
|
params.put("发包时间:" + CommonAppConfig.BUILD_TIME, buildTime);
|
||||||
adapter.setParamMap(params);
|
adapter.setParamMap(params);
|
||||||
|
|
||||||
EasyFloat.with(mContext)
|
EasyFloat.with(mContext)
|
||||||
@ -144,7 +147,6 @@ public class DebugDialog {
|
|||||||
.setShowPattern(this.showPattern)
|
.setShowPattern(this.showPattern)
|
||||||
.setLayout(recyclerView)
|
.setLayout(recyclerView)
|
||||||
.show();
|
.show();
|
||||||
runnable.run(this);
|
|
||||||
Log.i("debug弹窗", "createView: 创建");
|
Log.i("debug弹窗", "createView: 创建");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ import com.bumptech.glide.Glide;
|
|||||||
import com.bumptech.glide.RequestBuilder;
|
import com.bumptech.glide.RequestBuilder;
|
||||||
import com.bumptech.glide.load.DataSource;
|
import com.bumptech.glide.load.DataSource;
|
||||||
import com.bumptech.glide.load.engine.GlideException;
|
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.RequestListener;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
import com.bumptech.glide.request.target.CustomTarget;
|
import com.bumptech.glide.request.target.CustomTarget;
|
||||||
@ -48,10 +49,10 @@ public class ImgLoader {
|
|||||||
if (!contextIsExist(context)) {
|
if (!contextIsExist(context)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(StringUtil.isEmpty(url)){
|
if (StringUtil.isEmpty(url)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(!url.startsWith("http")){
|
if (!url.startsWith("http")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RequestBuilder<Drawable> builder = Glide.with(context)
|
RequestBuilder<Drawable> builder = Glide.with(context)
|
||||||
@ -159,11 +160,33 @@ public class ImgLoader {
|
|||||||
displayAvatar(context, url, imageView, -1, -1);
|
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) {
|
public static void displayAvatar(Context context, String url, ImageView imageView, int width, int height) {
|
||||||
if (!contextIsExist(context) || imageView == null) {
|
if (!contextIsExist(context) || imageView == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(StringUtil.isEmpty(url)){
|
if (StringUtil.isEmpty(url)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!url.startsWith("http")) {
|
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.LiveStetUpStatusModel;
|
||||||
import com.yunbao.common.bean.LiveTaskModel;
|
import com.yunbao.common.bean.LiveTaskModel;
|
||||||
import com.yunbao.common.bean.LiveUserMailBoxModel;
|
import com.yunbao.common.bean.LiveUserMailBoxModel;
|
||||||
|
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||||
import com.yunbao.common.bean.MedalAchievementModel;
|
import com.yunbao.common.bean.MedalAchievementModel;
|
||||||
import com.yunbao.common.bean.MessageChatIsAnchor;
|
import com.yunbao.common.bean.MessageChatIsAnchor;
|
||||||
import com.yunbao.common.bean.MessageChatUserBean;
|
import com.yunbao.common.bean.MessageChatUserBean;
|
||||||
@ -1346,6 +1347,14 @@ public interface PDLiveApi {
|
|||||||
@GET("/api/public/?service=User.userFeedbackRestrict")
|
@GET("/api/public/?service=User.userFeedbackRestrict")
|
||||||
Observable<ResponseModel<List<BaseModel>>> checkFeedback();
|
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
|
* @param roomId 房间ID
|
||||||
|
@ -55,6 +55,7 @@ import com.yunbao.common.bean.LiveRoomVoteModel;
|
|||||||
import com.yunbao.common.bean.LiveStetUpStatusModel;
|
import com.yunbao.common.bean.LiveStetUpStatusModel;
|
||||||
import com.yunbao.common.bean.LiveTaskModel;
|
import com.yunbao.common.bean.LiveTaskModel;
|
||||||
import com.yunbao.common.bean.LiveUserMailBoxModel;
|
import com.yunbao.common.bean.LiveUserMailBoxModel;
|
||||||
|
import com.yunbao.common.bean.MainMessageChatListTimer;
|
||||||
import com.yunbao.common.bean.MedalAchievementModel;
|
import com.yunbao.common.bean.MedalAchievementModel;
|
||||||
import com.yunbao.common.bean.MessageChatIsAnchor;
|
import com.yunbao.common.bean.MessageChatIsAnchor;
|
||||||
import com.yunbao.common.bean.MessageChatUserBean;
|
import com.yunbao.common.bean.MessageChatUserBean;
|
||||||
@ -3887,8 +3888,61 @@ public class LiveNetManager {
|
|||||||
}).isDisposed();
|
}).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) {
|
private MultipartBody.Part createUploadFile(File file) {
|
||||||
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
|
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
|
||||||
return MultipartBody.Part.createFormData("file", file.getName(), requestBody);
|
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() {
|
public boolean isGiftEffect() {
|
||||||
return getBoolean(GiftEffect, !(Build.VERSION.SDK_INT < Build.VERSION_CODES.O));
|
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) {
|
public void setLiveNotifySettings(boolean isTrue) {
|
||||||
put(LIVE_NOTIFY_SETTINGS, 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.google.gson.Gson;
|
||||||
import com.yunbao.common.bean.IMLoginModel;
|
import com.yunbao.common.bean.IMLoginModel;
|
||||||
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -28,11 +29,41 @@ public class PDMessageInterceptor implements MessageInterceptor {
|
|||||||
TextMessage textMessage = (TextMessage) message.getContent();
|
TextMessage textMessage = (TextMessage) message.getContent();
|
||||||
String context = textMessage.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};
|
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);
|
IMCenter.getInstance().clearMessagesUnreadStatus(Conversation.ConversationType.PRIVATE, message.getTargetId(), null);
|
||||||
|
|
||||||
// return true;
|
// return true;
|
||||||
|
@ -214,7 +214,7 @@ public class RongcloudIMManager {
|
|||||||
break;
|
break;
|
||||||
//用户账号在其它设备登录,此设备被踢下线
|
//用户账号在其它设备登录,此设备被踢下线
|
||||||
case KICKED_OFFLINE_BY_OTHER_CLIENT:
|
case KICKED_OFFLINE_BY_OTHER_CLIENT:
|
||||||
EventBus.getDefault().post(new RongIMConnectionStatusEvent());
|
EventBus.getDefault().post(new RongIMConnectionStatusEvent().setStatus(-1));
|
||||||
break;
|
break;
|
||||||
//连接暂时挂起(多是由于网络问题导致),SDK 会在合适时机进行自动重连
|
//连接暂时挂起(多是由于网络问题导致),SDK 会在合适时机进行自动重连
|
||||||
case SUSPEND:
|
case SUSPEND:
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.yunbao.common.utils;
|
package com.yunbao.common.utils;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.yunbao.common.BuildConfig;
|
import com.yunbao.common.BuildConfig;
|
||||||
|
|
||||||
@ -11,7 +12,7 @@ public class AppManager {
|
|||||||
private static Stack<Activity> activityStack;
|
private static Stack<Activity> activityStack;
|
||||||
|
|
||||||
public AppManager() {
|
public AppManager() {
|
||||||
activityStack=new Stack<>();
|
activityStack = new Stack<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,6 +49,10 @@ public class AppManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clear() {
|
||||||
|
activityStack.clear();
|
||||||
|
}
|
||||||
|
|
||||||
public static class SingleApp {
|
public static class SingleApp {
|
||||||
public static AppManager INSTANCE = new AppManager();
|
public static AppManager INSTANCE = new AppManager();
|
||||||
}
|
}
|
||||||
@ -59,6 +64,10 @@ public class AppManager {
|
|||||||
if (activityStack == null) {
|
if (activityStack == null) {
|
||||||
activityStack = new Stack<Activity>();
|
activityStack = new Stack<Activity>();
|
||||||
}
|
}
|
||||||
|
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>class com.yunbao.main.activity.MsgAddressBookActivity
|
||||||
|
if (getActivity(activity.getClass()) != null) {
|
||||||
|
activityStack.remove(getActivity(activity.getClass()));
|
||||||
|
}
|
||||||
activityStack.add(activity);
|
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.content.Context;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
|
import android.text.TextPaint;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@ -42,6 +44,49 @@ public class AutoSplitTextView extends androidx.appcompat.widget.AppCompatTextVi
|
|||||||
}
|
}
|
||||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
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) {
|
public void setAutoText(CharSequence text) {
|
||||||
this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
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"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:background="@color/white"
|
android:background="@color/white"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
@ -361,8 +362,10 @@
|
|||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/authenticationLayout"
|
android:id="@+id/authenticationLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="0dp"
|
||||||
|
tools:layout_width="match_parent"
|
||||||
|
tools:layout_height="match_parent"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:visibility="visible">
|
android:visibility="visible">
|
||||||
|
|
||||||
|
@ -659,7 +659,7 @@
|
|||||||
<string name="report">Report</string>
|
<string name="report">Report</string>
|
||||||
<string name="reload">retry</string>
|
<string name="reload">retry</string>
|
||||||
<string name="refuse">refuse</string>
|
<string name="refuse">refuse</string>
|
||||||
<string name="save">Preservation</string>
|
<string name="save">Save</string>
|
||||||
<string name="reg">Register</string>
|
<string name="reg">Register</string>
|
||||||
<string name="no_more_mic">No one is currently in the voice link</string>
|
<string name="no_more_mic">No one is currently in the voice link</string>
|
||||||
<string name="welcome_pdlive">Welcome to PDLive</string>
|
<string name="welcome_pdlive">Welcome to PDLive</string>
|
||||||
|
@ -659,7 +659,7 @@
|
|||||||
<string name="report">Report</string>
|
<string name="report">Report</string>
|
||||||
<string name="reload">retry</string>
|
<string name="reload">retry</string>
|
||||||
<string name="refuse">refuse</string>
|
<string name="refuse">refuse</string>
|
||||||
<string name="save">Preservation</string>
|
<string name="save">Save</string>
|
||||||
<string name="reg">Register</string>
|
<string name="reg">Register</string>
|
||||||
<string name="no_more_mic">No one is currently in the voice link</string>
|
<string name="no_more_mic">No one is currently in the voice link</string>
|
||||||
<string name="welcome_pdlive">Welcome to PDLive</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:activityCloseEnterAnimation">@anim/out_to_right_abit</item>
|
||||||
<item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
|
<item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
|
||||||
</style>
|
</style>
|
||||||
|
<declare-styleable name="MainMessageChatListItem_Layout">
|
||||||
|
<attr format="reference|enum" name="autoTextEllipsize"/>
|
||||||
|
</declare-styleable>
|
||||||
</resources>
|
</resources>
|
@ -4,8 +4,8 @@ ext {
|
|||||||
buildToolsVersion: "29.0.2",
|
buildToolsVersion: "29.0.2",
|
||||||
minSdkVersion : 23,
|
minSdkVersion : 23,
|
||||||
targetSdkVersion : 33,
|
targetSdkVersion : 33,
|
||||||
versionCode : 525,
|
versionCode : 526,
|
||||||
versionName : "6.6.8",
|
versionName : "6.6.9",
|
||||||
namespace : "com.pandoralive.shayu"
|
namespace : "com.pandoralive.shayu"
|
||||||
]
|
]
|
||||||
manifestPlaceholders = [
|
manifestPlaceholders = [
|
||||||
@ -13,6 +13,7 @@ ext {
|
|||||||
serverHost : "https://napi.yaoulive.com",
|
serverHost : "https://napi.yaoulive.com",
|
||||||
// 测试
|
// 测试
|
||||||
// serverHost : " https://ceshi.yaoulive.com",
|
// serverHost : " https://ceshi.yaoulive.com",
|
||||||
|
buildTime : new Date().format("MM-dd HH:mm", TimeZone.getTimeZone("GMT+8")),
|
||||||
|
|
||||||
//百度语音识别
|
//百度语音识别
|
||||||
baiduAppId : "23774720",
|
baiduAppId : "23774720",
|
||||||
|
@ -47,7 +47,7 @@ public class EditNameRemarksActivity extends AbsActivity implements View.OnClick
|
|||||||
userId = getIntent().getStringExtra(NAMEREMARK);
|
userId = getIntent().getStringExtra(NAMEREMARK);
|
||||||
mEditText = (EditText) findViewById(R.id.edit);
|
mEditText = (EditText) findViewById(R.id.edit);
|
||||||
mEditText.setFilters(new InputFilter[]{
|
mEditText.setFilters(new InputFilter[]{
|
||||||
new InputFilter.LengthFilter(10)
|
new InputFilter.LengthFilter(25)
|
||||||
});
|
});
|
||||||
findViewById(R.id.btn_save).setOnClickListener(this);
|
findViewById(R.id.btn_save).setOnClickListener(this);
|
||||||
String content = InstructorRemarkManager.get(mContext).getInstructorRemark().get(userId);
|
String content = InstructorRemarkManager.get(mContext).getInstructorRemark().get(userId);
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package com.yunbao.live.adapter;
|
package com.yunbao.live.adapter;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
@ -15,7 +18,9 @@ import com.yunbao.common.CommonAppConfig;
|
|||||||
import com.yunbao.common.Constants;
|
import com.yunbao.common.Constants;
|
||||||
import com.yunbao.common.adapter.RefreshAdapter;
|
import com.yunbao.common.adapter.RefreshAdapter;
|
||||||
import com.yunbao.common.glide.ImgLoader;
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
import com.yunbao.common.utils.RouteUtil;
|
import com.yunbao.common.utils.RouteUtil;
|
||||||
|
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||||
import com.yunbao.live.R;
|
import com.yunbao.live.R;
|
||||||
import com.yunbao.live.bean.SystemMessageBean;
|
import com.yunbao.live.bean.SystemMessageBean;
|
||||||
import com.yunbao.live.views.SystemMessageViewHolder;
|
import com.yunbao.live.views.SystemMessageViewHolder;
|
||||||
@ -23,6 +28,9 @@ import com.yunbao.live.views.SystemMessageViewHolder;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
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;
|
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;
|
ImageView img_content_pic1, img_content_pic2, img_content_pic3, img_content2_pic1, img_content2_pic2, img_item_interaction;
|
||||||
RelativeLayout rt_root;
|
RelativeLayout rt_root;
|
||||||
|
Button mBtnChat;
|
||||||
|
|
||||||
public Vh(View itemView) {
|
public Vh(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -67,6 +76,7 @@ public class InteractionMessageAdapter extends RefreshAdapter<SystemMessageBean>
|
|||||||
img_content_pic3 = itemView.findViewById(R.id.img_content_pic3);
|
img_content_pic3 = itemView.findViewById(R.id.img_content_pic3);
|
||||||
img_content2_pic1 = itemView.findViewById(R.id.img_content2_pic1);
|
img_content2_pic1 = itemView.findViewById(R.id.img_content2_pic1);
|
||||||
img_content2_pic2 = itemView.findViewById(R.id.img_content2_pic2);
|
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);
|
rt_root = itemView.findViewById(R.id.rt_root);
|
||||||
lt_reply = itemView.findViewById(R.id.lt_reply);
|
lt_reply = itemView.findViewById(R.id.lt_reply);
|
||||||
lt_img = itemView.findViewById(R.id.lt_img);
|
lt_img = itemView.findViewById(R.id.lt_img);
|
||||||
@ -87,13 +97,29 @@ public class InteractionMessageAdapter extends RefreshAdapter<SystemMessageBean>
|
|||||||
RouteUtil.forwardUserHome(mContext, bean.getUid(), 2);
|
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())) {
|
if (bean.getDynamic_id() != null && !"0".equals(bean.getDynamic_id())) {
|
||||||
lt_img.setVisibility(View.VISIBLE);
|
lt_img.setVisibility(View.VISIBLE);
|
||||||
rt_root.setOnClickListener(new View.OnClickListener() {
|
rt_root.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
Constants.myIntoIndex = 2;
|
Constants.myIntoIndex = 2;
|
||||||
Constants.chatActionUrl=CommonAppConfig.HOST
|
Constants.chatActionUrl = CommonAppConfig.HOST
|
||||||
+ "/h5/shequ/index.html#/h5/shequ/details?isDetailsChat=1&dynamic_uid="
|
+ "/h5/shequ/index.html#/h5/shequ/details?isDetailsChat=1&dynamic_uid="
|
||||||
+ bean.getUid()
|
+ bean.getUid()
|
||||||
+ "&id=" + bean.getDynamic_id();
|
+ "&id=" + bean.getDynamic_id();
|
||||||
|
@ -15,11 +15,14 @@ import androidx.annotation.NonNull;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.yunbao.common.bean.LiveBean;
|
import com.yunbao.common.bean.LiveBean;
|
||||||
import com.yunbao.common.dialog.DebugDialog;
|
import com.yunbao.common.dialog.DebugDialog;
|
||||||
|
import com.yunbao.common.glide.ImgLoader;
|
||||||
import com.yunbao.common.http.LiveHttpUtil;
|
import com.yunbao.common.http.LiveHttpUtil;
|
||||||
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
import com.yunbao.common.message.content.MessageChatTipsContent;
|
import com.yunbao.common.message.content.MessageChatTipsContent;
|
||||||
import com.yunbao.common.utils.DateFormatUtil;
|
import com.yunbao.common.utils.DateFormatUtil;
|
||||||
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
|
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
|
||||||
import com.yunbao.common.utils.RouteUtil;
|
import com.yunbao.common.utils.RouteUtil;
|
||||||
|
import com.yunbao.common.utils.WordUtil;
|
||||||
import com.yunbao.live.R;
|
import com.yunbao.live.R;
|
||||||
import com.yunbao.live.event.InputPanelViewHolderEvent;
|
import com.yunbao.live.event.InputPanelViewHolderEvent;
|
||||||
|
|
||||||
@ -73,7 +76,7 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
|||||||
}
|
}
|
||||||
holder.getConvertView().setBackgroundColor(Color.parseColor("#00000000"));
|
holder.getConvertView().setBackgroundColor(Color.parseColor("#00000000"));
|
||||||
holder.itemView.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) {
|
if (messageDirection == Message.MessageDirection.RECEIVE) {
|
||||||
RongIMClient.getInstance().syncConversationReadStatus(mDataList.get(position).getConversationType(),
|
RongIMClient.getInstance().syncConversationReadStatus(mDataList.get(position).getConversationType(),
|
||||||
@ -99,9 +102,11 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
|||||||
readReceiptNew.setVisibility(View.GONE);
|
readReceiptNew.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
if (readReceipt.getVisibility() == View.VISIBLE) {
|
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 {
|
} 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) {
|
if (readReceipt != null) {
|
||||||
readReceipt.setVisibility(View.GONE);
|
readReceipt.setVisibility(View.GONE);
|
||||||
@ -109,7 +114,6 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
|||||||
if (content instanceof MessageChatTipsContent) {
|
if (content instanceof MessageChatTipsContent) {
|
||||||
readReceiptNew.setVisibility(View.GONE);
|
readReceiptNew.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
readReceiptNew.setVisibility(View.GONE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.getConvertView().setOnTouchListener(new View.OnTouchListener() {
|
holder.getConvertView().setOnTouchListener(new View.OnTouchListener() {
|
||||||
@ -163,6 +167,8 @@ public class PDLiveMessageListAdapter extends MessageListAdapter {
|
|||||||
holder.getView(R.id.right_liveStatus).setVisibility(View.GONE);
|
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) {
|
/* 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.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);
|
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) {
|
} else if (pkInfo != null && pkInfo.getIntValue("drpk_status") == 1) {
|
||||||
if (mLiveRoomViewHolder != null) {
|
if (mLiveRoomViewHolder != null) {
|
||||||
mLiveRoomViewHolder.initPkRank(null);
|
mLiveRoomViewHolder.initPkRank(null);
|
||||||
|
String pkUid = pkInfo.getString("pkuid");
|
||||||
|
if (!StringUtil.isEmpty(pkUid)) {
|
||||||
|
//初始化天梯赛信息
|
||||||
|
mLiveRoomViewHolder.initRankPKInfo(String.valueOf(data.getLiveInfo().getUid()), pkUid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (mLivePlayViewHolder != null) {
|
if (mLivePlayViewHolder != null) {
|
||||||
mLivePlayViewHolder.setViewUP(4);
|
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"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
@ -30,8 +31,8 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_marginRight="3dp"
|
android:layout_marginRight="3dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -54,6 +55,28 @@
|
|||||||
android:textColor="@color/black1"
|
android:textColor="@color/black1"
|
||||||
android:textSize="13sp" />
|
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
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -92,29 +115,21 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</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>
|
</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>
|
</RelativeLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@ -53,35 +53,71 @@
|
|||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</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
|
<TextView
|
||||||
android:id="@+id/rc_conversation_title"
|
android:id="@+id/rc_conversation_title"
|
||||||
style="@style/TextStyle.Alignment"
|
style="@style/TextStyle.Alignment"
|
||||||
android:layout_width="0dp"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="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_marginTop="@dimen/rc_margin_size_16"
|
||||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
android:ellipsize="end"
|
||||||
android:text="张三"
|
android:maxWidth="120dp"
|
||||||
|
android:maxLines="1"
|
||||||
android:textColor="@color/rc_text_main_color"
|
android:textColor="@color/rc_text_main_color"
|
||||||
android:textSize="@dimen/rc_font_secondary_size"
|
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_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
|
<TextView
|
||||||
android:id="@+id/rc_conversation_status"
|
android:id="@+id/rc_conversation_status"
|
||||||
android:layout_width="0dp"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/rc_margin_size_12"
|
android:layout_marginStart="@dimen/rc_margin_size_12"
|
||||||
android:layout_marginTop="@dimen/rc_margin_size_16"
|
android:layout_marginTop="@dimen/rc_margin_size_16"
|
||||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="8sp"
|
android:textSize="8sp"
|
||||||
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_title"
|
app:layout_constraintBottom_toBottomOf="@+id/rc_conversation_title"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/rc_conversation_date"
|
app:layout_constraintStart_toEndOf="@+id/rc_conversation_live_status"
|
||||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_title"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="在线" />
|
tools:text="在线" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/rc_conversation_content"
|
android:id="@+id/rc_conversation_content"
|
||||||
@ -91,15 +127,15 @@
|
|||||||
android:layout_marginStart="12dp"
|
android:layout_marginStart="12dp"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:layout_marginEnd="60dp"
|
android:layout_marginEnd="60dp"
|
||||||
android:text="你好,朋友!11111111111111111111111111111111111111111"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:text="你好,朋友!11111111111111111111111111111111111111111"
|
||||||
android:textColor="@color/rc_secondary_color"
|
android:textColor="@color/rc_secondary_color"
|
||||||
android:textSize="@dimen/rc_font_text_third_size"
|
android:textSize="@dimen/rc_font_text_third_size"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
app:layout_constraintStart_toEndOf="@+id/rc_conversation_portrait_rl"
|
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
|
<TextView
|
||||||
android:id="@+id/rc_conversation_date"
|
android:id="@+id/rc_conversation_date"
|
||||||
@ -116,14 +152,14 @@
|
|||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/rc_conversation_no_disturb"
|
android:id="@+id/rc_conversation_no_disturb"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:visibility="gone"
|
|
||||||
tools:visibility="visible"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
android:layout_marginEnd="@dimen/rc_margin_size_12"
|
||||||
android:layout_marginBottom="@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_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:src="@drawable/rc_no_disturb" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/rc_conversation_read_receipt"
|
android:id="@+id/rc_conversation_read_receipt"
|
||||||
@ -131,18 +167,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="@dimen/rc_margin_size_2"
|
android:layout_marginEnd="@dimen/rc_margin_size_2"
|
||||||
android:layout_marginBottom="@dimen/rc_margin_size_12"
|
android:layout_marginBottom="@dimen/rc_margin_size_12"
|
||||||
|
android:src="@drawable/rc_read_receipt"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/rc_conversation_no_disturb"
|
app:layout_constraintEnd_toStartOf="@+id/rc_conversation_no_disturb"
|
||||||
app:layout_goneMarginRight="@dimen/rc_margin_size_12"
|
app:layout_goneMarginRight="@dimen/rc_margin_size_12" />
|
||||||
android:src="@drawable/rc_read_receipt" />
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="0.5dp"
|
android:layout_height="0.5dp"
|
||||||
android:layout_marginTop="71.5dp"
|
android:layout_marginTop="71.5dp"
|
||||||
android:background="@color/rc_divider_color"
|
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" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
@ -142,12 +142,6 @@
|
|||||||
android:src="@drawable/rc_read_receipt"
|
android:src="@drawable/rc_read_receipt"
|
||||||
android:visibility="gone" />
|
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
|
<TextView
|
||||||
android:id="@+id/rc_read_receipt_request"
|
android:id="@+id/rc_read_receipt_request"
|
||||||
@ -182,6 +176,16 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</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
|
<View
|
||||||
android:id="@+id/rc_v_edit"
|
android:id="@+id/rc_v_edit"
|
||||||
android:layout_width="0dp"
|
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_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_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="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>
|
</resources>
|
@ -115,4 +115,12 @@
|
|||||||
<string name="live_fans_group_send_gift_tips">粉絲團等級達到 Lv%s 可送出該禮物</string>
|
<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_tip">加入粉絲團可開啟【加入】</string>
|
||||||
<string name="live_rad_pack_join_fans_group_click_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>
|
</resources>
|
||||||
|
@ -59,6 +59,7 @@ import com.yunbao.main.R;
|
|||||||
import com.yunbao.main.event.EditProfileEvent;
|
import com.yunbao.main.event.EditProfileEvent;
|
||||||
import com.yunbao.main.http.MainHttpConsts;
|
import com.yunbao.main.http.MainHttpConsts;
|
||||||
import com.yunbao.main.http.MainHttpUtil;
|
import com.yunbao.main.http.MainHttpUtil;
|
||||||
|
import com.yunbao.main.manager.imrongcloud.ConversationIMListManager;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
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.RandomUtil;
|
||||||
import com.yunbao.common.utils.RouteUtil;
|
import com.yunbao.common.utils.RouteUtil;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
|
import com.yunbao.common.utils.ViewPageIndicatorUtils;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
import com.yunbao.main.R;
|
import com.yunbao.main.R;
|
||||||
import com.yunbao.main.adapter.MainMsgAddressBookListAdapter;
|
import com.yunbao.main.adapter.MainMsgAddressBookListAdapter;
|
||||||
@ -224,7 +225,7 @@ public class MsgAddressBookActivity extends AbsActivity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
mIndicator.setNavigator(commonNavigator);
|
mIndicator.setNavigator(commonNavigator);
|
||||||
bind(mIndicator, mViewPager);
|
ViewPageIndicatorUtils.bind(mIndicator, mViewPager,null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initViewPager() {
|
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) {
|
private List<MessageChatUserBean> createTempData(int type) {
|
||||||
List<MessageChatUserBean> list = new ArrayList<>();
|
List<MessageChatUserBean> list = new ArrayList<>();
|
||||||
|
@ -5,6 +5,7 @@ import android.content.Intent;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.text.InputFilter;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.GestureDetector;
|
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.ToastUtil;
|
||||||
import com.yunbao.common.utils.ViewUtils;
|
import com.yunbao.common.utils.ViewUtils;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||||
import com.yunbao.live.bean.SearchUserBean;
|
import com.yunbao.live.bean.SearchUserBean;
|
||||||
import com.yunbao.live.dialog.MenuPopuwWindow;
|
import com.yunbao.live.dialog.MenuPopuwWindow;
|
||||||
import com.yunbao.live.event.InputPanelViewHolderEvent;
|
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.MessageChatTopImageListAdapter;
|
||||||
import com.yunbao.main.adapter.MessageChatTopTopListAdapter;
|
import com.yunbao.main.adapter.MessageChatTopTopListAdapter;
|
||||||
import com.yunbao.main.http.MainHttpUtil;
|
import com.yunbao.main.http.MainHttpUtil;
|
||||||
import com.yunbao.main.manager.imrongcloud.ConversationIMListManager;
|
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
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);
|
RouteUtil.forwardUserHome(targetId);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -297,10 +301,10 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
|||||||
showBanner();
|
showBanner();
|
||||||
showTag();
|
showTag();
|
||||||
if (data.getUser().getAttention() <= 1) {
|
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
|
@Override
|
||||||
public void onClick(View view) {
|
public void onViewClicks() {
|
||||||
follow((Button) view, userInfoBean.getUser().getId() + "");
|
follow(ViewUtils.findViewById(card, R.id.follow, Button.class), userInfoBean.getUser().getId() + "");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -313,7 +317,9 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
|
|||||||
public void onSuccess(List<Integer> data) {
|
public void onSuccess(List<Integer> data) {
|
||||||
if (data.contains(Integer.parseInt(targetId))) {
|
if (data.contains(Integer.parseInt(targetId))) {
|
||||||
ViewUtils.findViewById(card, R.id.liveStatus).setVisibility(View.VISIBLE);
|
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() {
|
LiveHttpUtil.getLiveInfo(targetId, new com.yunbao.common.http.HttpCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(int code, String msg, String[] info) {
|
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));
|
JSONArray array = JSONArray.parseArray(Arrays.toString(info));
|
||||||
for (int i = 0; i < array.size(); i++) {
|
for (int i = 0; i < array.size(); i++) {
|
||||||
JSONObject json = array.getJSONObject(0);
|
JSONObject json = array.getJSONObject(0);
|
||||||
if (json.containsKey(targetId)) {
|
if (json.containsKey(targetId) && !StringUtil.isEmpty(json.getString(targetId))) {
|
||||||
titleView.setText(json.getString(targetId));
|
titleView.setText(json.getString(targetId));
|
||||||
ViewUtils.findViewById(card, R.id.userName, TextView.class).setText(json.getString(targetId));
|
ViewUtils.findViewById(card, R.id.userName, TextView.class).setText(json.getString(targetId));
|
||||||
return;
|
return;
|
||||||
|
@ -14,25 +14,42 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
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.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.message.content.MessageChatCardContent;
|
||||||
import com.yunbao.common.utils.AppManager;
|
import com.yunbao.common.utils.AppManager;
|
||||||
|
import com.yunbao.common.utils.DateFormatUtil;
|
||||||
import com.yunbao.common.utils.ListUtils;
|
import com.yunbao.common.utils.ListUtils;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
import com.yunbao.common.utils.ViewUtils;
|
import com.yunbao.common.utils.ViewUtils;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
|
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
||||||
import com.yunbao.main.R;
|
import com.yunbao.main.R;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import io.rong.imkit.IMCenter;
|
||||||
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
||||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||||
import io.rong.imkit.utils.RouteUtils;
|
import io.rong.imkit.utils.RouteUtils;
|
||||||
import io.rong.imkit.widget.adapter.ViewHolder;
|
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.Conversation;
|
||||||
|
import io.rong.imlib.model.Message;
|
||||||
|
import io.rong.imlib.model.MessageContent;
|
||||||
|
import io.rong.message.TextMessage;
|
||||||
|
|
||||||
public class MainConversationListAdapter extends ConversationListAdapter {
|
public class MainConversationListAdapter extends ConversationListAdapter {
|
||||||
public static final int TYPE_SEARCH_TITLE = 500;
|
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;
|
public static final int TYPE_SEARCH_CHAT = 520;
|
||||||
private List<BaseUiConversation> srcList;
|
private List<BaseUiConversation> srcList;
|
||||||
private Context mContext;
|
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) {
|
public MainConversationListAdapter(Context mContext) {
|
||||||
this.mContext = mContext;
|
this.mContext = mContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOnRefreshListener(OnRecyclerListRefreshListener<List<BaseUiConversation>> onRefreshListener) {
|
||||||
|
this.onRefreshListener = onRefreshListener;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
@ -104,28 +127,90 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
|||||||
} else if (getItemViewType(position) != -200) {
|
} else if (getItemViewType(position) != -200) {
|
||||||
super.onBindViewHolder(holder, position);
|
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) {
|
private void bindEmpty(ViewHolder holder, int position) {
|
||||||
if(isChat){
|
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.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);
|
ViewUtils.findViewById(holder.itemView, R.id.textView, TextView.class).setText(R.string.not_data_message_chat_list);
|
||||||
}else{
|
} else {
|
||||||
ViewUtils.findViewById(holder.itemView,R.id.imageView, ImageView.class).setImageResource(R.mipmap.ic_message_not_search);
|
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);
|
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
|
@Override
|
||||||
public void setDataCollection(List<BaseUiConversation> data) {
|
public void setDataCollection(List<BaseUiConversation> data) {
|
||||||
|
List<BaseUiConversation> tmp = new ArrayList<>();
|
||||||
|
Log.i("聊天数据源", "setDataCollection: " + data.hashCode());
|
||||||
|
List<String> urls = new ArrayList<>();
|
||||||
if (srcList == null) {
|
if (srcList == null) {
|
||||||
srcList = new ArrayList<>();
|
srcList = new ArrayList<>();
|
||||||
}
|
}
|
||||||
mDataList.clear();
|
mDataList.clear();
|
||||||
srcList.clear();
|
|
||||||
if (mContext == null)
|
if (mContext == null)
|
||||||
mContext = AppManager.getInstance().getLastActivity();
|
mContext = AppManager.getInstance().getLastActivity();
|
||||||
for (BaseUiConversation item : data) {
|
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);
|
BaseUiConversation cn = new SingleConversation(mContext, item.mCore);
|
||||||
srcList.add(cn);
|
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));
|
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() {
|
public List<BaseUiConversation> getSrcList() {
|
||||||
@ -172,8 +265,11 @@ public class MainConversationListAdapter extends ConversationListAdapter {
|
|||||||
holder.getView(R.id.itemDecorationBottom).setVisibility(View.VISIBLE);
|
holder.getView(R.id.itemDecorationBottom).setVisibility(View.VISIBLE);
|
||||||
holder.itemView.setBackgroundResource(R.drawable.bg_msg_list_item_centre);
|
holder.itemView.setBackgroundResource(R.drawable.bg_msg_list_item_centre);
|
||||||
}
|
}
|
||||||
holder.itemView.setOnClickListener(view -> {
|
ViewClicksAntiShake.clicksAntiShake(holder.itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||||
RouteUtils.routeToConversationActivity(view.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
@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.getView(R.id.itemDecorationBottom).setVisibility(View.VISIBLE);
|
||||||
holder.itemView.setBackgroundResource(R.drawable.bg_msg_list_item_centre);
|
holder.itemView.setBackgroundResource(R.drawable.bg_msg_list_item_centre);
|
||||||
}
|
}
|
||||||
holder.itemView.setOnClickListener(view -> {
|
ViewClicksAntiShake.clicksAntiShake(holder.itemView, new ViewClicksAntiShake.ViewClicksCallBack() {
|
||||||
RouteUtils.routeToConversationActivity(view.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
@Override
|
||||||
|
public void onViewClicks() {
|
||||||
|
RouteUtils.routeToConversationActivity(holder.itemView.getContext(), mDataList.get(position).mCore.getConversationType(), mDataList.get(position).mCore.getTargetId());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChat() {
|
public void setChat() {
|
||||||
isChat=true;
|
isChat = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSearch() {
|
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;
|
package com.yunbao.main.fragment;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.lifecycle.Observer;
|
||||||
|
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
@ -17,36 +19,72 @@ import com.yunbao.main.adapter.MainConversationListAdapter;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import io.rong.common.rlog.RLog;
|
||||||
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
import io.rong.imkit.conversationlist.ConversationListAdapter;
|
||||||
import io.rong.imkit.conversationlist.ConversationListFragment;
|
import io.rong.imkit.conversationlist.ConversationListFragment;
|
||||||
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
import io.rong.imkit.conversationlist.model.BaseUiConversation;
|
||||||
import io.rong.imkit.conversationlist.model.SingleConversation;
|
import io.rong.imkit.conversationlist.model.SingleConversation;
|
||||||
|
import io.rong.imkit.event.Event;
|
||||||
import io.rong.imlib.RongIMClient;
|
import io.rong.imlib.RongIMClient;
|
||||||
import io.rong.imlib.model.Conversation;
|
import io.rong.imlib.model.Conversation;
|
||||||
import io.rong.imlib.model.SearchConversationResult;
|
import io.rong.imlib.model.SearchConversationResult;
|
||||||
|
|
||||||
public class MainMessageChatFragment extends ConversationListFragment {
|
public class MainMessageChatFragment extends ConversationListFragment {
|
||||||
|
|
||||||
|
private static final String TAG = "融云列表";
|
||||||
|
int listHashCode = 0;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
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);
|
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) {
|
public void setEmptyView(int viewLayoutMsgId) {
|
||||||
super.setEmptyView(viewLayoutMsgId);
|
super.setEmptyView(viewLayoutMsgId);
|
||||||
}
|
}
|
||||||
public void setEmptyView(View view){
|
|
||||||
|
public void setEmptyView(View view) {
|
||||||
super.setEmptyView(view);
|
super.setEmptyView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void search(String search) {
|
public void search(String search) {
|
||||||
((MainConversationListAdapter)mAdapter).setSearch();
|
((MainConversationListAdapter) mAdapter).setSearch();
|
||||||
getContactsList(search);
|
getContactsList(search);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MainConversationListAdapter getAdapter() {
|
||||||
|
return (MainConversationListAdapter) mAdapter;
|
||||||
|
}
|
||||||
|
|
||||||
private void getContactsList(String search) {
|
private void getContactsList(String search) {
|
||||||
List<BaseUiConversation> list = new ArrayList<>();
|
List<BaseUiConversation> list = new ArrayList<>();
|
||||||
|
List<String> uidList = new ArrayList<>();
|
||||||
|
|
||||||
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
BaseUiConversation conversation = new SingleConversation(getContext(), new Conversation());
|
||||||
conversation.mCore.setObjectName("SEARCH_TITLE" + WordUtil.getNewString(R.string.activity_msg_list_title_contacts));
|
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()) {
|
for (BaseUiConversation cn : ((MainConversationListAdapter) mAdapter).getSrcList()) {
|
||||||
System.err.println(" ----------------------->" + cn.mCore.getConversationTitle() + "|" + cn.mCore.getSenderUserName());
|
System.err.println(" ----------------------->" + cn.mCore.getConversationTitle() + "|" + cn.mCore.getSenderUserName());
|
||||||
if (StringUtil.isEmpty(cn.mCore.getConversationTitle())) continue;
|
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)) {
|
if (cn.mCore.getConversationTitle().contains(search)) {
|
||||||
conversation = new SingleConversation(getContext(), new Conversation());
|
conversation = new SingleConversation(getContext(), new Conversation());
|
||||||
conversation.mCore.setObjectName("SEARCH_USER" + search);
|
conversation.mCore.setObjectName("SEARCH_USER" + search);
|
||||||
@ -121,8 +161,12 @@ public class MainMessageChatFragment extends ConversationListFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onChatList() {
|
public void onChatList() {
|
||||||
((MainConversationListAdapter)mAdapter).setChat();
|
if(mConversationListViewModel==null)return;
|
||||||
|
((MainConversationListAdapter) mAdapter).setChat();
|
||||||
|
((MainConversationListAdapter) mAdapter).clear();
|
||||||
|
System.out.println(">!>!>!>!!>"+mConversationListViewModel);
|
||||||
subscribeUi();
|
subscribeUi();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 com.yunbao.main.views.MessageChatExtensionConfig;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import io.rong.imkit.IMCenter;
|
import io.rong.imkit.IMCenter;
|
||||||
import io.rong.imkit.RongIM;
|
import io.rong.imkit.RongIM;
|
||||||
@ -71,6 +73,7 @@ public class ConversationIMListManager {
|
|||||||
private String targetId;
|
private String targetId;
|
||||||
private String topContent;
|
private String topContent;
|
||||||
private Handler conversationIMListHandler = new Handler();
|
private Handler conversationIMListHandler = new Handler();
|
||||||
|
private Map<String, SearchUserBean> userCache = new HashMap<>();
|
||||||
|
|
||||||
private ConversationIMListManager(Context context) {
|
private ConversationIMListManager(Context context) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
@ -151,19 +154,51 @@ public class ConversationIMListManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearUserCache() {
|
||||||
|
userCache.clear();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 刷新用户信息(异步)
|
* 刷新用户信息(异步)
|
||||||
*/
|
*/
|
||||||
public void addUserInfoProvider() {
|
public void addUserInfoProvider() {
|
||||||
|
Log.i("刷新用户", "addUserInfoProvider: 准备刷新用户信息");
|
||||||
RongUserInfoManager.getInstance().setUserInfoProvider(userId -> {
|
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() {
|
CommonHttpUtil.getUserBaseinfo(userId, new HttpCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(int code, String msg, String[] info) {
|
public void onSuccess(int code, String msg, String[] info) {
|
||||||
if (code == 0 && info.length > 0 && !TextUtils.equals("__system__", userId)) {
|
if (code == 0 && info.length > 0 && !TextUtils.equals("__system__", userId)) {
|
||||||
JSONObject obj = JSON.parseObject(info[0]);
|
JSONObject obj = JSON.parseObject(info[0]);
|
||||||
SearchUserBean userBean = JSON.toJavaObject(obj, SearchUserBean.class);
|
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());
|
Log.i("刷新用户2", "2>" + userBean.getId() + "|" + userId + "|" + userBean.getAvatar());
|
||||||
String userNiceName = "";
|
String userNiceName = "";
|
||||||
String remark = InstructorRemarkManager.get(mContext).getInstructorRemark().get(userId);
|
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 userInfo = new UserInfo(userId, userNiceName, Uri.parse(userBean.getAvatar()));
|
||||||
//使用空白字段存储自己服务器用户的所有的信息
|
//使用空白字段存储自己服务器用户的所有的信息
|
||||||
userInfo.setExtra(GsonUtils.toJson(userBean));
|
userInfo.setExtra(GsonUtils.toJson(userBean));
|
||||||
RongUserInfoManager.getInstance().refreshUserInfoCache(userInfo);
|
return userInfo;
|
||||||
if (TextUtils.equals(userBean.getIs_admin(), "1")) {
|
|
||||||
setConversationToTop(userInfo.getUserId());
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Log.i("刷新用户", "3>" + code + "|" + msg + "|" + info.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}, true);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String mUserId;
|
private String mUserId;
|
||||||
|
@ -71,7 +71,7 @@ public class PDLiveCustomConversationProvider extends BaseConversationProvider {
|
|||||||
String cn = WordUtil.getChineseString(def);
|
String cn = WordUtil.getChineseString(def);
|
||||||
String en = WordUtil.getEnglishString(def);
|
String en = WordUtil.getEnglishString(def);
|
||||||
String content = uiConversation.mConversationContent.toString();
|
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 (WordUtil.isNewZh()) {
|
||||||
if (en.equals(content)) {
|
if (en.equals(content)) {
|
||||||
uiConversation.mConversationContent = new SpannableString(WordUtil.getNewString(def));
|
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()));
|
String date = new SimpleDateFormat("HH:mm", Locale.getDefault()).format(new Date(uiConversation.mCore.getSentTime()));
|
||||||
date = DateFormatUtil.getDateTimeString(uiConversation.mCore.getSentTime(), true, holder.getContext());
|
date = DateFormatUtil.getDateTimeString(uiConversation.mCore.getSentTime(), true, holder.getContext());
|
||||||
holder.setText(R.id.rc_conversation_date, date);
|
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 -> {
|
holder.getView(R.id.rc_conversation_portrait).setOnClickListener(view -> {
|
||||||
RouteUtil.forwardUserHome(targetId);
|
RouteUtil.forwardUserHome(targetId);
|
||||||
});
|
});
|
||||||
|
@ -320,9 +320,7 @@ public class MainMeViewHolder extends AbsMainViewHolder implements OnItemClickLi
|
|||||||
}
|
}
|
||||||
String singnature = u.getSignature();
|
String singnature = u.getSignature();
|
||||||
if (TextUtils.equals(singnature, "這個人很懶,什麼也沒留下") || TextUtils.equals(singnature, "这家伙很懒,什么都没留下") || TextUtils.isEmpty(singnature)) {
|
if (TextUtils.equals(singnature, "這個人很懶,什麼也沒留下") || TextUtils.equals(singnature, "这家伙很懒,什么都没留下") || TextUtils.isEmpty(singnature)) {
|
||||||
String ct = Locale.getDefault().getCountry();
|
if (WordUtil.isNewZh()) {
|
||||||
ct = TextUtils.equals("CN", ct) ? "HK" : ct;
|
|
||||||
if (TextUtils.equals(ct, "CN")) {
|
|
||||||
singnature = "這個人很懶,什麼也沒留下";
|
singnature = "這個人很懶,什麼也沒留下";
|
||||||
} else {
|
} else {
|
||||||
singnature = "The guy was lazy and didn't write anything.";
|
singnature = "The guy was lazy and didn't write anything.";
|
||||||
|
@ -1,24 +1,30 @@
|
|||||||
package com.yunbao.main.views;
|
package com.yunbao.main.views;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
|
import android.text.InputFilter;
|
||||||
|
import android.text.Spanned;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.FrameLayout;
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.viewpager2.widget.ViewPager2;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.binioter.guideview.Guide;
|
import com.binioter.guideview.Guide;
|
||||||
@ -29,6 +35,11 @@ import com.opensource.svgaplayer.SVGADrawable;
|
|||||||
import com.opensource.svgaplayer.SVGAImageView;
|
import com.opensource.svgaplayer.SVGAImageView;
|
||||||
import com.opensource.svgaplayer.SVGAParser;
|
import com.opensource.svgaplayer.SVGAParser;
|
||||||
import com.opensource.svgaplayer.SVGAVideoEntity;
|
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.utils.MobclickAgent;
|
||||||
import com.yunbao.common.bean.ImUserInfoModel;
|
import com.yunbao.common.bean.ImUserInfoModel;
|
||||||
import com.yunbao.common.bean.LiveBean;
|
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.LiveHttpUtil;
|
||||||
import com.yunbao.common.http.live.LiveNetManager;
|
import com.yunbao.common.http.live.LiveNetManager;
|
||||||
import com.yunbao.common.manager.IMLoginManager;
|
import com.yunbao.common.manager.IMLoginManager;
|
||||||
import com.yunbao.common.manager.NoviceInstructorManager;
|
|
||||||
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
|
||||||
import com.yunbao.common.utils.AppManager;
|
import com.yunbao.common.utils.AppManager;
|
||||||
import com.yunbao.common.utils.DeviceUtils;
|
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.SVGAViewUtils;
|
||||||
import com.yunbao.common.utils.StringUtil;
|
import com.yunbao.common.utils.StringUtil;
|
||||||
import com.yunbao.common.utils.ToastUtil;
|
import com.yunbao.common.utils.ToastUtil;
|
||||||
|
import com.yunbao.common.utils.ViewPageIndicatorUtils;
|
||||||
import com.yunbao.common.utils.WordUtil;
|
import com.yunbao.common.utils.WordUtil;
|
||||||
import com.yunbao.common.views.AbsMainViewHolder;
|
import com.yunbao.common.views.AbsMainViewHolder;
|
||||||
import com.yunbao.common.views.weight.ViewClicksAntiShake;
|
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.activity.MainActivity;
|
||||||
import com.yunbao.main.adapter.SystemMessageAdapter;
|
import com.yunbao.main.adapter.SystemMessageAdapter;
|
||||||
import com.yunbao.main.dialog.MsgMoreDialog;
|
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 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.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@ -74,8 +98,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class MainMessageViewHolder extends AbsMainViewHolder {
|
public class MainMessageViewHolder extends AbsMainViewHolder {
|
||||||
|
|
||||||
private MainMessageChatFragment conversationListFragment;
|
private static final String TAG = "消息中心";
|
||||||
private FrameLayout container;
|
|
||||||
private SystemMessageAdapter messageAdapter;
|
private SystemMessageAdapter messageAdapter;
|
||||||
private TextView textNewsNotice, textNewsInteraction, textNewsOnline, textSystemMessages;
|
private TextView textNewsNotice, textNewsInteraction, textNewsOnline, textSystemMessages;
|
||||||
private String type = null;
|
private String type = null;
|
||||||
@ -90,6 +113,10 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
|||||||
XPopup.Builder moreXPopup;
|
XPopup.Builder moreXPopup;
|
||||||
private String homeZdyPop;
|
private String homeZdyPop;
|
||||||
|
|
||||||
|
private ViewPager2 viewPager;
|
||||||
|
private MagicIndicator mIndicator;
|
||||||
|
private List<AbsMainMessageChatListFragment> fragmentList;
|
||||||
|
|
||||||
public MainMessageViewHolder setHomeZdyPop(String homeZdyPop) {
|
public MainMessageViewHolder setHomeZdyPop(String homeZdyPop) {
|
||||||
this.homeZdyPop = homeZdyPop;
|
this.homeZdyPop = homeZdyPop;
|
||||||
if (TextUtils.equals(homeZdyPop, "1")) {
|
if (TextUtils.equals(homeZdyPop, "1")) {
|
||||||
@ -121,7 +148,6 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
|||||||
public void init() {
|
public void init() {
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
//菜单
|
//菜单
|
||||||
container = (FrameLayout) findViewById(R.id.container);
|
|
||||||
textNewsNotice = (TextView) findViewById(R.id.text_news_notice);
|
textNewsNotice = (TextView) findViewById(R.id.text_news_notice);
|
||||||
textNewsInteraction = (TextView) findViewById(R.id.text_news_interaction);
|
textNewsInteraction = (TextView) findViewById(R.id.text_news_interaction);
|
||||||
textNewsOnline = (TextView) findViewById(R.id.text_news_online);
|
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);
|
imgNewsInteraction = (ImageView) findViewById(R.id.img_news_interaction);
|
||||||
imgSystemMessages = (ImageView) findViewById(R.id.img_system_messages);
|
imgSystemMessages = (ImageView) findViewById(R.id.img_system_messages);
|
||||||
imgNewsOnline = (ImageView) findViewById(R.id.img_news_online);
|
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);
|
contacts = findViewById(R.id.news_icon_contacts);
|
||||||
more = findViewById(R.id.news_icon_more);
|
more = findViewById(R.id.news_icon_more);
|
||||||
search = findViewById(R.id.search);
|
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, com.yunbao.main.activity.CompleteUserInfoActivity.class));
|
||||||
// mContext.startActivity(new Intent(mContext, MessageHiConfigRecordActivity.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() {
|
search.addTextChangedListener(new TextWatcher() {
|
||||||
@Override
|
@Override
|
||||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||||
@ -153,11 +187,12 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterTextChanged(Editable editable) {
|
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())) {
|
if (StringUtil.isEmpty(editable.toString())) {
|
||||||
conversationListFragment.onChatList();
|
fragmentList.get(viewPager.getCurrentItem()).onChatList();
|
||||||
} else {
|
} else {
|
||||||
conversationListFragment.search(editable.toString());
|
fragmentList.get(viewPager.getCurrentItem()).search(editable.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -166,6 +201,91 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
|||||||
more.setOnClickListener(view -> {
|
more.setOnClickListener(view -> {
|
||||||
moreXPopup.asCustom(new MsgMoreDialog(mContext)).show();
|
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
|
@Override
|
||||||
@ -227,32 +347,11 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
|||||||
*/
|
*/
|
||||||
private void initData() {
|
private void initData() {
|
||||||
IMLoginManager.get(mContext).checkInstructor();
|
IMLoginManager.get(mContext).checkInstructor();
|
||||||
container.post(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
netHandler.post(imUserInfoRunnable);
|
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();
|
MessageIMManager.get(mContext).getSystemMessages();
|
||||||
}
|
|
||||||
});
|
|
||||||
LiveNetManager.get(mContext)
|
LiveNetManager.get(mContext)
|
||||||
.getIsAnchor(new com.yunbao.common.http.base.HttpCallback<MessageChatIsAnchor>() {
|
.getIsAnchor(new com.yunbao.common.http.base.HttpCallback<MessageChatIsAnchor>() {
|
||||||
@Override
|
@Override
|
||||||
@ -262,7 +361,11 @@ public class MainMessageViewHolder extends AbsMainViewHolder {
|
|||||||
});
|
});
|
||||||
if (data.getIsAnchor() == 1) {
|
if (data.getIsAnchor() == 1) {
|
||||||
more.setVisibility(View.VISIBLE);
|
more.setVisibility(View.VISIBLE);
|
||||||
|
viewPager.setUserInputEnabled(true);
|
||||||
|
mIndicator.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
IMLoginManager.get(mContext)
|
||||||
|
.setAnchorB(data.getIsAnchor());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -143,7 +143,6 @@
|
|||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="94dp"
|
android:layout_height="94dp"
|
||||||
@ -289,26 +288,45 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
android:id="@+id/line"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="20dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:layout_marginBottom="20dp"
|
android:layout_marginBottom="5dp"
|
||||||
android:background="#FFE9F6" />
|
android:background="#FFE9F6" />
|
||||||
<!-- 此容器用于动态放置 fragment-->
|
|
||||||
<FrameLayout
|
<net.lucode.hackware.magicindicator.MagicIndicator
|
||||||
android:id="@+id/container"
|
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_width="match_parent"
|
||||||
android:layout_height="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
|
<LinearLayout
|
||||||
android:id="@+id/lt_nodata_msg"
|
android:id="@+id/lt_nodata_msg"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="0dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:visibility="visible">
|
android:visibility="gone">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -6,26 +6,48 @@
|
|||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/relativeLayout"
|
android:id="@+id/relativeLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="52dp"
|
android:layout_height="52dp"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="30dp"
|
||||||
android:paddingTop="24dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="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
|
<TextView
|
||||||
android:id="@+id/titleView"
|
android:id="@+id/titleView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_marginStart="20dp"
|
||||||
|
android:clipChildren="true"
|
||||||
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:maxWidth="245dp"
|
||||||
|
android:maxLines="1"
|
||||||
android:textColor="@color/textColor"
|
android:textColor="@color/textColor"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:textStyle="bold"
|
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
|
<ImageView
|
||||||
android:id="@+id/btn_back"
|
android:id="@+id/btn_back"
|
||||||
@ -33,17 +55,10 @@
|
|||||||
android:layout_height="40dp"
|
android:layout_height="40dp"
|
||||||
android:onClick="backClick"
|
android:onClick="backClick"
|
||||||
android:scaleType="center"
|
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
|
<ImageView
|
||||||
android:id="@+id/img_more"
|
android:id="@+id/img_more"
|
||||||
@ -53,8 +68,11 @@
|
|||||||
android:padding="9dp"
|
android:padding="9dp"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
android:src="@mipmap/btn_more_black"
|
android:src="@mipmap/btn_more_black"
|
||||||
android:visibility="visible" />
|
android:visibility="visible"
|
||||||
</RelativeLayout>
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/userCard"
|
android:id="@+id/userCard"
|
||||||
@ -106,26 +124,35 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/rc_conversation_portrait" />
|
app:layout_constraintTop_toBottomOf="@+id/rc_conversation_portrait" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</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:id="@+id/userName"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="25dp"
|
android:maxWidth="228dp"
|
||||||
android:layout_marginTop="60dp"
|
android:ellipsize="end"
|
||||||
android:text="TextView"
|
android:maxLines="2"
|
||||||
android:textColor="#333333"
|
android:textColor="#333333"
|
||||||
android:textSize="16sp"
|
android:textSize="15sp"
|
||||||
app:layout_constraintStart_toStartOf="@+id/imageView"
|
tools:text="1234567890123456789012345" />
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="5dp"
|
android:layout_marginStart="5dp"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/userName"
|
android:visibility="visible">
|
||||||
app:layout_constraintStart_toEndOf="@+id/userName"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/userName">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/user_status"
|
android:id="@+id/user_status"
|
||||||
@ -145,6 +172,8 @@
|
|||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</com.yunbao.common.views.CustomLayout>
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/info"
|
android:id="@+id/info"
|
||||||
@ -154,8 +183,8 @@
|
|||||||
android:text="@string/activity_msg_chat_top_tip1"
|
android:text="@string/activity_msg_chat_top_tip1"
|
||||||
android:textColor="#777777"
|
android:textColor="#777777"
|
||||||
android:textSize="11sp"
|
android:textSize="11sp"
|
||||||
app:layout_constraintStart_toStartOf="@+id/userName"
|
app:layout_constraintStart_toStartOf="@+id/userNameLayout"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/userName" />
|
app:layout_constraintTop_toBottomOf="@+id/userNameLayout" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@ -170,15 +199,18 @@
|
|||||||
android:layout_height="20dp"
|
android:layout_height="20dp"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="4dp"
|
||||||
app:srcCompat="@mipmap/bg_msg_chat_title_gift" />
|
app:srcCompat="@mipmap/bg_msg_chat_title_gift" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/user_auth_status"
|
android:id="@+id/user_auth_status"
|
||||||
android:layout_width="84dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="20dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginStart="5dp"
|
android:layout_marginStart="5dp"
|
||||||
android:scaleType="fitStart"
|
android:scaleType="fitStart"
|
||||||
app:srcCompat="@mipmap/ic_chat_auth"
|
app:srcCompat="@mipmap/ic_chat_auth"
|
||||||
tools:layout_editor_absoluteX="124dp"
|
tools:layout_editor_absoluteX="124dp"
|
||||||
tools:layout_editor_absoluteY="17dp" />
|
tools:layout_editor_absoluteY="17dp"
|
||||||
|
tools:layout_height="20dp"
|
||||||
|
tools:layout_width="84dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -187,9 +219,9 @@
|
|||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
|
android:maxLines="2"
|
||||||
android:text="个性签名给性签名个性签名给性签名个性签名给性签名"
|
android:text="个性签名给性签名个性签名给性签名个性签名给性签名"
|
||||||
android:textColor="#333333"
|
android:textColor="#333333"
|
||||||
android:maxLines="2"
|
|
||||||
android:textSize="13sp"
|
android:textSize="13sp"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/constraintLayout6"
|
app:layout_constraintEnd_toStartOf="@+id/constraintLayout6"
|
||||||
app:layout_constraintStart_toStartOf="@+id/info"
|
app:layout_constraintStart_toStartOf="@+id/info"
|
||||||
|
Loading…
Reference in New Issue
Block a user