Browse Source

修改IM 网络教室 直播间模块,增加学生端机构端模块

Pq 1 year ago
parent
commit
3aa129fd47
100 changed files with 810 additions and 17 deletions
  1. 1 1
      BaseLibrary/src/main/java/com/cooleshow/base/bean/TeachableInstrumentBean.java
  2. 11 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/AppManager.kt
  3. 26 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/BaseConstant.java
  4. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java
  5. 2 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/Constants.java
  6. 55 0
      BaseLibrary/src/main/java/com/cooleshow/base/constanst/StyleConfig.java
  7. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/data/net/CommonParamsHelper.java
  8. 11 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  9. 13 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/GlideImageLoaderUtils.java
  10. 1 1
      BaseLibrary/src/main/java/com/cooleshow/base/utils/JumpUtils.java
  11. 64 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/LOG.java
  12. 10 10
      BaseLibrary/src/main/java/com/cooleshow/base/utils/NetworkUtilsV2.java
  13. 12 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/TimeUtils.java
  14. 17 0
      BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/QMUIDisplayHelper.java
  15. 129 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/ClearEditText.java
  16. 46 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/CustomLoadMoreView.java
  17. 24 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/CustomSuspensionDecoration.java
  18. 34 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/DialogUtil.java
  19. 10 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/EmptyViewLayout.java
  20. 2 1
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java
  21. 11 0
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/CommonConfirmDialog.java
  22. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_arrow_down3.png
  23. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_check_select.png
  24. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_clear_edit_content.png
  25. BIN
      BaseLibrary/src/main/res/drawable-xhdpi/icon_img_check.png
  26. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_arrow_down3.png
  27. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_check_select.png
  28. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_clear_edit_content.png
  29. BIN
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_img_check.png
  30. 3 3
      BaseLibrary/src/main/res/drawable/pg_stu.xml
  31. 5 0
      BaseLibrary/src/main/res/drawable/shape_fe2451_39dp.xml
  32. 78 0
      BaseLibrary/src/main/res/layout/view_custom_loadmore_layout.xml
  33. 5 0
      BaseLibrary/src/main/res/values/attrs.xml
  34. 1 1
      BaseLibrary/src/main/res/values/colors.xml
  35. 15 0
      BaseLibrary/src/main/res/values/styles.xml
  36. 12 0
      TUIKit/.gitignore
  37. 33 0
      TUIKit/README.md
  38. 38 0
      TUIKit/README_ZH.md
  39. 15 0
      TUIKit/TIMCommon/.gitignore
  40. 1 0
      TUIKit/TIMCommon/timcommon/.gitignore
  41. 56 0
      TUIKit/TIMCommon/timcommon/build.gradle
  42. 0 0
      TUIKit/TIMCommon/timcommon/consumer-rules.pro
  43. 21 0
      TUIKit/TIMCommon/timcommon/proguard-rules.pro
  44. 46 0
      TUIKit/TIMCommon/timcommon/src/main/AndroidManifest.xml
  45. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[NO]@2x.png
  46. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[OK]@2x.png
  47. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[下雨]@2x.png
  48. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[么么哒]@2x.png
  49. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[乒乓]@2x.png
  50. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[便便]@2x.png
  51. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[信封]@2x.png
  52. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[偷笑]@2x.png
  53. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[傲慢]@2x.png
  54. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[再见]@2x.png
  55. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[冷汗]@2x.png
  56. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[凋谢]@2x.png
  57. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[刀]@2x.png
  58. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[删除]@2x.png
  59. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[勾引]@2x.png
  60. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[发呆]@2x.png
  61. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[发抖]@2x.png
  62. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[可怜]@2x.png
  63. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[可爱]@2x.png
  64. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[右哼哼]@2x.png
  65. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[右太极]@2x.png
  66. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[右车头]@2x.png
  67. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[吐]@2x.png
  68. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[吓]@2x.png
  69. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[咒骂]@2x.png
  70. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[咖啡]@2x.png
  71. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[啤酒]@2x.png
  72. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[嘘]@2x.png
  73. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[回头]@2x.png
  74. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[困]@2x.png
  75. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[坏笑]@2x.png
  76. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[多云]@2x.png
  77. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[大兵]@2x.png
  78. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[大哭]@2x.png
  79. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[太阳]@2x.png
  80. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[奋斗]@2x.png
  81. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[奶瓶]@2x.png
  82. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[委屈]@2x.png
  83. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[害羞]@2x.png
  84. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[尴尬]@2x.png
  85. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[左哼哼]@2x.png
  86. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[左太极]@2x.png
  87. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[左车头]@2x.png
  88. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[差劲]@2x.png
  89. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[弱]@2x.png
  90. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[强]@2x.png
  91. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[彩带]@2x.png
  92. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[彩球]@2x.png
  93. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[得意]@2x.png
  94. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[微笑]@2x.png
  95. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[心碎了]@2x.png
  96. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[快哭了]@2x.png
  97. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[怄火]@2x.png
  98. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[怒]@2x.png
  99. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[惊恐]@2x.png
  100. BIN
      TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[惊讶]@2x.png

