Selaa lähdekoodia

1.添加游戏结算页面

王鹏鹏 2 vuotta sitten
vanhempi
commit
92da06b2a9

+ 2 - 2
baselib/build.gradle

@@ -40,7 +40,7 @@ android {
             buildConfigField "String", "BAIDU_SECRETKEY", "\"41Fzb2ZIuKRGNtrVcQOHxEI3vFM4Rkxi\""
             buildConfigField "Boolean", "SINGLE_MODULE", "${singleModule}"
             buildConfigField "String", "BUGLY_APPID", "\"d400f20398\""
-            buildConfigField "String", "API_URL", "\"http://60.205.201.7:8110\""
+            buildConfigField "String", "API_URL", "\"http://192.168.0.122:8110\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
 
@@ -54,7 +54,7 @@ android {
             buildConfigField "String", "BAIDU_SECRETKEY", "\"41Fzb2ZIuKRGNtrVcQOHxEI3vFM4Rkxi\""
             buildConfigField "Boolean", "SINGLE_MODULE", "${singleModule}"
             buildConfigField "String", "BUGLY_APPID", "\"ad3db4d529\""
-            buildConfigField "String", "API_URL", "\"http://60.205.201.7:8110\""
+            buildConfigField "String", "API_URL", "\"http://192.168.0.122:8110\""
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
     }

+ 14 - 0
game/src/main/java/com/yingyangfly/game/dialog/CountdownDialog.kt

@@ -4,8 +4,12 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatImageView
 import androidx.appcompat.widget.AppCompatTextView
 import androidx.fragment.app.DialogFragment
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.engine.DiskCacheStrategy
+import com.bumptech.glide.request.RequestOptions
 import com.gyf.immersionbar.BarHide
 import com.gyf.immersionbar.ktx.immersionBar
 import com.yingyangfly.baselib.utils.RxTimer
@@ -18,6 +22,8 @@ import com.yingyangfly.game.R
 class CountdownDialog : DialogFragment() {
 
     private lateinit var rxTimer: RxTimer
+    private var url = ""
+    private var gameImage: AppCompatImageView? = null
     private var tvCountdown: AppCompatTextView? = null
     var onDialogClickListener: ((bean: String) -> Unit)? = null
 
@@ -27,6 +33,10 @@ class CountdownDialog : DialogFragment() {
         dialog?.setCanceledOnTouchOutside(true)
     }
 
+    fun setContentBackground(url: String) {
+        this.url = url
+    }
+
     override fun onStart() {
         super.onStart()
         dialog?.window?.setLayout(
@@ -55,6 +65,10 @@ class CountdownDialog : DialogFragment() {
 
     private fun findId(rootView: View) {
         tvCountdown = rootView.findViewById(R.id.tvCountdown)
+        gameImage = rootView.findViewById(R.id.gameImage)
+        val options: RequestOptions = RequestOptions()
+            .diskCacheStrategy(DiskCacheStrategy.ALL)
+        Glide.with(requireActivity()).load(url).apply(options).into(gameImage!!)
     }
 
     private fun initData() {

+ 9 - 0
game/src/main/java/com/yingyangfly/game/entity/GameBean.java

@@ -28,6 +28,7 @@ public class GameBean implements Serializable {
     private String patientId;
     private String playClass;
     private String totalNum;
+    private String gameInbetweenImage;
 
     public String getDesn() {
         return desn;
@@ -185,4 +186,12 @@ public class GameBean implements Serializable {
     public void setTotalNum(String totalNum) {
         this.totalNum = totalNum;
     }
+
+    public String getGameInbetweenImage() {
+        return gameInbetweenImage;
+    }
+
+    public void setGameInbetweenImage(String gameInbetweenImage) {
+        this.gameInbetweenImage = gameInbetweenImage;
+    }
 }

+ 10 - 2
game/src/main/java/com/yingyangfly/game/introduction/GameIntroductionActivity.kt

@@ -3,6 +3,7 @@ package com.yingyangfly.game.introduction
 import android.annotation.SuppressLint
 import android.content.Intent
 import android.os.Bundle
+import android.text.TextUtils
 import android.util.Log
 import android.view.MotionEvent
 import android.view.View
@@ -34,18 +35,23 @@ class GameIntroductionActivity :
     private var isEnterGame = false
     private var gameCode: String = ""
     private var playClass: String = ""
+    private var gameInbetweenImage: String = ""
+    private var gameBackgroundImage: String = ""
     private var gameBean: GameBean? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
         gameCode = intent.getStringExtra("gameCode") ?: ""
         playClass = intent.getStringExtra("playClass") ?: ""
         videoUrl = intent.getStringExtra("videoUrl") ?: ""
+        gameInbetweenImage = intent.getStringExtra("gameInbetweenImage") ?: ""
+        gameBackgroundImage = intent.getStringExtra("gameBackgroundImage") ?: ""
         super.onCreate(savedInstanceState)
     }
 
     override fun initViews() {
-
-
+        if (TextUtils.isEmpty(gameInbetweenImage).not()) {
+            binding.image = gameInbetweenImage
+        }
     }
 
     @SuppressLint("ClickableViewAccessibility")
@@ -122,6 +128,8 @@ class GameIntroductionActivity :
                             .withString("playClass", playClass)
                             .withString("url", url)
                             .withString("gameTotalScore", gameBean!!.gameTotalScore)
+                            .withString("gameInbetweenImage", gameInbetweenImage)
+                            .withString("gameBackgroundImage", gameBackgroundImage)
                             .withTransition(R.anim.leftin, R.anim.leftout)
                             .navigation(mContext)
                     }

+ 29 - 15
game/src/main/java/com/yingyangfly/game/loading/GameLoadingActivity.kt

@@ -6,6 +6,7 @@ import com.alibaba.android.arouter.launcher.ARouter
 import com.bumptech.glide.Glide
 import com.yingyangfly.baselib.R
 import com.yingyangfly.baselib.base.BaseActivity
+import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.RxTimer
 import com.yingyangfly.game.databinding.ActivityGameLoadingBinding
@@ -14,7 +15,7 @@ import com.yingyangfly.game.databinding.ActivityGameLoadingBinding
  * 游戏引导页
  */
 @Route(path = RouterUrlCommon.gameLoading)
-class GameLoadingActivity : BaseActivity<ActivityGameLoadingBinding>() {
+class GameLoadingActivity : BaseMVVMActivity<ActivityGameLoadingBinding, GameLoadingViewModel>() {
 
     private var gameCode: String = ""
     private var playClass: String = ""
@@ -30,20 +31,7 @@ class GameLoadingActivity : BaseActivity<ActivityGameLoadingBinding>() {
     }
 
     override fun initViews() {
-        rxTimer = RxTimer()
-        val m: Long = 1000
-        rxTimer.interval(m) {
-            binding.progressBar.progress = it.toInt() + 1
-            if (time == it) {
-                ARouter.getInstance().build(RouterUrlCommon.gameIntroduction)
-                    .withString("gameCode", gameCode)
-                    .withString("playClass", playClass)
-                    .withString("videoUrl", videoUrl)
-                    .withTransition(R.anim.leftin, R.anim.leftout)
-                    .navigation(mContext)
-                finish()
-            }
-        }
+        loadData()
     }
 
     override fun initListener() {
@@ -55,5 +43,31 @@ class GameLoadingActivity : BaseActivity<ActivityGameLoadingBinding>() {
             .asGif()
             .load(R.drawable.fish)
             .into(binding.loadingImage)
+        rxTimer = RxTimer()
+        val m: Long = 1000
+        rxTimer.interval(m) {
+            binding.progressBar.progress = it.toInt() + 1
+        }
+    }
+
+    private fun loadData() {
+        viewModel.getGameDetailByCode(gameCode, playClass, fail = {
+            binding.progressBar.progress = 3
+        }, success = {
+            runOnUiThread {
+                binding.progressBar.progress = 3
+                if (it != null) {
+                    ARouter.getInstance().build(RouterUrlCommon.gameIntroduction)
+                        .withString("gameCode", gameCode)
+                        .withString("playClass", playClass)
+                        .withString("videoUrl", it.gameVideoUrl)
+                        .withString("gameInbetweenImage", it.gameInbetweenImage)
+                        .withString("gameBackgroundImage", it.gameBackgroundImage)
+                        .withTransition(R.anim.leftin, R.anim.leftout)
+                        .navigation(mContext)
+                    finish()
+                }
+            }
+        })
     }
 }

+ 36 - 0
game/src/main/java/com/yingyangfly/game/loading/GameLoadingViewModel.kt

@@ -0,0 +1,36 @@
+package com.yingyangfly.game.loading
+
+import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.baselib.utils.GsonUtil
+import com.yingyangfly.game.entity.GameBean
+import com.yingyangfly.game.entity.GetGameDetailByCodeBean
+import com.yingyangfly.game.net.GAME_API
+
+/**
+ * @author 王鹏鹏
+ */
+class GameLoadingViewModel : BaseViewModel() {
+
+    /**
+     * 获取游戏详情
+     */
+    fun getGameDetailByCode(
+        code: String,
+        playClasses: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: GameBean?) -> Unit)? = null,
+    ) = launchFlow(false) {
+        val requestBean = GetGameDetailByCodeBean().apply {
+            gameCode = code
+            playClass = playClasses
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        GAME_API.getGameDetailByCode(body)
+    }.runUI(
+        success,
+        fail
+    )
+
+
+}

+ 8 - 0
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -47,6 +47,8 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     private var playClass: String = ""
     private var url: String = ""
     private var gameTotalScore: String = ""
+    private var gameInbetweenImage = ""
+    private var gameBackgroundImage = ""
     private lateinit var webSettings: WebSettings
     private var gameResultDialog: GameResultDialog? = null
 
@@ -55,6 +57,8 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         playClass = intent.getStringExtra("playClass") ?: ""
         url = intent.getStringExtra("url") ?: ""
         gameTotalScore = intent.getStringExtra("gameTotalScore") ?: ""
+        gameInbetweenImage = intent.getStringExtra("gameInbetweenImage") ?: ""
+        gameBackgroundImage = intent.getStringExtra("gameBackgroundImage") ?: ""
         super.onCreate(savedInstanceState)
     }
 
@@ -62,6 +66,9 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         if (TextUtils.isEmpty(url).not()) {
             initWebView(url)
         }
+        if(TextUtils.isEmpty(gameBackgroundImage).not()){
+            binding.image = gameBackgroundImage
+        }
     }
 
     @SuppressLint("ClickableViewAccessibility")
@@ -229,6 +236,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         if (newStartGame) {
             newStartGame = false
             val countdownDialog = CountdownDialog()
+            countdownDialog.setContentBackground(gameInbetweenImage)
             countdownDialog.onDialogClickListener = {
                 if (loadingOver) {
                     callStartGame()

+ 127 - 112
game/src/main/res/layout/activity_game_introduction.xml

@@ -6,127 +6,142 @@
 
     <data>
 
+        <variable
+            name="image"
+            type="java.lang.String" />
+
         <variable
             name="data"
             type="com.yingyangfly.game.entity.GameBean" />
     </data>
 
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/gameLayout"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/bg_game_introduction">
+        android:layout_height="match_parent">
 
         <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/homeImage"
-            android:layout_width="@dimen/divider_48px"
-            android:layout_height="@dimen/divider_43px"
-            android:layout_marginStart="@dimen/divider_65px"
-            android:layout_marginTop="@dimen/divider_35px"
-            android:background="@mipmap/bg_home"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tvTitle"
-            android:layout_width="@dimen/divider_266px"
-            android:layout_height="@dimen/divider_85px"
-            android:layout_marginTop="@dimen/divider_35px"
-            android:background="@drawable/bg_game_title"
-            android:gravity="center"
-            android:text="@{data.gameName}"
-            android:textColor="@color/color_FFFFA413"
-            android:textSize="@dimen/divider_34px"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <com.google.android.material.card.MaterialCardView
-            android:id="@+id/gameCardLayout"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/divider_522px"
-            android:layout_marginStart="@dimen/divider_43px"
-            android:layout_marginTop="@dimen/divider_20px"
-            android:layout_marginEnd="@dimen/divider_43px"
-            android:theme="@style/Theme.MaterialComponents.NoActionBar"
-            app:cardBackgroundColor="@color/color_FFF2EFFF"
-            app:cardCornerRadius="@dimen/divider_49px"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tvTitle">
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:orientation="horizontal">
-
-                <androidx.cardview.widget.CardView
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_marginStart="@dimen/divider_27px"
-                    android:layout_marginTop="@dimen/divider_29px"
-                    android:layout_marginEnd="@dimen/divider_15px"
-                    android:layout_marginBottom="@dimen/divider_33px"
-                    android:layout_weight="1"
-                    app:cardBackgroundColor="@android:color/white"
-                    app:cardCornerRadius="@dimen/divider_26px"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent">
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop"
+            app:isCircle="@{false}"
+            app:loadHeadImg="@{image}" />
 
-
-                </androidx.cardview.widget.CardView>
-
-
-                <com.google.android.material.card.MaterialCardView
-                    android:layout_width="0dp"
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/gameLayout"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/homeImage"
+                android:layout_width="@dimen/divider_48px"
+                android:layout_height="@dimen/divider_43px"
+                android:layout_marginStart="@dimen/divider_65px"
+                android:layout_marginTop="@dimen/divider_35px"
+                android:background="@mipmap/bg_home"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvTitle"
+                android:layout_width="@dimen/divider_266px"
+                android:layout_height="@dimen/divider_85px"
+                android:layout_marginTop="@dimen/divider_35px"
+                android:background="@drawable/bg_game_title"
+                android:gravity="center"
+                android:text="@{data.gameName}"
+                android:textColor="@color/color_FFFFA413"
+                android:textSize="@dimen/divider_34px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <com.google.android.material.card.MaterialCardView
+                android:id="@+id/gameCardLayout"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/divider_522px"
+                android:layout_marginStart="@dimen/divider_43px"
+                android:layout_marginTop="@dimen/divider_20px"
+                android:layout_marginEnd="@dimen/divider_43px"
+                android:theme="@style/Theme.MaterialComponents.NoActionBar"
+                app:cardBackgroundColor="@color/color_FFF2EFFF"
+                app:cardCornerRadius="@dimen/divider_49px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvTitle">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
                     android:layout_height="match_parent"
-                    android:layout_marginStart="@dimen/divider_15px"
-                    android:layout_marginTop="@dimen/divider_29px"
-                    android:layout_marginEnd="@dimen/divider_28px"
-                    android:layout_marginBottom="@dimen/divider_33px"
-                    android:layout_weight="1"
-                    android:theme="@style/Theme.MaterialComponents.NoActionBar"
-                    app:cardBackgroundColor="@android:color/white"
-                    app:cardCornerRadius="@dimen/divider_26px"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent">
-
-
-                </com.google.android.material.card.MaterialCardView>
-
-            </LinearLayout>
-        </com.google.android.material.card.MaterialCardView>
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tvRecord"
-            android:layout_width="@dimen/divider_299px"
-            android:layout_height="@dimen/divider_87px"
-            android:layout_marginStart="@dimen/divider_238px"
-            android:layout_marginTop="@dimen/divider_42px"
-            android:layout_marginBottom="@dimen/divider_43px"
-            android:background="@drawable/bg_game_record"
-            android:gravity="center"
-            android:text='@{"最佳纪录 "+data.gameTotalScore}'
-            android:textColor="@color/color_FFFFA413"
-            android:textSize="@dimen/divider_28px"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/gameCardLayout" />
-
-        <androidx.appcompat.widget.AppCompatButton
-            android:id="@+id/btnStartGame"
-            android:layout_width="@dimen/divider_299px"
-            android:layout_height="@dimen/divider_87px"
-            android:layout_marginStart="@dimen/divider_90px"
-            android:background="@drawable/bg_start_game"
-            android:gravity="center"
-            android:text="@string/started_training"
-            android:textColor="@android:color/white"
-            android:textSize="@dimen/divider_28px"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/tvRecord"
-            app:layout_constraintTop_toBottomOf="@+id/gameCardLayout" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
+                    android:orientation="horizontal">
+
+                    <androidx.cardview.widget.CardView
+                        android:layout_width="0dp"
+                        android:layout_height="match_parent"
+                        android:layout_marginStart="@dimen/divider_27px"
+                        android:layout_marginTop="@dimen/divider_29px"
+                        android:layout_marginEnd="@dimen/divider_15px"
+                        android:layout_marginBottom="@dimen/divider_33px"
+                        android:layout_weight="1"
+                        app:cardBackgroundColor="@android:color/white"
+                        app:cardCornerRadius="@dimen/divider_26px"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent">
+
+
+                    </androidx.cardview.widget.CardView>
+
+
+                    <com.google.android.material.card.MaterialCardView
+                        android:layout_width="0dp"
+                        android:layout_height="match_parent"
+                        android:layout_marginStart="@dimen/divider_15px"
+                        android:layout_marginTop="@dimen/divider_29px"
+                        android:layout_marginEnd="@dimen/divider_28px"
+                        android:layout_marginBottom="@dimen/divider_33px"
+                        android:layout_weight="1"
+                        android:theme="@style/Theme.MaterialComponents.NoActionBar"
+                        app:cardBackgroundColor="@android:color/white"
+                        app:cardCornerRadius="@dimen/divider_26px"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent">
+
+
+                    </com.google.android.material.card.MaterialCardView>
+
+                </LinearLayout>
+            </com.google.android.material.card.MaterialCardView>
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvRecord"
+                android:layout_width="@dimen/divider_299px"
+                android:layout_height="@dimen/divider_87px"
+                android:layout_marginStart="@dimen/divider_238px"
+                android:layout_marginTop="@dimen/divider_42px"
+                android:layout_marginBottom="@dimen/divider_43px"
+                android:background="@drawable/bg_game_record"
+                android:gravity="center"
+                android:text='@{"最佳纪录 "+data.gameTotalScore}'
+                android:textColor="@color/color_FFFFA413"
+                android:textSize="@dimen/divider_28px"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/gameCardLayout" />
+
+            <androidx.appcompat.widget.AppCompatButton
+                android:id="@+id/btnStartGame"
+                android:layout_width="@dimen/divider_299px"
+                android:layout_height="@dimen/divider_87px"
+                android:layout_marginStart="@dimen/divider_90px"
+                android:background="@drawable/bg_start_game"
+                android:gravity="center"
+                android:text="@string/started_training"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_28px"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/tvRecord"
+                app:layout_constraintTop_toBottomOf="@+id/gameCardLayout" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </FrameLayout>
 </layout>

+ 122 - 107
game/src/main/res/layout/activity_play_game.xml

@@ -6,129 +6,144 @@
 
     <data>
 
+        <variable
+            name="image"
+            type="java.lang.String" />
+
         <variable
             name="data"
             type="com.yingyangfly.game.entity.GameBean" />
     </data>
 
-    <androidx.constraintlayout.widget.ConstraintLayout
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/bg_game_introduction">
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tvPause"
-            android:layout_width="@dimen/divider_169px"
-            android:layout_height="@dimen/divider_65px"
-            android:layout_marginStart="@dimen/divider_32px"
-            android:layout_marginTop="@dimen/divider_32px"
-            android:background="@drawable/bg_game_pause"
-            android:gravity="center"
-            android:text="@string/pause_help"
-            android:textColor="@color/color_FFFFA916"
-            android:textSize="@dimen/divider_28px"
-            android:textStyle="bold"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+        android:layout_height="match_parent">
 
         <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/loadingImage"
-            android:layout_width="@dimen/divider_176px"
-            android:layout_height="@dimen/divider_289px"
-            android:layout_marginStart="@dimen/divider_21px"
-            android:layout_marginBottom="@dimen/divider_61px"
-            android:scaleType="centerInside"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent" />
-
-        <com.google.android.material.card.MaterialCardView
-            android:id="@+id/gameLayout"
-            android:layout_width="0dp"
+            android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_marginStart="@dimen/divider_8px"
-            android:layout_marginTop="@dimen/divider_104px"
-            android:layout_marginEnd="@dimen/divider_12px"
-            android:layout_marginBottom="@dimen/divider_62px"
-            android:layout_weight="1"
-            android:theme="@style/Theme.MaterialComponents.NoActionBar"
-            app:cardBackgroundColor="@android:color/white"
-            app:cardCornerRadius="@dimen/divider_49px"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@+id/tvTime"
-            app:layout_constraintStart_toEndOf="@+id/loadingImage"
-            app:layout_constraintTop_toTopOf="parent">
-
-            <!-- webview 演示web调用Java -->
-            <com.github.lzyzsd.jsbridge.BridgeWebView
-                android:id="@+id/webView"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@android:color/white"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
+            android:scaleType="centerCrop"
+            app:isCircle="@{false}"
+            app:loadHeadImg="@{image}" />
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvPause"
+                android:layout_width="@dimen/divider_169px"
+                android:layout_height="@dimen/divider_65px"
+                android:layout_marginStart="@dimen/divider_32px"
+                android:layout_marginTop="@dimen/divider_32px"
+                android:background="@drawable/bg_game_pause"
+                android:gravity="center"
+                android:text="@string/pause_help"
+                android:textColor="@color/color_FFFFA916"
+                android:textSize="@dimen/divider_28px"
+                android:textStyle="bold"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
-        </com.google.android.material.card.MaterialCardView>
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tvTime"
-            android:layout_width="@dimen/divider_153px"
-            android:layout_height="@dimen/divider_124px"
-            android:layout_marginStart="@dimen/divider_18px"
-            android:layout_marginTop="@dimen/divider_154px"
-            android:layout_marginEnd="@dimen/divider_51px"
-            android:background="@drawable/bg_game_score"
-            android:gravity="center"
-            android:textColor="@color/color_FFFFA413"
-            android:textSize="@dimen/divider_48px"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/gameLayout"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <LinearLayout
-            android:id="@+id/scoreLayout"
-            android:layout_width="@dimen/divider_153px"
-            android:layout_height="@dimen/divider_124px"
-            android:layout_marginStart="@dimen/divider_18px"
-            android:layout_marginTop="@dimen/divider_79px"
-            android:layout_marginEnd="@dimen/divider_51px"
-            android:background="@drawable/bg_game_score"
-            android:gravity="center_horizontal"
-            android:orientation="vertical"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/gameLayout"
-            app:layout_constraintTop_toBottomOf="@+id/tvTime">
+            <androidx.appcompat.widget.AppCompatImageView
+                android:id="@+id/loadingImage"
+                android:layout_width="@dimen/divider_176px"
+                android:layout_height="@dimen/divider_289px"
+                android:layout_marginStart="@dimen/divider_21px"
+                android:layout_marginBottom="@dimen/divider_61px"
+                android:scaleType="centerInside"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="parent" />
+
+            <com.google.android.material.card.MaterialCardView
+                android:id="@+id/gameLayout"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_marginStart="@dimen/divider_8px"
+                android:layout_marginTop="@dimen/divider_104px"
+                android:layout_marginEnd="@dimen/divider_12px"
+                android:layout_marginBottom="@dimen/divider_62px"
+                android:layout_weight="1"
+                android:theme="@style/Theme.MaterialComponents.NoActionBar"
+                app:cardBackgroundColor="@android:color/white"
+                app:cardCornerRadius="@dimen/divider_49px"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toStartOf="@+id/tvTime"
+                app:layout_constraintStart_toEndOf="@+id/loadingImage"
+                app:layout_constraintTop_toTopOf="parent">
+
+                <!-- webview 演示web调用Java -->
+                <com.github.lzyzsd.jsbridge.BridgeWebView
+                    android:id="@+id/webView"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:background="@android:color/white"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+            </com.google.android.material.card.MaterialCardView>
 
             <androidx.appcompat.widget.AppCompatTextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/divider_20px"
-                android:text="得分"
+                android:id="@+id/tvTime"
+                android:layout_width="@dimen/divider_153px"
+                android:layout_height="@dimen/divider_124px"
+                android:layout_marginStart="@dimen/divider_18px"
+                android:layout_marginTop="@dimen/divider_154px"
+                android:layout_marginEnd="@dimen/divider_51px"
+                android:background="@drawable/bg_game_score"
+                android:gravity="center"
                 android:textColor="@color/color_FFFFA413"
-                android:textSize="@dimen/divider_32px" />
+                android:textSize="@dimen/divider_48px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/gameLayout"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <LinearLayout
+                android:id="@+id/scoreLayout"
+                android:layout_width="@dimen/divider_153px"
+                android:layout_height="@dimen/divider_124px"
+                android:layout_marginStart="@dimen/divider_18px"
+                android:layout_marginTop="@dimen/divider_79px"
+                android:layout_marginEnd="@dimen/divider_51px"
+                android:background="@drawable/bg_game_score"
+                android:gravity="center_horizontal"
+                android:orientation="vertical"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/gameLayout"
+                app:layout_constraintTop_toBottomOf="@+id/tvTime">
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/divider_20px"
+                    android:text="得分"
+                    android:textColor="@color/color_FFFFA413"
+                    android:textSize="@dimen/divider_32px" />
+
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/tvScore"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/color_FFFFA413"
+                    android:textSize="@dimen/divider_32px" />
+            </LinearLayout>
 
             <androidx.appcompat.widget.AppCompatTextView
-                android:id="@+id/tvScore"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:id="@+id/tvGameLevel"
+                android:layout_width="@dimen/divider_153px"
+                android:layout_height="@dimen/divider_124px"
+                android:layout_marginStart="@dimen/divider_18px"
+                android:layout_marginTop="@dimen/divider_154px"
+                android:layout_marginEnd="@dimen/divider_51px"
+                android:background="@drawable/bg_game_score"
+                android:gravity="center"
                 android:textColor="@color/color_FFFFA413"
-                android:textSize="@dimen/divider_32px" />
-        </LinearLayout>
-
-        <androidx.appcompat.widget.AppCompatTextView
-            android:id="@+id/tvGameLevel"
-            android:layout_width="@dimen/divider_153px"
-            android:layout_height="@dimen/divider_124px"
-            android:layout_marginStart="@dimen/divider_18px"
-            android:layout_marginTop="@dimen/divider_154px"
-            android:layout_marginEnd="@dimen/divider_51px"
-            android:background="@drawable/bg_game_score"
-            android:gravity="center"
-            android:textColor="@color/color_FFFFA413"
-            android:textSize="@dimen/divider_48px"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@+id/gameLayout"
-            app:layout_constraintTop_toBottomOf="@+id/scoreLayout" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
+                android:textSize="@dimen/divider_48px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/gameLayout"
+                app:layout_constraintTop_toBottomOf="@+id/scoreLayout" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </FrameLayout>
 </layout>

+ 10 - 7
game/src/main/res/layout/dialog_count_down.xml

@@ -1,23 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@drawable/bg_game_introduction"
     tools:ignore="ResourceName">
 
+    <androidx.appcompat.widget.AppCompatImageView
+        android:id="@+id/gameImage"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="centerCrop" />
+
     <androidx.appcompat.widget.AppCompatTextView
         android:id="@+id/tvCountdown"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:gravity="center"
         android:textColor="@android:color/white"
         android:textSize="@dimen/divider_200px"
         android:textStyle="bold"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
         tools:text="3" />
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</FrameLayout>