zhaoyadi 2 лет назад
Родитель
Сommit
b4cac8e4fa
70 измененных файлов с 677 добавлено и 208 удалено
  1. 22 0
      .idea/misc.xml
  2. 0 101
      .idea/modules/app/Demo.app.iml
  3. 1 12
      kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/player/FullScreenPlayer.java
  4. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/player/WindowPlayer.java
  5. 2 3
      kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/view/PlayerRelativeLayout.java
  6. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_btn_back_play.png
  7. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_ic_player_lock.png
  8. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_ic_player_unlock.png
  9. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_ic_replay.png
  10. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_ic_vod_fullscreen.png
  11. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_ic_vod_pause_normal.png
  12. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_play_next.png
  13. BIN
      kit/src/main/res/drawable-xxhdpi/superplayer_top_shadow.png
  14. 0 0
      kit/src/main/res/drawable/item_vod.xml
  15. 0 0
      kit/src/main/res/drawable/list_progress_bar.xml
  16. 0 0
      kit/src/main/res/drawable/player_full_bg.xml
  17. 0 0
      kit/src/main/res/drawable/player_window_bg.xml
  18. 0 0
      kit/src/main/res/drawable/shadow_bottom.xml
  19. 0 0
      kit/src/main/res/drawable/unlock_bg.xml
  20. 0 0
      kit/src/main/res/drawable/vod_video_progress.xml
  21. 2 2
      kit/src/main/res/layout/superplayer_item_vod.xml
  22. 0 26
      kit/src/main/res/layout/superplayer_quality_popup_view.xml
  23. 1 1
      kit/src/main/res/layout/superplayer_video_progress_layout.xml
  24. 1 1
      kit/src/main/res/layout/superplayer_video_volume_brightness_progress_layout.xml
  25. 2 2
      kit/src/main/res/layout/superplayer_vod_player_fullscreen.xml
  26. 2 2
      kit/src/main/res/layout/superplayer_vod_player_window.xml
  27. 0 0
      kit/src/main/res/mipmap/default_cover_dark.png
  28. 0 0
      kit/src/main/res/mipmap/default_cover_light.png
  29. 0 13
      kit/src/main/res/values/colors.xml
  30. 1 1
      kit/src/main/res/values/styles.xml
  31. 4 0
      ui/build.gradle
  32. 10 4
      ui/src/main/AndroidManifest.xml
  33. 21 15
      ui/src/main/java/com/tencent/liteav/demo/player/PlayerActivity.java
  34. 11 1
      ui/src/main/java/com/tencent/liteav/demo/player/PlayerMenu.java
  35. 117 0
      ui/src/main/java/com/tencent/liteav/demo/player/PlayerVerify.java
  36. 0 13
      ui/src/main/java/com/tencent/liteav/demo/player/SuperPlayerVerify.java
  37. 3 3
      ui/src/main/java/com/tencent/liteav/demo/player/ui/PlayerListAdapter.java
  38. 1 1
      ui/src/main/java/com/tencent/liteav/demo/player/ui/PlayerListDecoration.java
  39. 2 2
      ui/src/main/java/com/tencent/liteav/demo/player/util/PlayerModelProvider.java
  40. 18 0
      ui/src/main/res/drawable/sign_equal.xml
  41. 18 0
      ui/src/main/res/drawable/sign_multiply.xml
  42. 18 0
      ui/src/main/res/drawable/sign_plus.xml
  43. 10 0
      ui/src/main/res/drawable/verify_background.xml
  44. 32 0
      ui/src/main/res/drawable/verify_button_background.xml
  45. 20 0
      ui/src/main/res/drawable/verify_check_background.xml
  46. 8 0
      ui/src/main/res/drawable/verify_result_background.xml
  47. 8 0
      ui/src/main/res/drawable/verify_result_value_background.xml
  48. 11 1
      ui/src/main/res/layout/activity_player.xml
  49. 302 0
      ui/src/main/res/layout/activity_verify.xml
  50. BIN
      ui/src/main/res/mipmap-hdpi/verify_close.png
  51. BIN
      ui/src/main/res/mipmap-hdpi/verify_error.png
  52. BIN
      ui/src/main/res/mipmap-hdpi/verify_header.png
  53. BIN
      ui/src/main/res/mipmap-mdpi/verify_close.png
  54. BIN
      ui/src/main/res/mipmap-mdpi/verify_error.png
  55. BIN
      ui/src/main/res/mipmap-mdpi/verify_header.png
  56. BIN
      ui/src/main/res/mipmap-xhdpi/verify_close.png
  57. BIN
      ui/src/main/res/mipmap-xhdpi/verify_error.png
  58. BIN
      ui/src/main/res/mipmap-xhdpi/verify_header.png
  59. BIN
      ui/src/main/res/mipmap-xxhdpi/verify_close.png
  60. BIN
      ui/src/main/res/mipmap-xxhdpi/verify_error.png
  61. BIN
      ui/src/main/res/mipmap-xxhdpi/verify_header.png
  62. BIN
      ui/src/main/res/mipmap-xxxhdpi/verify_close.png
  63. BIN
      ui/src/main/res/mipmap-xxxhdpi/verify_error.png
  64. BIN
      ui/src/main/res/mipmap-xxxhdpi/verify_header.png
  65. BIN
      ui/src/main/res/mipmap/default_cover_dark.png
  66. BIN
      ui/src/main/res/mipmap/default_cover_light.png
  67. 2 0
      ui/src/main/res/values/colors.xml
  68. 4 0
      ui/src/main/res/values/dimens.xml
  69. 3 3
      ui/src/main/res/values/strings.xml
  70. 19 0
      ui/src/main/res/values/styles.xml

+ 22 - 0
.idea/misc.xml