+ 1 - 1
student/src/main/java/com/cooleshow/student/bean/TeachableInstrumentBean.java → BaseLibrary/src/main/java/com/cooleshow/base/bean/TeachableInstrumentBean.java

@@ -1,4 +1,4 @@
-package com.cooleshow.student.bean;
+package com.cooleshow.base.bean;
 
 import java.io.Serializable;
 import java.util.List;

+ 11 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/AppManager.kt

@@ -57,4 +57,15 @@ class AppManager private constructor(){
         activityManager.killBackgroundProcesses(context.packageName)
         System.exit(0)
     }
+
+    /**
+     * 结束当前Activity(堆栈中最后一个压入的)
+     */
+    fun getTopActivity(): Activity? {
+        var activity: Activity? = null
+        if (activityStack!= null && !activityStack.isEmpty()) {
+            activity = activityStack.lastElement()
+        }
+        return activity
+    }
 }

+ 26 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/BaseConstant.java

@@ -1,6 +1,9 @@
 package com.cooleshow.base.common;
 
+import android.text.TextUtils;
+
 import com.cooleshow.base.BuildConfig;
+import com.cooleshow.base.constanst.Constants;
 import com.tencent.open.im.IM;
 
 /**
@@ -24,6 +27,18 @@ public class BaseConstant {
     public final static String KEY_SP_TOKEN = "token";
     public final static String STUDENT_ID = "student_id";
     public final static String CHECK_ADDRESS = "check_address";
+    public static final String CLIENT_API_GROUP_NAME = getClientApiGroup();
+
+    public static final String CLIENT_TYPE = getClientType();
+    public static final String TEACHER_CLIENT_TYPE = "TEACHER";
+    public static final String STUDENT_CLIENT_TYPE = "STUDENT";
+
+    private static String getClientType() {
+        if (BaseApplication.Companion.isTeacherClient()) {
+            return TEACHER_CLIENT_TYPE;
+        }
+        return STUDENT_CLIENT_TYPE;
+    }
 
     /**
      * 获取图片验证码地址
@@ -43,4 +58,15 @@ public class BaseConstant {
         }
         return STUDENT_GROUP2;
     }
+
+    public static String getClientApiGroup() {
+        if (BaseApplication.Companion.isTeacherClient()) {
+            return TEACHER_GROUP2;
+        }
+        return STUDENT_GROUP2;
+    }
+
+    public static boolean isStudentClient() {
+        return !BaseApplication.Companion.isTeacherClient();
+    }
 }

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/WebConstants.java

@@ -14,6 +14,7 @@ public abstract class WebConstants {
     public static final String WEB_UA_PARAMS_TEACHER = ";COLEXIUTEACHER";
     public static final String WEB_JS_INTERFACE = "COLEXIU";
     public static final String WEB_URL = "web_url";//
+    public static final String WEB_TITLE = "title";//
     public static final String WEB_SOCKET_URL_TEST = "wss://dev.colexiu.com/audioAnalysis";
     public static final String WEB_SOCKET_URL_RELEASE = "wss://online.colexiu.com/audioAnalysis";
     public static final String WEB_SOCKET_URL_PRERELEASE = "wss://ponline.colexiu.com/audioAnalysis";

+ 2 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/Constants.java

@@ -12,6 +12,8 @@ public class Constants {
     public static final String COLEXIUAPPA = "COLEXIUAPPA";//H5 js接口注册interfaceName
     public static final int DEFAULT_DATA_SIZE = 10;//加载更多默认一页请求数据
     public static final String WHITE_BOARD_ORIENTATION = "WHITE_BOARD_ORIENTATION";
+    public static final String TARGET_ID_KEY = "targetId";
+    public static final String CONVERSATION_TYPE_KEY = "conversation";
     public static String HEADSET_PLUE_TAG = "";
     public static String COMMON_EXTRA_KEY = "memo";
 

+ 55 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/StyleConfig.java

@@ -0,0 +1,55 @@
+package com.cooleshow.base.constanst;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+
+import com.cooleshow.base.R;
+import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.utils.LOG;
+
+import static androidx.appcompat.widget.TintTypedArray.obtainStyledAttributes;
+
+/**
+ * Author by pq, Date on 2023/9/13.
+ */
+public class StyleConfig {
+    public static boolean isStudentStyle = true;
+    public static int default_main_color = R.color.colorAccent;
+
+    public static void setTheme(Activity activity) {
+        if (isStudentStyle) {
+            activity.setTheme(R.style.Student_NORMAL_STYLE);
+        } else {
+            activity.setTheme(R.style.Student_OTHER_STYLE);
+        }
+    }
+
+    public static int getMainColor(Activity context) {
+        TypedArray tyar = context.obtainStyledAttributes(new int[]{
+                R.attr.klx_main_color
+        });
+        int colorArrtValue = tyar.getColor(0, context.getResources().getColor(default_main_color));
+        tyar.recycle();
+        return colorArrtValue;
+    }
+
+    public static Drawable getMainBtBackground(Activity context) {
+        TypedArray tyar = context.obtainStyledAttributes(new int[]{
+                R.attr.klx_main_bt_background
+        });
+        Drawable drawable = tyar.getDrawable(0);
+        tyar.recycle();
+        return drawable;
+    }
+
+    public static Drawable getImgCheck(Context context) {
+        TypedArray tyar = context.obtainStyledAttributes(new int[]{
+                R.attr.klx_img_check
+        });
+        Drawable drawable = tyar.getDrawable(0);
+        tyar.recycle();
+        return drawable;
+    }
+}

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/data/net/CommonParamsHelper.java

