zhaoyadi 2 năm trước cách đây
mục cha
commit
e33996f8fc
20 tập tin đã thay đổi với 182 bổ sung171 xóa
  1. 5 13
      kit/src/main/java/com/tencent/liteav/demo/superplayer/SuperPlayerView.java
  2. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/player/ISuperPlayerListener.java
  3. 1 3
      kit/src/main/java/com/tencent/liteav/demo/superplayer/player/SuperPlayer.java
  4. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/player/SuperPlayerImpl.java
  5. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/player/SuperPlayerObserver.java
  6. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/ui/player/WindowPlayer.java
  7. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/util/NetWatcher.java
  8. 18 0
      kit/src/main/java/com/tencent/liteav/demo/superplayer/util/PlayerStateWatcher.java
  9. 1 1
      kit/src/main/java/com/tencent/liteav/demo/superplayer/util/VideoGestureDetector.java
  10. 2 2
      kit/src/main/kotlin/com/tencent/liteav/demo/superplayer/database/entity/CountDown.kt
  11. 1 1
      ui/src/main/AndroidManifest.xml
  12. 2 2
      ui/src/main/java/com/tencent/liteav/demo/player/util/PlayerModelProvider.java
  13. 11 3
      ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerActivity.kt
  14. 1 2
      ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerMenu.kt
  15. 92 100
      ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerVerify.kt
  16. 7 1
      ui/src/main/kotlin/com/tencent/liteav/demo/player/menu/PlayerTimer.kt
  17. 31 18
      ui/src/main/kotlin/com/tencent/liteav/demo/player/viewmodel/PlayerViewModel.kt
  18. 1 1
      ui/src/main/res/anim/activity_slide_left_to_right.xml
  19. 1 1
      ui/src/main/res/anim/activity_slide_right_to_left.xml
  20. 3 18
      ui/src/main/res/values/styles.xml

+ 5 - 13
kit/src/main/java/com/tencent/liteav/demo/superplayer/SuperPlayerView.java

@@ -4,32 +4,24 @@ import static com.tencent.liteav.demo.superplayer.SuperPlayerModel.PLAY_ACTION_A
 import static com.tencent.liteav.demo.superplayer.SuperPlayerModel.PLAY_ACTION_MANUAL_PLAY;
 import static com.tencent.liteav.demo.superplayer.SuperPlayerModel.PLAY_ACTION_PRELOAD;
 
-import android.app.Activity;
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
 import android.graphics.Path;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
 import android.graphics.RectF;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.LayoutInflater;
-import android.view.View;
 import android.view.ViewGroup;
-import android.view.WindowManager;
 import android.widget.RelativeLayout;
 import android.widget.Toast;
 
 
-import com.tencent.liteav.demo.superplayer.model.ISuperPlayerListener;
-import com.tencent.liteav.demo.superplayer.model.SuperPlayer;
-import com.tencent.liteav.demo.superplayer.model.SuperPlayerImpl;
-import com.tencent.liteav.demo.superplayer.model.SuperPlayerObserver;
-import com.tencent.liteav.demo.superplayer.model.utils.NetWatcher;
+import com.tencent.liteav.demo.superplayer.player.ISuperPlayerListener;
+import com.tencent.liteav.demo.superplayer.player.SuperPlayer;
+import com.tencent.liteav.demo.superplayer.player.SuperPlayerImpl;
+import com.tencent.liteav.demo.superplayer.player.SuperPlayerObserver;
+import com.tencent.liteav.demo.superplayer.util.NetWatcher;
 import com.tencent.liteav.demo.superplayer.ui.player.FullScreenPlayer;
 import com.tencent.liteav.demo.superplayer.ui.player.Player;
 import com.tencent.liteav.demo.superplayer.ui.player.WindowPlayer;

+ 1 - 1
kit/src/main/java/com/tencent/liteav/demo/superplayer/model/ISuperPlayerListener.java → kit/src/main/java/com/tencent/liteav/demo/superplayer/player/ISuperPlayerListener.java

@@ -1,4 +1,4 @@
-package com.tencent.liteav.demo.superplayer.model;
+package com.tencent.liteav.demo.superplayer.player;
 
 import android.os.Bundle;
 