@@ -17,6 +17,16 @@
         <entry key="..\:/demo/.android/Player_Android/Demo/app/src/main/res/layout/module_entry_child_item.xml" value="0.3079710144927536" />
         <entry key="..\:/demo/.android/Player_Android/Demo/app/src/main/res/layout/module_entry_item.xml" value="0.3079710144927536" />
         <entry key="..\:/demo/.android/Player_Android/Demo/app/src/main/res/layout/module_trtc_entry_item.xml" value="0.3079710144927536" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/drawable/superplayer_item_vod.xml" value="0.2115" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/drawable/superplayer_laylist_vod_video_progress.xml" value="0.1675" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/drawable/superplayer_shadow_bottom.xml" value="0.2115" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/drawable/vod_video_progress.xml" value="0.2115" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/layout/superplayer_item_vod.xml" value="0.115625" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/layout/superplayer_quality_popup_view.xml" value="0.115625" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/layout/superplayer_video_progress_layout.xml" value="0.115625" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/layout/superplayer_video_volume_brightness_progress_layout.xml" value="0.22370218579234974" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/layout/superplayer_vod_player_fullscreen.xml" value="0.12578125" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/kit/src/main/res/layout/superplayer_vod_player_window.xml" value="0.12578125" />
         <entry key="..\:/demo/.android/Player_Android/Demo/superplayerdemo/src/main/res/drawable/player_short_video_time.xml" value="0.2535" />
         <entry key="..\:/demo/.android/Player_Android/Demo/superplayerdemo/src/main/res/drawable/player_thumb_view.xml" value="0.2535" />
         <entry key="..\:/demo/.android/Player_Android/Demo/superplayerdemo/src/main/res/drawable/player_video_seek_bar.xml" value="0.2535" />
@@ -93,6 +103,18 @@
         <entry key="..\:/demo/.android/Player_Android/Demo/superplayerkit/src/main/res/layout/superplayer_vod_player_window.xml" value="0.18" />
         <entry key="..\:/demo/.android/Player_Android/Demo/superplayerkit/src/main/res/layout/superplayer_vod_view.xml" value="0.18" />
         <entry key="..\:/demo/.android/Player_Android/Demo/superplayerkit/src/main/res/layout/superplayer_vod_vipwatch_view.xml" value="0.28306159420289856" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/menu_background.xml" value="0.1675" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/sign_equal.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/sign_multiply.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/sign_plus.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/verify_background.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/verify_button_background.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/verify_check_background.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/verify_result_background.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/drawable/verify_result_value_background.xml" value="0.206" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/layout/activity_menu.xml" value="0.22370218579234974" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/layout/activity_player.xml" value="0.22370218579234974" />
+        <entry key="..\:/demo/.android/Player_Android/Demo/ui/src/main/res/layout/activity_verify.xml" value="0.2" />
       </map>
     </option>
   </component>

+ 0 - 101
.idea/modules/app/Demo.app.iml

@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$/../../../app" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.group="Demo" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="android-gradle" name="Android-Gradle">
-      <configuration>
-        <option name="GRADLE_PROJECT_PATH" value=":app" />
-        <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="4.2.2" />
-        <option name="LAST_KNOWN_AGP_VERSION" value="4.2.2" />
-      </configuration>
-    </facet>
-    <facet type="android" name="Android">
-      <configuration>
-        <option name="SELECTED_BUILD_VARIANT" value="debug" />
-        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
-        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
-        <afterSyncTasks>
-          <task>generateDebugSources</task>
-        </afterSyncTasks>
-        <option name="ALLOW_USER_CONFIGURATION" value="false" />
-        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
-        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
-        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
-        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
-        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
-      </configuration>
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
-    <output url="file://$MODULE_DIR$/../../../app/build/intermediates/javac/debug/classes" />
-    <output-test url="file://$MODULE_DIR$/../../../app/build/intermediates/javac/debugUnitTest/classes" />
-    <exclude-output />
-    <content url="file://$MODULE_DIR$/../../../app">
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/assets" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/../../../app/src/main/res" type="java-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/../../../app/.gradle" />
-      <excludeFolder url="file://$MODULE_DIR$/../../../app/build" />
-    </content>
-    <orderEntry type="jdk" jdkName="Android API 31 Platform" jdkType="Android SDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="TEST" name="Gradle: androidx.annotation:annotation:1.0.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okhttp3:okhttp:3.10.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okio:okio:1.14.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: androidx.recyclerview:recyclerview:1.0.0@aar" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: androidx.core:core:1.0.0@aar" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.0.0@aar" level="project" />
-    <orderEntry type="library" scope="TEST" name="Gradle: androidx.exifinterface:exifinterface:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.collection:collection:1.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.0.0" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.1.0" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.constraintlayout:constraintlayout-solver:1.1.3" level="project" />
-    <orderEntry type="library" name="Gradle: com.squareup.okhttp3:logging-interceptor:3.8.1" level="project" />
-    <orderEntry type="library" name="Gradle: com.squareup.okhttp3:okhttp:4.9.3" level="project" />
-    <orderEntry type="library" name="Gradle: com.squareup.okio:okio:2.8.0" level="project" />
-    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.4.10" level="project" />
-    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10" level="project" />
-    <orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
-    <orderEntry type="library" name="Gradle: com.tencent.liteav:LiteAVSDK_Player:10.5.0.11177@aar" level="project" />
-    <orderEntry type="library" name="Gradle: com.google.android.material:material:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.recyclerview:recyclerview:1.2.1@aar" level="project" />
-    <orderEntry type="library" name="Gradle: com.squareup.picasso:picasso:2.71828@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.transition:transition:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.core:core:1.3.2@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.cardview:cardview:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.exifinterface:exifinterface:1.2.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.documentfile:documentfile:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.print:print:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime:2.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.constraintlayout:constraintlayout:1.1.3@aar" level="project" />
-    <orderEntry type="library" name="Gradle: androidx.multidex:multidex:2.0.0@aar" level="project" />
-    <orderEntry type="library" name="Gradle: com.blankj:utilcode:1.30.7@aar" level="project" />
-    <orderEntry type="module" module-name="Demo.ui" />
-  </component>
-</module>

+ 1 - 12
kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/player/FullScreenPlayer.java

@@ -2,29 +2,18 @@ package com.tencent.liteav.demo.superplayer.ui.player;
 
 import android.content.Context;
 import android.graphics.Bitmap;
-import android.os.VibrationEffect;
 import android.os.Vibrator;
-import android.os.VibratorManager;
 import android.util.AttributeSet;
-import android.view.GestureDetector;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
-import android.view.View;
 import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.tencent.liteav.demo.superplayer.R;
 import com.tencent.liteav.demo.superplayer.SuperPlayerDef;
 import com.tencent.liteav.demo.superplayer.SuperPlayerModel;