@@ -15,6 +15,7 @@ import okhttp3.Request;
  */
 public class CommonParamsHelper {
     public static final String USER_TOKEN="Authorization";
+    public static final String TENANT_ID="coopId";
     private volatile static CommonParamsHelper mInstance;
     private final Map<String, String> commonParams = new HashMap();
     private Map<String, String> commonHeaderParams = new HashMap();

+ 11 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -13,6 +13,14 @@ object RouterPath {
         }
     }
 
+    class JGCenter {
+        companion object {
+            const val PATH_HOME = "/institution/home"
+            const val MINE_PERSONAL_SETTING = "/institution/mine/SettingActivity"
+
+        }
+    }
+
     //splash
     class SplashCenter {
         companion object {
@@ -27,6 +35,9 @@ object RouterPath {
             const val ACTIVITY_LIVE_ROOM_TEACHER = "/teacher/ui/live/LiveRoomActivity"
             const val TEACHER_MINE_CREATE_COURSE = "/teacher/ui/live/CreateLiveActivity"
             const val TEACHER_LIVE_LIST = "/teacher/ui/live/LiveListActivity"
+
+            const val ACTIVITY_TC_LIVE_ROOM_TEACHER = "/live/ui/TCTeacherLiveRoomActivity"
+            const val ACTIVITY_TT_LIVE_ROOM = "/live/ui/TCStudentLiveRoomActivity"
         }
     }
 

+ 13 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/GlideImageLoaderUtils.java

@@ -76,6 +76,19 @@ public class GlideImageLoaderUtils {
     /**
      * 加载图片(默认)
      */
+    public void loadImage(Context context, Object url, ImageView imageView,int defaultRes) {
+        RequestOptions options = new RequestOptions()
+                .centerCrop()
+                .placeholder(defaultRes) //占位图
+                .error(defaultRes)       //错误图
+                .diskCacheStrategy(DiskCacheStrategy.NONE);
+        Glide.with(context).load(url).apply(options).into(imageView);
+
+    }
+
+    /**
+     * 加载图片(默认)
+     */
     public void loadImageCenterInside(Context context, Object url, ImageView imageView) {
         RequestOptions options = new RequestOptions()
                 .centerInside()

+ 1 - 1
BaseLibrary/src/main/java/com/cooleshow/base/utils/JumpUtils.java

@@ -128,7 +128,7 @@ public class JumpUtils {
                             if (TextUtils.isEmpty(liveRoomId)) {
                                 return false;
                             }
-                            ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_LIVE_ROOM)
+                            ARouter.getInstance().build(RouterPath.LiveCenter.ACTIVITY_TT_LIVE_ROOM)
                                     .withString("roomid_key", liveRoomId)
                                     .navigation();
                             return true;

+ 64 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/LOG.java

@@ -0,0 +1,64 @@
+package com.cooleshow.base.utils;
+
+import android.util.Log;
+
+import com.cooleshow.base.BuildConfig;
+
+
+/**
+ * Author by pq, Date on 2023/6/25.
+ */
+public class LOG {
+    public static final String TAG = "pq_log";
+
+    private static final boolean DEBUG = BuildConfig.DEBUG;
+
+    public static void d(String msg) {
+        if (DEBUG) {
+            Log.d(TAG, msg);
+        }
+    }
+
+    public static void d(String tag,String msg) {
+        if (DEBUG) {
+            Log.d(tag, msg);
+        }
+    }
+
+
+    public static void e(String msg) {
+        if (DEBUG) {
+            Log.e(TAG, msg);
+        }
+    }
+
+    public static void e(String tag,String msg) {
+        if (DEBUG) {
+            Log.e(tag, msg);
+        }
+    }
+
+    public static void i(String msg) {
+        if (DEBUG) {
+            Log.i(TAG, msg);
+        }
+    }
+
+    public static void i(String tag,String msg) {
+        if (DEBUG) {
+            Log.i(tag, msg);
+        }
+    }
+
+    public static void v( String msg) {
+        if (DEBUG) {
+            Log.v(TAG, msg);
+        }
+    }
+
+    public static void w(String msg) {
+        if (DEBUG) {
+            Log.w(TAG, msg);
+        }
+    }
+}

+ 10 - 10
BaseLibrary/src/main/java/com/cooleshow/base/utils/NetworkUtils.java → BaseLibrary/src/main/java/com/cooleshow/base/utils/NetworkUtilsV2.java

@@ -51,9 +51,9 @@ import static android.content.Context.WIFI_SERVICE;
  *     desc  : utils about network
  * </pre>
  */
-public final class NetworkUtils {
+public final class NetworkUtilsV2 {
 
-    private NetworkUtils() {
+    private NetworkUtilsV2() {
         throw new UnsupportedOperationException("u can't instantiate me...");
     }
 
@@ -427,13 +427,13 @@ public final class NetworkUtils {
      *
      * @return type of network
      * <ul>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_ETHERNET} </li>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_WIFI    } </li>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_4G      } </li>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_3G      } </li>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_2G      } </li>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_UNKNOWN } </li>
-     * <li>{@link NetworkUtils.NetworkType#NETWORK_NO      } </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_ETHERNET} </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_WIFI    } </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_4G      } </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_3G      } </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_2G      } </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_UNKNOWN } </li>
+     * <li>{@link NetworkUtilsV2.NetworkType#NETWORK_NO      } </li>
      * </ul>
      */
     @RequiresPermission(ACCESS_NETWORK_STATE)
@@ -918,7 +918,7 @@ public final class NetworkUtils {
                     @Override
                     @RequiresPermission(ACCESS_NETWORK_STATE)
                     public void run() {
-                        NetworkType networkType = NetworkUtils.getNetworkType();
+                        NetworkType networkType = NetworkUtilsV2.getNetworkType();
                         if (mType == networkType) return;
                         mType = networkType;
                         if (networkType == NetworkType.NETWORK_NO) {

+ 12 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/TimeUtils.java

@@ -1653,4 +1653,16 @@ public final class TimeUtils {
         date = formatter.parse(strTime);
         return date;
     }
+
+    public static String secondToTime(int second) {
+//        int hour = second / 3600; // 得到分钟数
+//        second = second % 3600;//剩余的秒数
+        int minute = second / 60;//得到分
+        second = second % 60;//剩余的秒
+        return String.format(Locale.getDefault(), "%02d:%02d", minute, second);
+    }
+
+    public static String msToTime(int ms) {
+        return secondToTime(ms/1000);
+    }
 }

+ 17 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/helper/QMUIDisplayHelper.java

@@ -650,4 +650,21 @@ public class QMUIDisplayHelper {
     public static boolean xiaomiIsNotchSetToShowInSetting(Context context) {
         return Settings.Global.getInt(context.getContentResolver(), XIAOMI_DISPLAY_NOTCH_STATUS, 0) == 0;
     }
+
+    public static void hideStatusBar(Activity activity) {
+        if (activity == null) return;
+        Window window = activity.getWindow();
+        if (window == null) return;
+        // 隐藏状态栏
+        window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        window.getDecorView().setSystemUiVisibility(
+                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                        | View.SYSTEM_UI_FLAG_FULLSCREEN);
+        WindowManager.LayoutParams lp = window.getAttributes();
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+        }
+        window.setAttributes(lp);
+    }
 }

+ 129 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/ClearEditText.java

@@ -0,0 +1,129 @@
+package com.cooleshow.base.widgets;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.cooleshow.base.R;
+import com.cooleshow.base.utils.SizeUtils;
+
+import androidx.appcompat.widget.AppCompatEditText;
+import androidx.core.content.ContextCompat;
+import androidx.core.graphics.drawable.DrawableCompat;
+
+/**
+ * Author by pq, Date on 2023/2/15.
+ */
+public class ClearEditText extends AppCompatEditText implements View.OnTouchListener, View.OnFocusChangeListener, TextWatcher {
+
+    private Drawable mClearTextIcon;
+    private OnFocusChangeListener mOnFocusChangeListener;
+    private OnTouchListener mOnTouchListener;
+
+    public ClearEditText(final Context context) {
+        super(context);
+        init(context);
+    }
+
+    public ClearEditText(final Context context, final AttributeSet attrs) {
+        super(context, attrs);
+        init(context);
+    }
+
+    public ClearEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context);
+    }
+
+    private void init(final Context context) {
+        final Drawable drawable = ContextCompat.getDrawable(context, R.drawable.icon_clear_edit_content);
+        final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); //Wrap the drawable so that it can be tinted pre Lollipop
+        DrawableCompat.setTint(wrappedDrawable, getCurrentHintTextColor());
+        mClearTextIcon = wrappedDrawable;
+        mClearTextIcon.setBounds(0, 0, mClearTextIcon.getIntrinsicWidth(), mClearTextIcon.getIntrinsicHeight());
+        setClearIconVisible(false);
+        super.setOnTouchListener(this);
+        super.setOnFocusChangeListener(this);
+        addTextChangedListener(this);
+        setCompoundDrawablePadding(SizeUtils.dp2px(5));
+        setPadding(getPaddingLeft(),getPaddingTop(),getPaddingRight()+SizeUtils.dp2px(5),getPaddingBottom());
+    }
+
+    @Override
+    public void setOnFocusChangeListener(OnFocusChangeListener l) {
+        mOnFocusChangeListener = l;
+    }
+
+    @Override
+    public void setOnTouchListener(OnTouchListener l) {
+        mOnTouchListener = l;
+    }
+
+    @Override
+    public void onFocusChange(View v, boolean hasFocus) {
+        if (hasFocus) {
+            setClearIconVisible(getText().length() > 0);
+        } else {
+            setClearIconVisible(false);
+        }
+        if (mOnFocusChangeListener != null) {
+            mOnFocusChangeListener.onFocusChange(v, hasFocus);
+        }
+    }
+
+    @Override
+    public boolean onTouch(View view, MotionEvent motionEvent) {
+        final int x = (int) motionEvent.getX();
+        if (mClearTextIcon.isVisible() && x > getWidth() - getPaddingRight() - mClearTextIcon.getIntrinsicWidth()) {
+            if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
+                setError(null);
+                setText("");
+            }
+            return true;
+        }
+        return mOnTouchListener != null && mOnTouchListener.onTouch(view, motionEvent);
+    }
+
+    @Override
+    public final void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
+        if (isFocused()) {
+            setClearIconVisible(text.length() > 0);
+        }
+    }
+
+    @Override
+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+    }
+
+    @Override
+    public void afterTextChanged(Editable s) {
+        if (mTextWatchListener != null) {
+            mTextWatchListener.afterTextChanged(s);
+        }
+    }
+
+    private void setClearIconVisible(final boolean visible) {
+        mClearTextIcon.setVisible(visible, false);
+        final Drawable[] compoundDrawables = getCompoundDrawables();
+        setCompoundDrawables(
+                compoundDrawables[0],
+                compoundDrawables[1],
+                visible ? mClearTextIcon : null,
+                compoundDrawables[3]);
+    }
+
+    private OnTextWatchListener mTextWatchListener;
+
+    public void setTextWatchListener(OnTextWatchListener textWatchListener) {
+        mTextWatchListener = textWatchListener;
+    }
+
+    public interface OnTextWatchListener{
+        void afterTextChanged(Editable s);
+    }
+}