+ 1 - 3
kit/src/main/java/com/tencent/liteav/demo/superplayer/model/SuperPlayer.java → kit/src/main/java/com/tencent/liteav/demo/superplayer/player/SuperPlayer.java

@@ -1,12 +1,10 @@
-package com.tencent.liteav.demo.superplayer.model;
+package com.tencent.liteav.demo.superplayer.player;
 
 import com.tencent.liteav.demo.superplayer.SuperPlayerDef;
 import com.tencent.liteav.demo.superplayer.SuperPlayerModel;
 import com.tencent.rtmp.TXLivePlayer;
 import com.tencent.rtmp.ui.TXCloudVideoView;
 
-import java.util.List;
-
 public interface SuperPlayer {
 
 

+ 1 - 1
kit/src/main/java/com/tencent/liteav/demo/superplayer/model/SuperPlayerImpl.java → kit/src/main/java/com/tencent/liteav/demo/superplayer/player/SuperPlayerImpl.java

@@ -1,4 +1,4 @@
-package com.tencent.liteav.demo.superplayer.model;
+package com.tencent.liteav.demo.superplayer.player;
 
 import static com.tencent.liteav.demo.superplayer.SuperPlayerModel.PLAY_ACTION_AUTO_PLAY;
 import static com.tencent.liteav.demo.superplayer.SuperPlayerModel.PLAY_ACTION_MANUAL_PLAY;

+ 1 - 1
kit/src/main/java/com/tencent/liteav/demo/superplayer/model/SuperPlayerObserver.java → kit/src/main/java/com/tencent/liteav/demo/superplayer/player/SuperPlayerObserver.java

@@ -1,4 +1,4 @@
-package com.tencent.liteav.demo.superplayer.model;
+package com.tencent.liteav.demo.superplayer.player;
 
 
 public abstract class SuperPlayerObserver {

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

@@ -16,7 +16,7 @@ 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.util.VideoGestureDetector;
 import com.tencent.liteav.demo.superplayer.ui.view.PointProgressBar;
 import com.tencent.liteav.demo.superplayer.ui.view.VideoProgressLayout;
 import com.tencent.liteav.demo.superplayer.ui.view.VolumeBrightnessProgressLayout;

+ 1 - 1
kit/src/main/java/com/tencent/liteav/demo/superplayer/model/utils/NetWatcher.java → kit/src/main/java/com/tencent/liteav/demo/superplayer/util/NetWatcher.java

@@ -1,4 +1,4 @@
-package com.tencent.liteav.demo.superplayer.model.utils;
+package com.tencent.liteav.demo.superplayer.util;
 
 import android.app.AlertDialog;
 import android.content.Context;

+ 18 - 0
kit/src/main/java/com/tencent/liteav/demo/superplayer/util/PlayerStateWatcher.java

@@ -0,0 +1,18 @@
+package com.tencent.liteav.demo.superplayer.util;
+
+public class PlayerStateWatcher {
+    private long startTime;
+    private long stopTime;
+
+    interface StateCallback {
+        void onOneTimePeriod(long start, long stop);
+    }
+
+    public void start() {
+
+    }
+
+    public void stop() {
+
+    }
+}

+ 1 - 1
kit/src/main/java/com/tencent/liteav/demo/superplayer/model/utils/VideoGestureDetector.java → kit/src/main/java/com/tencent/liteav/demo/superplayer/util/VideoGestureDetector.java

@@ -1,4 +1,4 @@
-package com.tencent.liteav.demo.superplayer.model.utils;
+package com.tencent.liteav.demo.superplayer.util;
 
 import android.app.Activity;
 import android.app.Service;

+ 2 - 2
kit/src/main/kotlin/com/tencent/liteav/demo/superplayer/database/entity/CountDown.kt

@@ -24,8 +24,8 @@ data class CountDown(
     val value: Int
 ) {
 
-    fun copy(
-        id: Long?,
+    fun copyWith(
+        id: Long? = null,
         courseId: String?,
         type: Int?,
         value: Int?

+ 1 - 1
ui/src/main/AndroidManifest.xml

@@ -40,7 +40,7 @@
             android:theme="@style/AppTheme.Dialog.Verify" />
 
         <activity
-            android:name=".PlayerTimer"
+            android:name=".menu.PlayerTimer"
             android:launchMode="singleTop"
             android:screenOrientation="landscape"
             android:theme="@style/AppTheme.Dialog" />

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

@@ -8,7 +8,7 @@ import java.util.List;
 public class PlayerModelProvider {
     private static final String VIDEO_URL = "https://www.douyin.com/aweme/v1/play/?video_id=v0200fg10000c9kggtjc77ubekkovilg&line=0&file_id=4465db5b9e48487197f8c0359e94ec46&sign=538e27bb98107b3dbabc0e24af67b0a8&is_play_url=1&source=PackSourceEnum_AWEME_DETAIL&aid=6383";
 
-    private static final String COVER_URL = "";
+    private static final String COVER_URL = "https://p9-pc-sign.douyinpic.com/tos-cn-p-0015/57aaf7f5975247e09c3df35e152055e4_1654159193~tplv-dy-360p.jpeg?biz_tag=pcweb_cover&from=4257465056&se=false&x-expires=1662015600&x-signature=0uL3qAHjGGcvaNmDuopeSCKdfm8%3D";
 
     private PlayerModelProvider() {
     }
@@ -24,7 +24,7 @@ public class PlayerModelProvider {
             model.url = VIDEO_URL;
 
             if (i % 2 == 0) {
-                model.cover = "https://p9-pc-sign.douyinpic.com/tos-cn-p-0015/57aaf7f5975247e09c3df35e152055e4_1654159193~tplv-dy-360p.jpeg?biz_tag=pcweb_cover&from=4257465056&se=false&x-expires=1662015600&x-signature=0uL3qAHjGGcvaNmDuopeSCKdfm8%3D";
+                model.cover = COVER_URL;
             }
             list.add(model);
         }

+ 11 - 3
ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerActivity.kt

@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.util.Log
 import android.view.View
 import android.view.WindowManager
+import android.widget.Toast
 import androidx.activity.viewModels
 import androidx.appcompat.app.AppCompatActivity
 import androidx.recyclerview.widget.LinearLayoutManager
@@ -59,7 +60,10 @@ class PlayerActivity : AppCompatActivity(),
     private val currentIndex = -1
 
     private val viewModel by viewModels<PlayerViewModel> {
-        PlayerViewModelFactory(((application) as PlayerDatabaseProvider).getPlayerRepository())
+        PlayerViewModelFactory(
+            "",
+            ((application) as PlayerDatabaseProvider).getPlayerRepository()
+        )
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -72,6 +76,9 @@ class PlayerActivity : AppCompatActivity(),
         updateList()
         viewModel.loadConfig(this)
 
+        viewModel.toastStr.observe(this) {
+            Toast.makeText(this, it, Toast.LENGTH_SHORT).show()
+        }
     }
 
     override fun onBackPressed() {
@@ -183,11 +190,12 @@ class PlayerActivity : AppCompatActivity(),
     private fun updateList() {
         mVodPlayerListAdapter.clear()
 
-        for (videoModel in PlayerModelProvider.getList()) {
+        val list = PlayerModelProvider.getList();
+        for (videoModel in list) {
             mVodPlayerListAdapter.addSuperPlayerModel(videoModel)
         }
 
-        mSuperPlayerView.setupModelList(PlayerModelProvider.getList())
+        mSuperPlayerView.setupModelList(list)
     }
 
     private var isFullScreen = false

+ 1 - 2
ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerMenu.kt

@@ -3,11 +3,10 @@ package com.tencent.liteav.demo.player
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
-import android.os.PersistableBundle
 import android.view.*
 import androidx.appcompat.app.AppCompatActivity
-import androidx.fragment.app.Fragment
 import com.tencent.liteav.demo.player.databinding.FragmentMenuBinding
+import com.tencent.liteav.demo.player.menu.PlayerTimer
 
 class PlayerMenu : AppCompatActivity(), View.OnClickListener {
     private var _viewBinding: FragmentMenuBinding? = null

+ 92 - 100
ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerVerify.kt

@@ -1,117 +1,109 @@
-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.FragmentVerifyBinding;
-
-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);
+package com.tencent.liteav.demo.player
+
+import android.content.Context
+import android.os.Bundle
+import android.text.TextUtils
+import android.content.Intent
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import com.tencent.liteav.demo.player.PlayerVerify
+import com.tencent.liteav.demo.player.databinding.FragmentVerifyBinding
+import java.util.*
+
+class PlayerVerify : AppCompatActivity(), View.OnClickListener {
+    private var _binding: FragmentVerifyBinding? = null
+    private val binding get() = _binding!!
+
+    private var a: Int = 0
+    private var b: Int = 0
+    private var c: Int = 0
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        _binding = FragmentVerifyBinding.inflate(layoutInflater)
+        setContentView(binding.root)
+        val random = Random()
+        a = random.nextInt(10)
+        b = random.nextInt(10)
+        c = random.nextInt(10)
+        binding.firstNum.text = a.toString()
+        binding.secondNum.text = b.toString()
+        binding.thirdNum.text = c.toString()
+        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)
     }
 
-    private FragmentVerifyBinding binding;
-
-    private int a = 0, b = 0, c = 0;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        binding = FragmentVerifyBinding.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);
+    override fun onClick(v: View) {
+        val id = v.id
+        if (id == binding.verifyClose.id) {
+            finish()
+        } else if (id == binding.verifyCheck.id) {
+            checkResult()
+        } else if (id == binding.verifyBtn0.id) {
+            addNumber(0)
+        } else if (id == binding.verifyBtn1.id) {
+            addNumber(1)
+        } else if (id == binding.verifyBtn2.id) {
+            addNumber(2)
+        } else if (id == binding.verifyBtn3.id) {
+            addNumber(3)
+        } else if (id == binding.verifyBtn4.id) {
+            addNumber(4)
+        } else if (id == binding.verifyBtn5.id) {
+            addNumber(5)
+        } else if (id == binding.verifyBtn6.id) {
+            addNumber(6)
+        } else if (id == binding.verifyBtn7.id) {
+            addNumber(7)
+        } else if (id == binding.verifyBtn8.id) {
+            addNumber(8)
+        } else if (id == binding.verifyBtn9.id) {
+            addNumber(9)
         }
     }
 
-    private void addNumber(int num) {
-        resetInput();
-        String result = binding.resultNum.getText().toString();
-
-        binding.resultNum.setText(result + num);
+    private fun addNumber(num: Int) {
+        resetInput()
+        val result = binding.resultNum.text.toString()
+        binding.resultNum.text = result + num
     }
 
-    private void checkResult() {
-        String result = binding.resultNum.getText().toString();
+    private fun checkResult() {
+        val result = binding.resultNum.text.toString()
         if (!TextUtils.isEmpty(result)) {
-            int resultNum = Integer.valueOf(result);
-
+            val resultNum = Integer.valueOf(result)
             if (resultNum == a * b + c) {
-                finish();
+                finish()
             } else {
-                checkError();
+                checkError()
             }
         }
     }
 
-    private void checkError() {
-        binding.verifyErrorImg.setVisibility(View.VISIBLE);
-        binding.resultNum.setVisibility(View.GONE);
-        binding.resultNum.setText("");
+    private fun checkError() {
+        binding.verifyErrorImg.visibility = View.VISIBLE
+        binding.resultNum.visibility = View.GONE
+        binding.resultNum.text = ""
+    }
+
+    private fun resetInput() {
+        binding.verifyErrorImg.visibility = View.GONE
+        binding.resultNum.visibility = View.VISIBLE
     }
 
-    private void resetInput() {
-        binding.verifyErrorImg.setVisibility(View.GONE);
-        binding.resultNum.setVisibility(View.VISIBLE);
+    companion object {
+        fun start(context: Context) {
+            val intent = Intent(context, PlayerVerify::class.java)
+            context.startActivity(intent)
+        }
     }
-}
+}

+ 7 - 1
ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerTimer.kt → ui/src/main/kotlin/com/tencent/liteav/demo/player/menu/PlayerTimer.kt

@@ -1,4 +1,4 @@
-package com.tencent.liteav.demo.player
+package com.tencent.liteav.demo.player.menu
 
 import android.os.Bundle
 import android.view.View
@@ -10,6 +10,8 @@ class PlayerTimer : AppCompatActivity(), View.OnClickListener {
     private var _viewBinding: FragmentTimerBinding? = null
     private val viewBinding get() = _viewBinding!!
 
+    private val back get() = viewBinding.menuItemBack
+
     private val none get() = viewBinding.timerItemNone
 
     private val ep1 get() = viewBinding.timerItemEpisodeOne
@@ -28,6 +30,7 @@ class PlayerTimer : AppCompatActivity(), View.OnClickListener {
 
         window.setLayout(-1, -1)
 
+        back.setOnClickListener(this)
         none.setOnClickListener(this)
         ep1.setOnClickListener(this)
         ep2.setOnClickListener(this)
@@ -40,6 +43,9 @@ class PlayerTimer : AppCompatActivity(), View.OnClickListener {
 
     override fun onClick(v: View) {
         when (v.id) {
+            back.id -> {
+                finish()
+            }
             none.id -> {
                 PlayerTimerUtil.setTimer(0, 0)
             }

+ 31 - 18
ui/src/main/kotlin/com/tencent/liteav/demo/player/viewmodel/PlayerViewModel.kt

@@ -1,6 +1,7 @@
 package com.tencent.liteav.demo.player.viewmodel
 
 import android.content.Context
+import android.content.SharedPreferences
 import android.util.Log
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
@@ -18,6 +19,7 @@ import java.text.SimpleDateFormat
 import java.util.*
 
 class PlayerViewModel(
+    private val courseId: String,
     private val repository: PlayerRepository
 ) : ViewModel(), PlayerTimerUtil.Listener {
 
@@ -29,12 +31,18 @@ class PlayerViewModel(
 
     private val countDownLiveData: MutableLiveData<Long> = MutableLiveData()
 
-    private val toastStr: MutableLiveData<String> = MutableLiveData()
+    public val toastStr: MutableLiveData<String> = MutableLiveData()
 
     public fun loadConfig(context: Context) = viewModelScope.launch {
-        repository.findHasCountDown("").first()?.let {
-
-        }
+        val common = context.getSharedPreferences("player_timer", Context.MODE_PRIVATE)
+        val defaultType = common.getInt("type", 0);
+        val defaultValue = common.getInt("value", 0);
+        val default = CountDown(
+            courseId = courseId,
+            type = defaultType,
+            value = defaultValue,
+        )
+        val special = repository.findHasCountDown(courseId).first()
     }
 
     /* 保存一条观看时间段的记录 */
@@ -43,12 +51,12 @@ class PlayerViewModel(
     }
 
     /* 保存对该门课程单独设置的定时 */
-    public fun saveCountDown(countDown: CountDown) = viewModelScope.launch {
+    private fun saveCountDown(countDown: CountDown) = viewModelScope.launch(Dispatchers.IO) {
         repository.insertCountDown(countDown)
     }
 
     /* 开启定时器 */
-    public fun setCountDown(countDown: CountDown) {
+    private fun setCountDown(countDown: CountDown) {
         if (countDown.type == CountDown.TYPE_EPISODE) {
 
         } else if (countDown.type == CountDown.TYPE_DURATION) {
@@ -71,21 +79,23 @@ class PlayerViewModel(
     override fun onListen(type: Int, value: Int) {
         Log.d("PVM", "onListen: $type , $value")
 
-        if (type == 0) {
-
-        } else {
-
-            val countdown = countDown?.copy(
-                courseId = "",
+        countDown = if (countDown == null) {
+            CountDown(
+                courseId = courseId,
                 type = type,
                 value = value
-            ) ?: CountDown(
-                courseId = "",
+            )
+        } else {
+            countDown!!.copyWith(
+                courseId = courseId,
                 type = type,
                 value = value
             )
-            setCountDown(countdown)
-            saveCountDown(countdown)
+        }
+
+        countDown!!.let {
+            setCountDown(it)
+            saveCountDown(it)
         }
     }
 
@@ -96,11 +106,14 @@ class PlayerViewModel(
 
 }
 
-class PlayerViewModelFactory(private val repository: PlayerRepository) : ViewModelProvider.Factory {
+class PlayerViewModelFactory(
+    private val courseId: String,
+    private val repository: PlayerRepository,
+) : ViewModelProvider.Factory {
     override fun <T : ViewModel> create(modelClass: Class<T>): T {
         if (modelClass.isAssignableFrom(PlayerViewModel::class.java)) {
             @Suppress("UNCHECKED_CAST")
-            return PlayerViewModel(repository) as T
+            return PlayerViewModel(courseId, repository) as T
         }
         throw IllegalArgumentException("Unknown ViewModel class")
     }

+ 1 - 1
ui/src/main/res/anim/activity_slide_left_to_right.xml

@@ -3,7 +3,7 @@
     <translate
         android:interpolator="@android:anim/accelerate_interpolator"
         android:fromXDelta="0"
-        android:duration="800"
+        android:duration="200"
         android:toXDelta="100%" />
 
 <!--    <alpha-->

+ 1 - 1
ui/src/main/res/anim/activity_slide_right_to_left.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android">
     <translate
-        android:duration="800"
+        android:duration="200"
         android:fromXDelta="40%"
         android:fromYDelta="0"
         android:interpolator="@android:anim/accelerate_interpolator"

+ 3 - 18
ui/src/main/res/values/styles.xml

@@ -11,20 +11,6 @@
         <item name="android:windowTranslucentStatus">true</item>
     </style>
 
-    <style name="superplayer_dialog_common" parent="android:style/Theme.Dialog">
-        <item name="android:background">@android:color/transparent</item>
-        <item name="android:windowBackground">@android:color/transparent</item>
-    </style>
-
-    <style name="superplayer_tip_common" parent="android:style/Theme.Dialog">
-        <item name="android:backgroundDimEnabled">false</item>
-        <!--        <item name="android:backgroundDimAmount">0</item>-->
-        <!--        <item name="android:windowIsTranslucent">true</item>-->
-        <!--        <item name="android:windowIsFloating">true</item>-->
-        <item name="android:background">@android:color/transparent</item>
-        <item name="android:windowBackground">@android:color/transparent</item>
-    </style>
-
     <!--dialog样式的界面-->
     <style name="AppTheme.Dialog" parent="PlayerTheme">
         <item name="android:windowFrame">@null</item>
@@ -33,7 +19,7 @@
         <item name="android:windowIsFloating">true</item>
         <!--透明是否-->
         <item name="android:windowIsTranslucent">true</item>
-        <item name="android:background">@null</item>
+        <item name="android:background">@android:color/transparent</item>
         <item name="android:windowBackground">@android:color/transparent</item>
         <!--设置没有窗口标题、dialog标题等各种标题-->
         <item name="android:windowNoTitle">true</item>
@@ -51,10 +37,8 @@
     <style name="activityAnimation">
         <item name="android:activityOpenEnterAnimation">@anim/activity_slide_right_to_left</item>
         <item name="android:activityOpenExitAnimation">@anim/activity_slide_right_to_left</item>
-
         <item name="android:activityCloseEnterAnimation">@anim/activity_slide_left_to_right</item>
         <item name="android:activityCloseExitAnimation">@anim/activity_slide_left_to_right</item>
-
     </style>
 
 
@@ -65,7 +49,7 @@
         <item name="android:windowIsFloating">true</item>
         <!--透明是否-->
         <item name="android:windowIsTranslucent">true</item>
-        <item name="android:background">@null</item>
+        <item name="android:background">@android:color/transparent</item>
         <item name="android:windowBackground">@android:color/transparent</item>
         <!--设置没有窗口标题、dialog标题等各种标题-->
         <item name="android:windowNoTitle">true</item>
@@ -74,6 +58,7 @@
         <item name="android:dialogTitle">@null</item>
         <!--点击 dialog Activity 周围是否关闭弹窗 true 关闭(默认为true) false 为不关闭-->
         <item name="android:windowCloseOnTouchOutside">false</item>
+        <item name="android:windowAnimationStyle">@style/activityAnimation</item>
     </style>
 
 </resources>