-import com.tencent.liteav.demo.superplayer.model.utils.VideoGestureDetector;
 import com.tencent.liteav.demo.superplayer.ui.view.UnlockProgressView;
-import com.tencent.liteav.demo.superplayer.ui.view.VideoProgressLayout;
-import com.tencent.liteav.demo.superplayer.ui.view.VolumeBrightnessProgressLayout;
-
-import java.lang.ref.WeakReference;
 
 /**
  * 全屏模式播放控件
@@ -92,7 +81,7 @@ public class FullScreenPlayer extends AbsPlayer implements UnlockProgressView.On
         if (!isDestroy) {
             Glide.with(getContext())
                     .load(superPlayerModel.cover)
-                    .placeholder(R.drawable.superplayer_default)
+                    .placeholder(R.mipmap.default_cover_dark)
                     .into(mImageCover);
         }
         toggleView(mImageCover, true);

+ 1 - 1
kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/player/WindowPlayer.java

@@ -266,7 +266,7 @@ public class WindowPlayer extends AbsPlayer implements View.OnClickListener,
             if (superPlayerModel.cover != null) {
                 Glide.with(getContext())
                         .load(superPlayerModel.cover)
-                        .placeholder(R.drawable.superplayer_default)
+                        .placeholder(R.mipmap.default_cover_dark)
                         .into(mImageCover);
             }
 

+ 2 - 3
kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/view/PlayerRelativeLayout.java

@@ -6,7 +6,6 @@ import android.util.AttributeSet;
 import android.widget.RelativeLayout;
 
 import com.tencent.liteav.demo.superplayer.R;
-import com.tencent.liteav.demo.superplayer.SuperPlayerDef;
 
 public class PlayerRelativeLayout extends RelativeLayout {
     private int windowMarginLeft;
@@ -43,7 +42,7 @@ public class PlayerRelativeLayout extends RelativeLayout {
     }
 
     public void onWindowMode() {
-        setBackgroundResource(R.drawable.superplayer_vod_player_window_bg);
+        setBackgroundResource(R.drawable.player_window_bg);
 
         MarginLayoutParams layoutParams = (MarginLayoutParams) getLayoutParams();
         layoutParams.setMargins(windowMarginLeft, windowMarginTop, windowMarginRight, windowMarginBottom);
@@ -51,7 +50,7 @@ public class PlayerRelativeLayout extends RelativeLayout {
     }
 
     public void onFullScreenMode() {
-        setBackgroundResource(R.drawable.superplayer_vod_player_full_bg);
+        setBackgroundResource(R.drawable.player_full_bg);
 
         MarginLayoutParams layoutParams = (MarginLayoutParams) getLayoutParams();
         layoutParams.setMargins(0, 0, 0, 0);

BIN
kit/src/main/res/drawable-xxhdpi/superplayer_btn_back_play.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_ic_player_lock.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_ic_player_unlock.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_ic_replay.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_ic_vod_fullscreen.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_ic_vod_pause_normal.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_play_next.png


BIN
kit/src/main/res/drawable-xxhdpi/superplayer_top_shadow.png


+ 0 - 0
kit/src/main/res/drawable/superplayer_item_vod.xml → kit/src/main/res/drawable/item_vod.xml


+ 0 - 0
kit/src/main/res/drawable/superplayer_layer_list_progress_bar.xml → kit/src/main/res/drawable/list_progress_bar.xml


+ 0 - 0
kit/src/main/res/drawable/superplayer_vod_player_full_bg.xml → kit/src/main/res/drawable/player_full_bg.xml


+ 0 - 0
kit/src/main/res/drawable/superplayer_vod_player_window_bg.xml → kit/src/main/res/drawable/player_window_bg.xml


+ 0 - 0
kit/src/main/res/drawable/superplayer_shadow_bottom.xml → kit/src/main/res/drawable/shadow_bottom.xml


+ 0 - 0
kit/src/main/res/drawable/superplayer_unlock_bg.xml → kit/src/main/res/drawable/unlock_bg.xml


+ 0 - 0
kit/src/main/res/drawable/superplayer_laylist_vod_video_progress.xml → kit/src/main/res/drawable/vod_video_progress.xml


+ 2 - 2
kit/src/main/res/layout/superplayer_item_vod.xml

@@ -3,7 +3,7 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:background="@drawable/superplayer_item_vod"
+    android:background="@drawable/item_vod"
     android:layout_marginBottom="6dp"
     android:orientation="vertical">
 
@@ -15,7 +15,7 @@
         android:layout_marginTop="9dp"
         android:layout_marginRight="9dp"
         android:layout_marginBottom="3dp"
-        android:background="@drawable/superplayer_item_vod"
+        android:background="@drawable/item_vod"
         android:scaleType="centerCrop"
         app:radius="10dp"/>
 

+ 0 - 26
kit/src/main/res/layout/superplayer_quality_popup_view.xml

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="match_parent"
-    android:background="@color/superplayer_super_vod_vtt_bg">
-
-    <TextView
-        android:id="@+id/superplayer_tv_title"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="30dp"
-        android:gravity="center"
-        android:text="@string/superplayer_sharpness"
-        android:textColor="@android:color/white"
-        android:textSize="14dp" />
-
-    <ListView
-        android:id="@+id/superplayer_lv_quality"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_below="@id/superplayer_tv_title"
-        android:layout_marginTop="50dp"
-        android:listSelector="@android:color/transparent"
-        android:choiceMode="singleChoice"/>
-
-</RelativeLayout>

+ 1 - 1
kit/src/main/res/layout/superplayer_video_progress_layout.xml

@@ -30,6 +30,6 @@
         android:layout_marginTop="8dp"
         android:max="100"
         android:progress="0"
-        android:progressDrawable="@drawable/superplayer_laylist_vod_video_progress" />
+        android:progressDrawable="@drawable/vod_video_progress" />
 
 </LinearLayout>

+ 1 - 1
kit/src/main/res/layout/superplayer_video_volume_brightness_progress_layout.xml

@@ -22,7 +22,7 @@
         android:layout_marginTop="8dp"
         android:max="100"
         android:progress="0"
-        android:progressDrawable="@drawable/superplayer_laylist_vod_video_progress" />
+        android:progressDrawable="@drawable/vod_video_progress" />
 </LinearLayout>
 
 

+ 2 - 2
kit/src/main/res/layout/superplayer_vod_player_fullscreen.xml

@@ -20,7 +20,7 @@
         android:layout_centerInParent="true"
         android:layout_marginLeft="9dp"
         android:layout_toRightOf="@id/superplayer_iv_lock"
-        android:background="@drawable/superplayer_unlock_bg"
+        android:background="@drawable/unlock_bg"
         android:paddingLeft="20dp"
         android:paddingTop="10dp"
         android:paddingRight="20dp"
@@ -34,7 +34,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:scaleType="centerCrop"
-        android:src="@drawable/superplayer_default"
+        android:src="@mipmap/default_cover_dark"
         android:visibility="gone" />
 
 </RelativeLayout>

+ 2 - 2
kit/src/main/res/layout/superplayer_vod_player_window.xml

@@ -22,7 +22,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:scaleType="centerCrop"
-        android:src="@drawable/superplayer_default"
+        android:src="@mipmap/default_cover_dark"
         android:visibility="visible" />
 
     <LinearLayout
@@ -30,7 +30,7 @@
         android:layout_width="match_parent"
         android:layout_height="64dp"
         android:layout_alignParentBottom="true"
-        android:background="@drawable/superplayer_shadow_bottom"
+        android:background="@drawable/shadow_bottom"
         android:orientation="horizontal"
         android:clipChildren="false">
 

+ 0 - 0
kit/src/main/res/drawable-xxhdpi/superplayer_default.png → kit/src/main/res/mipmap/default_cover_dark.png


+ 0 - 0
ui/src/main/res/drawable-xhdpi/default_cover_thumb.png → kit/src/main/res/mipmap/default_cover_light.png


+ 0 - 13
kit/src/main/res/values/colors.xml

@@ -4,19 +4,6 @@
     <color name="superplayer_biz_audio_progress_first">#ffffff</color>
     <color name="superplayer_biz_audio_progress_second">#6b6666</color>
 
-    <color name="superplayer_super_vod_vtt_bg">#BB000000</color>
-
-
-    <color name="superplayer_default_bg">#aa000000</color>
-
-    <!-- 裁剪范围颜色 -->
-    <color name="superplayer_color_tint_red">#FF4C58</color>
-
-    <!--special color-->
-    <color name="superplayer_black_a10_color">#1a000000</color>
-
-    <color name="superplayer_shape_vip_tip_color">#88000000</color>
-
     <!--gray4-->
     <color name="superplayer_color_gray">#787878</color>
 

+ 1 - 1
kit/src/main/res/values/styles.xml

@@ -3,7 +3,7 @@
 
     <style name="SuperPlayerAppProgressBarStyle">
         <item name="android:indeterminateOnly">false</item>
-        <item name="android:progressDrawable">@drawable/superplayer_layer_list_progress_bar</item>
+        <item name="android:progressDrawable">@drawable/list_progress_bar</item>
     </style>
 
     <declare-styleable name="SuperPlayerTCPointSeekBar">

+ 4 - 0
ui/build.gradle

@@ -14,6 +14,10 @@ android {
 
     }
 
+    buildFeatures {
+        viewBinding true
+    }
+
     buildTypes {
         release {
             minifyEnabled false

+ 10 - 4
ui/src/main/AndroidManifest.xml

@@ -6,13 +6,13 @@
     <application
         android:allowBackup="false"
         android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
+        android:label="@string/superplayer_app_name"
         android:largeHeap="true"
         android:theme="@style/AppTheme"
-        tools:replace="android:allowBackup">
+        tools:replace="android:allowBackup,android:label">
 
         <activity
-            android:name=".SuperPlayerActivity"
+            android:name=".PlayerActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:exported="true"
             android:label="@string/superplayer_app_name"
@@ -27,10 +27,16 @@
         </activity>
 
         <activity
-            android:name=".SuperPlayerMenu"
+            android:name=".PlayerMenu"
             android:launchMode="singleTop"
             android:screenOrientation="landscape"
             android:theme="@style/AppTheme.Dialog" />
 
+        <activity
+            android:name=".PlayerVerify"
+            android:launchMode="singleTop"
+            android:screenOrientation="landscape"
+            android:theme="@style/AppTheme.Dialog.Verify" />
+
     </application>
 </manifest>

+ 21 - 15
ui/src/main/java/com/tencent/liteav/demo/player/SuperPlayerActivity.java → ui/src/main/java/com/tencent/liteav/demo/player/PlayerActivity.java

@@ -20,9 +20,10 @@ import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
-import com.tencent.liteav.demo.player.ui.TCVodPlayerListAdapter;
-import com.tencent.liteav.demo.player.ui.TCVodPlayerListDecoration;
-import com.tencent.liteav.demo.player.util.SuperPlayerModelProvider;
+import com.tencent.liteav.demo.player.databinding.ActivityPlayerBinding;
+import com.tencent.liteav.demo.player.ui.PlayerListAdapter;
+import com.tencent.liteav.demo.player.ui.PlayerListDecoration;
+import com.tencent.liteav.demo.player.util.PlayerModelProvider;
 import com.tencent.liteav.demo.superplayer.SuperPlayerDef;
 import com.tencent.liteav.demo.superplayer.SuperPlayerGlobalConfig;
 import com.tencent.liteav.demo.superplayer.SuperPlayerModel;
@@ -35,9 +36,9 @@ import com.tencent.rtmp.TXLiveConstants;
  * 超级播放器主Activity
  */
 