+ 46 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/CustomLoadMoreView.java

@@ -0,0 +1,46 @@
+package com.cooleshow.base.widgets;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.chad.library.adapter.base.loadmore.BaseLoadMoreView;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.R;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2023/2/28.
+ */
+public class CustomLoadMoreView extends BaseLoadMoreView {
+    @NonNull
+    @Override
+    public View getLoadComplete(@NonNull BaseViewHolder baseViewHolder) {
+        return baseViewHolder.getView(R.id.load_more_load_complete_view);
+    }
+
+    @NonNull
+    @Override
+    public View getLoadEndView(@NonNull BaseViewHolder baseViewHolder) {
+        return baseViewHolder.getView(R.id.load_more_load_end_view);
+    }
+
+    @NonNull
+    @Override
+    public View getLoadFailView(@NonNull BaseViewHolder baseViewHolder) {
+        return baseViewHolder.getView(R.id.load_more_load_fail_view);
+    }
+
+    @NonNull
+    @Override
+    public View getLoadingView(@NonNull BaseViewHolder baseViewHolder) {
+        return baseViewHolder.getView(R.id.load_more_loading_view);
+    }
+
+    @NonNull
+    @Override
+    public View getRootView(@NonNull ViewGroup viewGroup) {
+        return LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.view_custom_loadmore_layout, viewGroup, false);
+    }
+}

+ 24 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/CustomSuspensionDecoration.java

@@ -0,0 +1,24 @@
+package com.cooleshow.base.widgets;
+
+import android.content.Context;
+import android.graphics.Canvas;
+
+import com.mcxtzhang.indexlib.suspension.ISuspensionInterface;
+import com.mcxtzhang.indexlib.suspension.SuspensionDecoration;
+
+import java.util.List;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * Author by pq, Date on 2023/3/27.
+ */
+public class CustomSuspensionDecoration extends SuspensionDecoration {
+    public CustomSuspensionDecoration(Context context, List<? extends ISuspensionInterface> datas) {
+        super(context, datas);
+    }
+
+    @Override
+    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
+    }
+}

+ 34 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/DialogUtil.java

@@ -2,6 +2,7 @@ package com.cooleshow.base.widgets;
 
 import android.view.Gravity;
 import android.view.View;
+import android.widget.ImageView;
 import android.widget.TextView;
 
 import androidx.fragment.app.FragmentManager;
@@ -38,6 +39,39 @@ public class DialogUtil {
                 .show(fragmentmanager);
     }
 
+    public static void showInCenterWithClose(FragmentManager fragmentmanager, int resourcesId, String title, String content, OnDialogButtonClickListener onDialogButtonClickListener) {
+        if (fragmentmanager == null) {
+            return;
+        }
+        CommonDialog.init().setLayoutId(resourcesId)
+                .setConvertListener(new ViewConvertListener() {
+                    @Override
+                    public void convertView(ViewHolder holder, BaseDialog dialog) {
+                        TextView tvTitle = holder.getView(R.id.tv_title);
+                        TextView tvContent = holder.getView(R.id.tv_content);
+                        TextView btncancel = holder.getView(R.id.btn_cancel);
+                        TextView btnCommit = holder.getView(R.id.btn_commit);
+                        ImageView iv_live_common_popu_close = holder.getView(R.id.iv_close);
+                        tvTitle.setText(title);
+                        tvContent.setText(content);
+                        iv_live_common_popu_close.setOnClickListener(v -> dialog.dismiss());
+                        btncancel.setOnClickListener(view -> {
+                            onDialogButtonClickListener.onCancel(view);
+                            dialog.dismiss();
+                        });
+                        btnCommit.setOnClickListener(view -> {
+                            onDialogButtonClickListener.onCommit(view);
+                            dialog.dismiss();
+                        });
+                    }
+                })
+                .setDimAmount(0.2f)
+                .setOutCancel(false)
+                .setGravity(Gravity.CENTER)
+
+                .show(fragmentmanager);
+    }
+
     /*居中显示*/
     public static void showInCenter(FragmentManager fragmentmanager, int resourcesId, String title, String content, OnDialogButtonClickListener onDialogButtonClickListener) {
         if (fragmentmanager == null) {

+ 10 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/EmptyViewLayout.java

@@ -1,6 +1,7 @@
 package com.cooleshow.base.widgets;
 
 import android.content.Context;
+import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -52,6 +53,15 @@ public class EmptyViewLayout extends LinearLayout {
         }
     }
 
+    public void setContent(Drawable drawableRes, String text) {
+        if (mIvEmptyIcon != null) {
+            mIvEmptyIcon.setImageDrawable(drawableRes);
+        }
+        if (mTvEmptyTip != null) {
+            mTvEmptyTip.setText(text);
+        }
+    }
+
     public void hideIcon() {
         if (mIvEmptyIcon != null) {
             mIvEmptyIcon.setVisibility(View.GONE);

+ 2 - 1
BaseLibrary/src/main/java/com/cooleshow/base/widgets/InputBar.java

@@ -3,6 +3,7 @@ package com.cooleshow.base.widgets;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.widget.ImageView;
@@ -108,10 +109,10 @@ public class InputBar extends LinearLayout implements OnEmojiPopupShownListener,
         if (etInput.getText() != null) {
             message = etInput.getText().toString().trim();
         }
-        etInput.setText("");
 
         if (inputBarListener != null) {
             boolean isSuccess = inputBarListener.onClickSend(message);
+            Log.i("pq","sendMSG isSuccess:"+isSuccess);
             if (isSuccess) {
                 etInput.setText("");
             }

+ 11 - 0
BaseLibrary/src/main/java/com/cooleshow/base/widgets/dialog/CommonConfirmDialog.java

@@ -18,6 +18,7 @@ public class CommonConfirmDialog extends Dialog {
     private TextView mTvContent;
     private TextView mTvCancel;
     private TextView mTvConfirm;
+    private View mViewLine1;
 
     public CommonConfirmDialog(@NonNull Context context) {
         super(context, R.style.BaseDialog);
@@ -30,6 +31,7 @@ public class CommonConfirmDialog extends Dialog {
         mTvContent = findViewById(R.id.tv_content);
         mTvCancel = findViewById(R.id.tv_cancel);
         mTvConfirm = findViewById(R.id.tv_confirm);
+        mViewLine1 = findViewById(R.id.view_line1);
         mTvCancel.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -76,4 +78,13 @@ public class CommonConfirmDialog extends Dialog {
             mTvConfirm.setOnClickListener(listener);
         }
     }
+
+    public void hideCancel() {
+        if (mViewLine1 != null) {
+            mViewLine1.setVisibility(View.GONE);
+        }
+        if (mTvCancel != null) {
+            mTvCancel.setVisibility(View.GONE);
+        }
+    }
 }

BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_arrow_down3.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_check_select.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_clear_edit_content.png


BIN
BaseLibrary/src/main/res/drawable-xhdpi/icon_img_check.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_arrow_down3.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_check_select.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_clear_edit_content.png


BIN
BaseLibrary/src/main/res/drawable-xxhdpi/icon_img_check.png


+ 3 - 3
BaseLibrary/src/main/res/drawable/pg_stu.xml

@@ -15,9 +15,9 @@
             <shape>
                 <corners android:radius="2dp" />
                 <gradient
-                    android:centerColor="@color/colorPrimaryStudent"
-                    android:endColor="@color/colorPrimaryStudent"
-                    android:startColor="@color/colorPrimaryStudent" />
+                    android:centerColor="?attr/klx_main_color2"
+                    android:endColor="?attr/klx_main_color2"
+                    android:startColor="?attr/klx_main_color2" />
 
             </shape>
         </clip>

+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_fe2451_39dp.xml

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

+ 78 - 0
BaseLibrary/src/main/res/layout/view_custom_loadmore_layout.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/dp_40">
+
+    <LinearLayout
+        android:id="@+id/load_more_loading_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:orientation="horizontal">
+
+        <ProgressBar
+            android:id="@+id/loading_progress"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            style="?android:attr/progressBarStyleSmall"
+            android:layout_marginRight="@dimen/dp_4"/>
+
+        <TextView
+            android:id="@+id/loading_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/dp_4"
+            android:text="@string/brvah_loading"
+            android:textSize="@dimen/sp_12"
+            android:textColor="@color/color_aaaaaa" />
+    </LinearLayout>
+
+    <FrameLayout
+        android:id="@+id/load_more_load_fail_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone">
+
+
+        <TextView
+            android:text="加载失败"
+            android:id="@+id/tv_prompt"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:textSize="@dimen/sp_12"
+            android:textColor="@color/color_aaaaaa"/>
+
+    </FrameLayout>
+
+    <FrameLayout
+        android:id="@+id/load_more_load_complete_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:text="加载完成"
+            android:textSize="@dimen/sp_12"
+            android:textColor="@color/color_aaaaaa"/>
+    </FrameLayout>
+
+    <FrameLayout
+        android:id="@+id/load_more_load_end_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:text="已经全部加载完毕"
+            android:textSize="@dimen/sp_12"
+            android:textColor="@color/color_aaaaaa"/>
+    </FrameLayout>
+</FrameLayout>

+ 5 - 0
BaseLibrary/src/main/res/values/attrs.xml

@@ -59,4 +59,9 @@
 
         <attr name="max_height" format="dimension|reference" />
     </declare-styleable>
+
+    <attr name="klx_main_color" format="color" />
+    <attr name="klx_main_color2" format="color" />
+    <attr name="klx_main_bt_background" format="reference" />
+    <attr name="klx_img_check" format="reference" />
 </resources>

+ 1 - 1
BaseLibrary/src/main/res/values/colors.xml

@@ -165,8 +165,8 @@
     <color name="color_ffebd3">#FFEBD3</color>
     <color name="color_ffd5aa">#FFD5AA</color>
     <color name="color_ff8000">#FF8000</color>
+    <color name="color_aaaaaa">#aaaaaa</color>
     <color name="color_fe2451">#FE2451</color>
-
     <color name="color_25292e">#25292E</color>
     <color name="color_F8F8F8">#F8F8F8</color>
     <color name="color_d1d1d1">#D1D1D1</color>

+ 15 - 0
BaseLibrary/src/main/res/values/styles.xml

@@ -492,4 +492,19 @@
         <!-- 还可以加入一些弹出和退出的动画 (lan)-->
         <item name="android:windowAnimationStyle">@style/BottomAnimation</item>
     </style>
+
+
+    <style name="Student_NORMAL_STYLE" parent="AppTheme">
+        <item name="klx_main_color">@color/color_2dc7aa</item>
+        <item name="klx_main_color2">@color/color_01c0b5</item>
+        <item name="klx_img_check">@drawable/icon_check_select</item>
+        <item name="klx_main_bt_background">@drawable/shape_2dc7aa_39dp</item>
+    </style>
+
+    <style name="Student_OTHER_STYLE" parent="AppTheme">
+        <item name="klx_main_color">@color/color_fe2451</item>
+        <item name="klx_main_color2">@color/color_fe2451</item>
+        <item name="klx_img_check">@drawable/icon_img_check</item>
+        <item name="klx_main_bt_background">@drawable/shape_fe2451_39dp</item>
+    </style>
 </resources>

+ 12 - 0
TUIKit/.gitignore

@@ -0,0 +1,12 @@
+# OS X Files
+.DS_Store
+**/.DS_Store
+
+
+# Gradle files
+*/Android/.gradle/
+
+# IDEA Files
+*/Android/.idea/
+
+*/Android/local.properties

+ 33 - 0
TUIKit/README.md

@@ -0,0 +1,33 @@
+English | [简体中文](./README_ZH.md)
+
+# TUIKit (Android)
+
+## Download Links
+
+[Latest TUIChat download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIChat.zip)
+
+[Latest TUIConversation download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIConversation.zip)
+
+[Latest TUIContact download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIContact.zip)
+
+[Latest TUIGroup download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIGroup.zip)
+
+[Latest TUISearch download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUISearch.zip)
+
+[Latest TUICallKit download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUICallKit.zip)
+
+[Latest TUIOfflinePush download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIOfflinePush.zip)
+
+[Latest TUICommunity download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUICommunity.zip)
+
+[Latest TUITranslationPlugin download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUITranslationPlugin.zip)
+
+[Latest TUICore download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUICore.zip)
+
+[Latest TIMCommon download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TIMCommon.zip)
+
+[Latest TUIRoomKit download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIRoomKit.zip)
+
+[Latest TUIVideoSeat download](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIVideoSeat.zip)
+
+If you encounter a TUIKit bug, please submit a pull request. After successful merging, we will update the TUIKit library in time.

+ 38 - 0
TUIKit/README_ZH.md

@@ -0,0 +1,38 @@
+[English](./README.md) | 简体中文
+
+# TUIKit(Android)
+
+## 下载地址
+
+[最新 TUIChat 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIChat.zip)
+
+[最新 TUIConversation 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIConversation.zip)
+
+[最新 TUIContact 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIContact.zip)
+
+[最新 TUIGroup 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIGroup.zip)
+
+[最新 TUISearch 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUISearch.zip)
+
+[最新 TUICallKit 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUICallKit.zip)
+
+[最新 TUIOfflinePush 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIOfflinePush.zip)
+
+[最新 TUICommunity 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUICommunity.zip)
+
+[最新 TUITranslation 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUITranslation.zip)
+
+[最新 TUICore 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUICore.zip)
+
+[最新 TIMCommon 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TIMCommon.zip)
+
+[最新 TUIRoomKit 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIRoomKit.zip)
+
+[最新 TUIVideoSeat 下载](https://im.sdk.cloud.tencent.cn/download/tuikit/7.3.4358/android/TUIVideoSeat.zip)
+## 交流&反馈
+
+如果您遇到 TUIKit 的 Bug,欢迎提交  Pull Request,Merge 成功后我们会及时更新 TUIKit 库 。
+
+欢迎加入 QQ 群进行技术交流和反馈问题。
+
+![img]( https://im.sdk.qcloud.com/tools/resource/officialwebsite/pictures/doc_tuikit_qq_group.jpg)

+ 15 - 0
TUIKit/TIMCommon/.gitignore

@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties

+ 1 - 0
TUIKit/TIMCommon/timcommon/.gitignore

@@ -0,0 +1 @@
+/build

+ 56 - 0
TUIKit/TIMCommon/timcommon/build.gradle

@@ -0,0 +1,56 @@
+plugins {
+    id 'com.android.library'
+}
+
+android {
+    compileSdkVersion 30
+    buildToolsVersion "30.0.3"
+
+    defaultConfig {
+        minSdkVersion 19
+        targetSdkVersion 30
+        versionCode 1
+        versionName "1.0"
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+        }
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
+    // 主题资源文件夹
+    sourceSets {
+        main {
+            res.srcDirs += "src/main/res-light"
+            res.srcDirs += "src/main/res-lively"
+            res.srcDirs += "src/main/res-serious"
+        }
+    }
+}
+
+afterEvaluate {
+    generateReleaseBuildConfig.enabled = false
+    generateDebugBuildConfig.enabled = false
+}
+
+dependencies {
+    /*plugin-build-Begin
+
+    compileOnly fileTree(include: ['*.jar','*.aar'], dir: '../../../../tuikit/android/libs')
+
+    plugin-build-End*/
+
+    api project(':tuicore')
+    implementation 'com.google.code.gson:gson:2.9.1'
+    implementation 'androidx.appcompat:appcompat:1.3.1'
+    implementation 'com.github.bumptech.glide:glide:4.12.0'
+    implementation 'androidx.recyclerview:recyclerview:1.2.1'
+    implementation 'androidx.viewpager2:viewpager2:1.0.0'
+    implementation project(path: ':BaseLibrary')
+}
+

+ 0 - 0
TUIKit/TIMCommon/timcommon/consumer-rules.pro


+ 21 - 0
TUIKit/TIMCommon/timcommon/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 46 - 0
TUIKit/TIMCommon/timcommon/src/main/AndroidManifest.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="com.tencent.qcloud.tuikit.timcommon"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <application >
+
+        <activity
+            android:name="com.tencent.qcloud.tuikit.timcommon.component.activities.SelectionActivity"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.tencent.qcloud.tuikit.timcommon.component.activities.ImageSelectActivity"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name="com.tencent.qcloud.tuikit.timcommon.component.activities.SelectionMinimalistActivity"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.tencent.qcloud.tuikit.timcommon.component.activities.ImageSelectMinimalistActivity"
+            android:screenOrientation="portrait" />
+
+        <activity android:name=".util.ActivityResultResolver$ActivityResultProxyActivity"
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:multiprocess="true"
+            android:launchMode="singleTask"
+            android:theme="@style/CoreActivityTranslucent"
+            android:windowSoftInputMode="stateHidden|stateAlwaysHidden"/>
+        
+        <provider
+            android:name=".util.FileProvider"
+            android:authorities="${applicationId}.timcommon.fileprovider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/file_paths_public"/>
+        </provider>
+
+        <provider
+            android:name=".TIMCommonService"
+            android:authorities="${applicationId}.TIMCommon.Init"
+            android:initOrder="1"
+            android:enabled="true"
+            android:exported="false"/>
+
+    </application>
+</manifest>

BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[NO]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[OK]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[下雨]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[么么哒]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[乒乓]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[便便]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[信封]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[偷笑]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[傲慢]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[再见]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[冷汗]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[凋谢]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[刀]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[删除]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[勾引]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[发呆]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[发抖]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[可怜]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[可爱]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[右哼哼]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[右太极]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[右车头]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[吐]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[吓]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[咒骂]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[咖啡]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[啤酒]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[嘘]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[回头]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[困]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[坏笑]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[多云]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[大兵]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[大哭]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[太阳]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[奋斗]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[奶瓶]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[委屈]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[害羞]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[尴尬]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[左哼哼]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[左太极]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[左车头]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[差劲]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[弱]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[强]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[彩带]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[彩球]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[得意]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[微笑]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[心碎了]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[快哭了]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[怄火]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[怒]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[惊恐]@2x.png


BIN
TUIKit/TIMCommon/timcommon/src/main/assets/emoji/[惊讶]@2x.png


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