-public class SuperPlayerActivity extends Activity implements View.OnClickListener,
+public class PlayerActivity extends Activity implements View.OnClickListener,
         SuperPlayerView.OnSuperPlayerViewCallback,
-        TCVodPlayerListAdapter.OnItemClickListener {
+        PlayerListAdapter.OnItemClickListener {
 
     private static final String TAG = "SuperPlayerActivity";
 
@@ -58,7 +59,7 @@ public class SuperPlayerActivity extends Activity implements View.OnClickListene
     private SuperPlayerView mSuperPlayerView;
     private RecyclerView mVodPlayerListView;
 
-    private TCVodPlayerListAdapter mVodPlayerListAdapter;
+    private PlayerListAdapter mVodPlayerListAdapter;
 
     private boolean mIsManualPause = false;
 
@@ -66,10 +67,13 @@ public class SuperPlayerActivity extends Activity implements View.OnClickListene
 
     private int currentIndex = -1;
 
+    private ActivityPlayerBinding binding;
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_player);
+        binding = ActivityPlayerBinding.inflate(getLayoutInflater());
+        setContentView(binding.getRoot());
 
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         initView();
@@ -101,7 +105,7 @@ public class SuperPlayerActivity extends Activity implements View.OnClickListene
             @Override
             public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
                 WindowInsets newInsets = insets;
-                viewInsets = ViewInsets.applyWindowInsets(SuperPlayerActivity.this, insets);
+                viewInsets = ViewInsets.applyWindowInsets(PlayerActivity.this, insets);
                 setPadding();
                 return newInsets;
             }
@@ -132,11 +136,12 @@ public class SuperPlayerActivity extends Activity implements View.OnClickListene
 
         mVodPlayerListView = (RecyclerView) findViewById(R.id.superplayer_recycler_view);
         mVodPlayerListView.setLayoutManager(new LinearLayoutManager(this));
-        mVodPlayerListAdapter = new TCVodPlayerListAdapter(this);
+        mVodPlayerListAdapter = new PlayerListAdapter(this);
         mVodPlayerListAdapter.setOnItemClickListener(this);
         mVodPlayerListView.setAdapter(mVodPlayerListAdapter);
-        mVodPlayerListView.addItemDecoration(new TCVodPlayerListDecoration());
+        mVodPlayerListView.addItemDecoration(new PlayerListDecoration());
 
+        binding.superplayerTcVerify.setOnClickListener(this);
         adjustSuperPlayerViewAndMaskHeight();
     }
 
@@ -191,7 +196,7 @@ public class SuperPlayerActivity extends Activity implements View.OnClickListene
     }
 
     private void playVideoModel(int index) {
-        mSuperPlayerView.playWithModelList(SuperPlayerModelProvider.getList(), false, index);
+        mSuperPlayerView.playWithModelList(PlayerModelProvider.getList(), false, index);
     }
 
     @Override
@@ -202,19 +207,20 @@ public class SuperPlayerActivity extends Activity implements View.OnClickListene
         } else if (id == R.id.superplayer_tc_lock) {
             mSuperPlayerView.switchPlayMode(SuperPlayerDef.PlayerMode.FULLSCREEN);
         } else if (id == R.id.superplayer_tc_menu) {
-            Intent intent = new Intent(this, SuperPlayerMenu.class);
-            startActivity(intent);
+            PlayerMenu.start(PlayerActivity.this, "");
+        } else if (id == binding.superplayerTcVerify.getId()) {
+            PlayerVerify.start(PlayerActivity.this);
         }
     }
 
     private void updateList() {
         mVodPlayerListAdapter.clear();
 
-        for (SuperPlayerModel videoModel : SuperPlayerModelProvider.getList()) {
+        for (SuperPlayerModel videoModel : PlayerModelProvider.getList()) {
             mVodPlayerListAdapter.addSuperPlayerModel(videoModel);
         }
 
-        mSuperPlayerView.playWithModelList(SuperPlayerModelProvider.getList(), false, 0);
+        mSuperPlayerView.playWithModelList(PlayerModelProvider.getList(), false, 0);
     }
 
     private boolean isFullScreen = false;

+ 11 - 1
ui/src/main/java/com/tencent/liteav/demo/player/SuperPlayerMenu.java → ui/src/main/java/com/tencent/liteav/demo/player/PlayerMenu.java

@@ -1,5 +1,7 @@
 package com.tencent.liteav.demo.player;
 
+import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.WindowManager;
@@ -10,7 +12,15 @@ import androidx.appcompat.app.AppCompatActivity;
 
 import com.tencent.liteav.demo.player.ui.MenuItemView;
 
-public class SuperPlayerMenu extends AppCompatActivity implements View.OnClickListener {
+public class PlayerMenu extends AppCompatActivity implements View.OnClickListener {
+    private static final String KEY = "COURSE_ID";
+
+    public static void start(Context context, String courseId) {
+        Intent intent = new Intent(context, PlayerMenu.class);
+        intent.putExtra(KEY, courseId);
+        context.startActivity(intent);
+    }
+
     private ImageView imageBack;
     private MenuItemView imageShare;
     private MenuItemView imageFavorite;

+ 117 - 0
ui/src/main/java/com/tencent/liteav/demo/player/PlayerVerify.java

@@ -0,0 +1,117 @@
+package com.tencent.liteav.demo.player;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.tencent.liteav.demo.player.databinding.ActivityVerifyBinding;
+
+import java.util.Random;
+
+public class PlayerVerify extends AppCompatActivity implements View.OnClickListener {
+
+    public static void start(Context context) {
+        Intent intent = new Intent(context, PlayerVerify.class);
+        context.startActivity(intent);
+    }
+
+    private ActivityVerifyBinding binding;
+
+    private int a = 0, b = 0, c = 0;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = ActivityVerifyBinding.inflate(getLayoutInflater());
+        setContentView(binding.getRoot());
+
+        Random random = new Random();
+        a = random.nextInt(10);
+        b = random.nextInt(10);
+        c = random.nextInt(10);
+
+        binding.firstNum.setText(String.valueOf(a));
+        binding.secondNum.setText(String.valueOf(b));
+        binding.thirdNum.setText(String.valueOf(c));
+
+        binding.verifyBtn0.setOnClickListener(this);
+        binding.verifyBtn1.setOnClickListener(this);
+        binding.verifyBtn2.setOnClickListener(this);
+        binding.verifyBtn3.setOnClickListener(this);
+        binding.verifyBtn4.setOnClickListener(this);
+        binding.verifyBtn5.setOnClickListener(this);
+        binding.verifyBtn6.setOnClickListener(this);
+        binding.verifyBtn7.setOnClickListener(this);
+        binding.verifyBtn8.setOnClickListener(this);
+        binding.verifyBtn9.setOnClickListener(this);
+
+        binding.verifyClose.setOnClickListener(this);
+        binding.verifyCheck.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == binding.verifyClose.getId()) {
+            finish();
+        } else if (id == binding.verifyCheck.getId()) {
+            checkResult();
+        } else if (id == binding.verifyBtn0.getId()) {
+            addNumber(0);
+        } else if (id == binding.verifyBtn1.getId()) {
+            addNumber(1);
+        } else if (id == binding.verifyBtn2.getId()) {
+            addNumber(2);
+        } else if (id == binding.verifyBtn3.getId()) {
+            addNumber(3);
+        } else if (id == binding.verifyBtn4.getId()) {
+            addNumber(4);
+        } else if (id == binding.verifyBtn5.getId()) {
+            addNumber(5);
+        } else if (id == binding.verifyBtn6.getId()) {
+            addNumber(6);
+        } else if (id == binding.verifyBtn7.getId()) {
+            addNumber(7);
+        } else if (id == binding.verifyBtn8.getId()) {
+            addNumber(8);
+        } else if (id == binding.verifyBtn9.getId()) {
+            addNumber(9);
+        }
+    }
+
+    private void addNumber(int num) {
+        resetInput();
+        String result = binding.resultNum.getText().toString();
+
+        binding.resultNum.setText(result + num);
+    }
+
+    private void checkResult() {
+        String result = binding.resultNum.getText().toString();
+        if (!TextUtils.isEmpty(result)) {
+            int resultNum = Integer.valueOf(result);
+
+            if (resultNum == a * b + c) {
+                finish();
+            } else {
+                checkError();
+            }
+        }
+    }
+
+    private void checkError() {
+        binding.verifyErrorImg.setVisibility(View.VISIBLE);
+        binding.resultNum.setVisibility(View.GONE);
+        binding.resultNum.setText("");
+    }
+
+    private void resetInput() {
+        binding.verifyErrorImg.setVisibility(View.GONE);
+        binding.resultNum.setVisibility(View.VISIBLE);
+    }
+}

+ 0 - 13
ui/src/main/java/com/tencent/liteav/demo/player/SuperPlayerVerify.java

@@ -1,13 +0,0 @@
-package com.tencent.liteav.demo.player;
-
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-
-public class SuperPlayerVerify extends AppCompatActivity {
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-}

+ 3 - 3
ui/src/main/java/com/tencent/liteav/demo/player/ui/TCVodPlayerListAdapter.java → ui/src/main/java/com/tencent/liteav/demo/player/ui/PlayerListAdapter.java

@@ -22,7 +22,7 @@ import java.util.ArrayList;
  * Created by liyuejiao on 2018/7/3.
  */
 
-public class TCVodPlayerListAdapter extends RecyclerView.Adapter<TCVodPlayerListAdapter.ViewHolder> {
+public class PlayerListAdapter extends RecyclerView.Adapter<PlayerListAdapter.ViewHolder> {
     private static final int activeColor = Color.parseColor("#FF0048B1");
     private static final int inactiveColor = Color.parseColor("#FF495568");
 
@@ -33,7 +33,7 @@ public class TCVodPlayerListAdapter extends RecyclerView.Adapter<TCVodPlayerList
     private ArrayList<SuperPlayerModel> mVideoModelList;
     private ArrayList<Boolean> clickMark;
 
-    public TCVodPlayerListAdapter(Context context) {
+    public PlayerListAdapter(Context context) {
         mContext = context;
         mVideoModelList = new ArrayList<>();
         clickMark = new ArrayList<>();
@@ -50,7 +50,7 @@ public class TCVodPlayerListAdapter extends RecyclerView.Adapter<TCVodPlayerList
         final SuperPlayerModel videoModel = mVideoModelList.get(position);
         if (TextUtils.isEmpty(videoModel.cover)) {
             Glide.with(mContext)
-                    .load(R.drawable.default_cover_thumb)
+                    .load(R.mipmap.default_cover_light)
                     .into(holder.thumb);
         } else {
             Glide.with(mContext)

+ 1 - 1
ui/src/main/java/com/tencent/liteav/demo/player/ui/TCVodPlayerListDecoration.java → ui/src/main/java/com/tencent/liteav/demo/player/ui/PlayerListDecoration.java

@@ -9,7 +9,7 @@ import androidx.recyclerview.widget.RecyclerView;
 
 import com.tencent.liteav.demo.player.R;
 
-public class TCVodPlayerListDecoration extends RecyclerView.ItemDecoration {
+public class PlayerListDecoration extends RecyclerView.ItemDecoration {
 
     @Override
     public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {

+ 2 - 2
ui/src/main/java/com/tencent/liteav/demo/player/util/SuperPlayerModelProvider.java → ui/src/main/java/com/tencent/liteav/demo/player/util/PlayerModelProvider.java

@@ -5,8 +5,8 @@ import com.tencent.liteav.demo.superplayer.SuperPlayerModel;
 import java.util.ArrayList;
 import java.util.List;
 
-public class SuperPlayerModelProvider {
-    private SuperPlayerModelProvider() {
+public class PlayerModelProvider {
+    private PlayerModelProvider() {
     }
 
     public static List<SuperPlayerModel> getList() {

+ 18 - 0
ui/src/main/res/drawable/sign_equal.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="25dp"
+    android:height="25dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:pathData="
+            M7,9
+            L17,9,
+            M7,15,
+            L17,15
+        "
+        android:strokeWidth="2"
+        android:strokeColor="#333333"
+        android:strokeLineCap="round" />
+</vector>

+ 18 - 0
ui/src/main/res/drawable/sign_multiply.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="25dp"
+    android:height="25dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:pathData="
+            M8,8
+            L16,16,
+            M16,8,
+            L8,16
+        "
+        android:strokeWidth="2"
+        android:strokeColor="#333333"
+        android:strokeLineCap="round" />
+</vector>

+ 18 - 0
ui/src/main/res/drawable/sign_plus.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="25dp"
+    android:height="25dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+
+    <path
+        android:pathData="
+            M12,7
+            L12,17,
+            M7,12,
+            L17,12
+        "
+        android:strokeWidth="2"
+        android:strokeColor="#333333"
+        android:strokeLineCap="round" />
+</vector>

+ 10 - 0
ui/src/main/res/drawable/verify_background.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="@android:color/white" />
+
+    <corners
+        android:bottomLeftRadius="20dp"
+        android:bottomRightRadius="20dp" />
+</shape>

+ 32 - 0
ui/src/main/res/drawable/verify_button_background.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:shape="rectangle">
+
+    <item
+        android:width="@dimen/verify_button_width"
+        android:height="@dimen/verify_button_bg_height"
+        android:top="2dp"
+        tools:ignore="UnusedAttribute">
+
+        <shape android:shape="rectangle">
+            <size
+                android:width="41dp"
+                android:height="39dp" />
+            <solid android:color="#FFFF9D45" />
+            <corners android:radius="21dp" />
+        </shape>
+    </item>
+    <item
+        android:width="@dimen/verify_button_width"
+        android:height="@dimen/verify_button_bg_height"
+        tools:ignore="UnusedAttribute">
+        <shape android:shape="rectangle">
+            <size
+                android:width="41dp"
+                android:height="39dp" />
+            <solid android:color="#FFFF8341" />
+            <corners android:radius="21dp" />
+        </shape>
+    </item>
+</layer-list>

+ 20 - 0
ui/src/main/res/drawable/verify_check_background.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:width="48dp"
+        android:height="32dp">
+        <shape android:shape="rectangle">
+            <gradient
+                android:angle="180"
+                android:endColor="#ff76a8f0"
+                android:startColor="#ff2273ea"
+                android:type="linear"
+                android:useLevel="true" />
+            <corners android:radius="19dp" />
+
+            <item android:name="android:shadowColor">#4fffffff</item>
+            <item android:name="android:shadowDx">0</item>
+            <item android:name="android:shadowDy">1</item>
+        </shape>
+    </item>
+</layer-list>

+ 8 - 0
ui/src/main/res/drawable/verify_result_background.xml

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

+ 8 - 0
ui/src/main/res/drawable/verify_result_value_background.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@android:color/white" />
+    <stroke
+        android:width="2dp"
+        android:color="#FF2273EA" />
+    <corners android:radius="19dp" />
+</shape>

+ 11 - 1
ui/src/main/res/layout/activity_player.xml

@@ -43,6 +43,16 @@
             android:gravity="center"
             android:orientation="horizontal">
 
+            <ImageView
+                android:id="@+id/superplayer_tc_verify"
+                android:layout_width="38dp"
+                android:layout_height="39dp"
+                android:src="@mipmap/window_lock" />
+
+            <View
+                android:layout_width="27dp"
+                android:layout_height="0dp" />
+
             <ImageView
                 android:id="@+id/superplayer_tc_lock"
                 android:layout_width="38dp"
@@ -77,7 +87,7 @@
             android:layout_marginLeft="15dp"
             android:layout_marginBottom="24dp"
             android:layout_weight="1"
-            android:background="@drawable/superplayer_vod_player_window_bg"
+            android:background="@drawable/player_window_bg"
             app:window_marginBottom="24dp"
             app:window_marginLeft="15dp">
 

+ 302 - 0
ui/src/main/res/layout/activity_verify.xml

@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:layout_width="323dp"
+        android:layout_height="295dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <ImageView
+            android:id="@+id/verify_header"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="7dp"
+            android:src="@mipmap/verify_header" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="195dp"
+            android:layout_alignBottom="@id/verify_header"
+            android:layout_alignParentBottom="true"
+            android:layout_marginRight="7dp"
+            android:background="@drawable/verify_background" />
+
+        <TextView
+            android:id="@+id/verify_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentTop="true"
+            android:layout_marginTop="81dp"
+            android:text="使用该功能请进行家长验证"
+            android:textAlignment="center"
+            android:textColor="#ff333333"
+            android:textSize="16sp"
+            android:textStyle="bold" />
+
+        <LinearLayout
+            android:id="@+id/verify_result_layout"
+            android:layout_width="match_parent"
+            android:layout_height="42dp"
+            android:layout_below="@id/verify_title"
+            android:layout_marginHorizontal="31dp"
+            android:layout_marginTop="9dp"
+            android:background="@drawable/verify_result_background"
+            android:elevation="0dp"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/first_num"
+                android:layout_width="21dp"
+                android:layout_height="25dp"
+                android:layout_marginLeft="10dp"
+                android:text="5"
+                android:textAlignment="center"
+                android:textColor="#ff333333"
+                android:textSize="18sp" />
+
+            <ImageView
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:layout_gravity="center"
+                android:src="@drawable/sign_multiply" />
+
+            <TextView
+                android:id="@+id/second_num"
+                android:layout_width="21dp"
+                android:layout_height="25dp"
+                android:text="5"
+                android:textAlignment="center"
+                android:textColor="#ff333333"
+                android:textSize="18sp" />
+
+            <ImageView
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:src="@drawable/sign_plus"
+                android:textAlignment="center"
+                android:textColor="#ff333333"
+                android:textSize="18sp" />
+
+            <TextView
+                android:id="@+id/third_num"
+                android:layout_width="21dp"
+                android:layout_height="25dp"
+                android:text="5"
+                android:textAlignment="center"
+                android:textColor="#ff333333"
+                android:textSize="18sp" />
+
+            <ImageView
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:src="@drawable/sign_equal"
+                android:textAlignment="center"
+                android:textColor="#ff333333"
+                android:textSize="18sp" />
+
+            <FrameLayout
+                android:layout_width="54dp"
+                android:layout_height="32dp"
+                android:layout_marginRight="9dp"
+                android:background="@drawable/verify_result_value_background"
+                android:gravity="center">
+
+                <TextView
+                    android:id="@+id/result_num"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:gravity="center"
+                    android:text=""
+                    android:textAlignment="center"
+                    android:textColor="#ff333333"
+                    android:textSize="18sp" />
+
+                <ImageView
+                    android:id="@+id/verify_error_img"
+                    android:layout_width="17dp"
+                    android:layout_height="17dp"
+                    android:layout_gravity="center"
+                    android:src="@mipmap/verify_error"
+                    android:visibility="gone" />
+
+            </FrameLayout>
+
+            <TextView
+                android:id="@+id/verify_check"
+                android:layout_width="48dp"
+                android:layout_height="32dp"
+                android:layout_gravity="center"
+                android:background="@drawable/verify_check_background"
+                android:gravity="center"
+                android:text="确认"
+                android:textColor="#ffffffff"
+                android:textSize="12sp" />
+
+
+        </LinearLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="254dp"
+            android:layout_height="96dp"
+            android:layout_below="@id/verify_result_layout"
+            android:layout_marginHorizontal="31dp"
+            android:layout_marginTop="12dp">
+
+            <TextView
+                android:id="@+id/verify_btn_1"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="1"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/verify_btn_2"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="2"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintLeft_toRightOf="@id/verify_btn_1"
+                app:layout_constraintRight_toLeftOf="@id/verify_btn_3"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/verify_btn_3"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="3"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintLeft_toRightOf="@id/verify_btn_2"
+                app:layout_constraintRight_toLeftOf="@id/verify_btn_4"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/verify_btn_4"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="4"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintLeft_toRightOf="@id/verify_btn_3"
+                app:layout_constraintRight_toLeftOf="@id/verify_btn_5"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/verify_btn_5"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="5"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/verify_btn_6"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="6"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintLeft_toLeftOf="parent" />
+
+            <TextView
+                android:id="@+id/verify_btn_7"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="7"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintLeft_toRightOf="@id/verify_btn_6"
+
+                app:layout_constraintRight_toLeftOf="@id/verify_btn_8" />
+
+            <TextView
+                android:id="@+id/verify_btn_8"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="8"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintLeft_toRightOf="@id/verify_btn_7"
+                app:layout_constraintRight_toLeftOf="@id/verify_btn_9" />
+
+
+            <TextView
+                android:id="@+id/verify_btn_9"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="9"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintLeft_toRightOf="@id/verify_btn_8"
+                app:layout_constraintRight_toLeftOf="@id/verify_btn_0" />
+
+            <TextView
+                android:id="@+id/verify_btn_0"
+                android:layout_width="41dp"
+                android:layout_height="41dp"
+                android:background="@drawable/verify_button_background"
+                android:gravity="center"
+                android:text="0"
+                android:textAlignment="center"
+                android:textColor="#ffffffff"
+                android:textSize="18sp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintRight_toRightOf="parent" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <ImageView
+            android:id="@+id/verify_close"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_alignParentRight="true"
+            android:layout_marginTop="51dp"
+            android:src="@mipmap/verify_close" />
+
+    </RelativeLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>

BIN
ui/src/main/res/mipmap-hdpi/verify_close.png


BIN
ui/src/main/res/mipmap-hdpi/verify_error.png


BIN
ui/src/main/res/mipmap-hdpi/verify_header.png


BIN
ui/src/main/res/mipmap-mdpi/verify_close.png


BIN
ui/src/main/res/mipmap-mdpi/verify_error.png


BIN
ui/src/main/res/mipmap-mdpi/verify_header.png


BIN
ui/src/main/res/mipmap-xhdpi/verify_close.png


BIN
ui/src/main/res/mipmap-xhdpi/verify_error.png


BIN
ui/src/main/res/mipmap-xhdpi/verify_header.png


BIN
ui/src/main/res/mipmap-xxhdpi/verify_close.png


BIN
ui/src/main/res/mipmap-xxhdpi/verify_error.png


BIN
ui/src/main/res/mipmap-xxhdpi/verify_header.png


BIN
ui/src/main/res/mipmap-xxxhdpi/verify_close.png


BIN
ui/src/main/res/mipmap-xxxhdpi/verify_error.png


BIN
ui/src/main/res/mipmap-xxxhdpi/verify_header.png


BIN
ui/src/main/res/mipmap/default_cover_dark.png


BIN
ui/src/main/res/mipmap/default_cover_light.png


+ 2 - 0
ui/src/main/res/values/colors.xml

@@ -10,4 +10,6 @@
     <color name="cache_status_pause">#FD7657</color>
     <color name="cache_status_finish">#20C86F</color>
     <color name="cache_empty_text_colo">#6B82A8</color>
+
+    <color name="verify_result_background">#FFDDEBFF</color>
 </resources>

+ 4 - 0
ui/src/main/res/values/dimens.xml

@@ -5,4 +5,8 @@
     <dimen name="superplayer_media_controller_view_height">48dip</dimen>
 
     <dimen name="superplayer_vod_list_decoration_margin">6dp</dimen>
+
+    <dimen name="verify_button_width">41dp</dimen>
+    <dimen name="verify_button_height">43dp</dimen>
+    <dimen name="verify_button_bg_height">39dp</dimen>
 </resources>

+ 3 - 3
ui/src/main/res/values/strings.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="superplayer_app_name">超级播放器</string>
+    <string name="superplayer_app_name">逻辑狗视频播放器</string>
     <string name="superplayer_cache_name">离线缓存</string>
 
     <string name="superplayer_cancel">取消</string>
@@ -39,12 +39,12 @@
     <string name="superplayer_cover_title">自定义封面演示</string>
     <string name="superplayer_offline_cache_title">离线缓存(全屏)演示</string>
     <string name="superplayer_carousel_list_title">视频列表轮播演示</string>
-    
+
     <string name="superplayer_cache_progress">缓存进度:%1$d%%</string>
     <string name="superplayer_cache_state_cacheing">缓存中</string>
     <string name="superplayer_cache_state_pause">缓存暂停</string>
     <string name="superplayer_cache_state_finish">缓存结束</string>
-    
+
     <string name="superplayer_hint">提示</string>
     <string name="superplayer_delete_video_confirm">确定删除视频吗</string>
     <string name="superplayer_delete_success">删除成功</string>

+ 19 - 0
ui/src/main/res/values/styles.xml

@@ -49,4 +49,23 @@
         <item name="android:activityCloseExitAnimation">@anim/activity_slide_left_to_right</item>
     </style>
 
+
+    <style name="AppTheme.Dialog.Verify" parent="PlayerTheme">
+        <item name="android:windowFrame">@null</item>
+
+        <!--是否悬浮在activity上-->
+        <item name="android:windowIsFloating">true</item>
+        <!--透明是否-->
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:background">@null</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <!--设置没有窗口标题、dialog标题等各种标题-->
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:title">@null</item>
+        <item name="windowNoTitle">true</item>
+        <item name="android:dialogTitle">@null</item>
+        <!--点击 dialog Activity 周围是否关闭弹窗 true 关闭(默认为true) false 为不关闭-->
+        <item name="android:windowCloseOnTouchOutside">false</item>
+    </style>
+
 </resources>