Browse Source

1.优化代码

王鹏鹏 2 years ago
parent
commit
5164474747

+ 56 - 13
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -11,11 +11,14 @@ import android.text.TextUtils
 import android.util.Log
 import android.view.MotionEvent
 import android.view.View
+import android.view.ViewTreeObserver
 import android.webkit.WebResourceRequest
 import android.webkit.WebSettings
 import android.webkit.WebView
 import android.webkit.WebViewClient
 import android.widget.FrameLayout
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.constraintlayout.widget.ConstraintSet
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.alibaba.android.arouter.launcher.ARouter
 import com.bumptech.glide.Glide
@@ -71,6 +74,10 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     private var voicePlayer: VoicePlayer? = null
     private var gameResultDialog: GameResultDialog? = null
 
+    var mWebViewHeight = 0
+    var mWebViewWidth = 0
+    private var mConstrainSet_one: ConstraintSet? = ConstraintSet()
+
     override fun onCreate(savedInstanceState: Bundle?) {
         gameCode = intent.getStringExtra("gameCode") ?: ""
         playClass = intent.getStringExtra("playClass") ?: ""
@@ -100,18 +107,19 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         binding {
             tvPause.setOnTouchListener(this@PlayGameActivity)
             tvPauses.setOnTouchListener(this@PlayGameActivity)
-            tvFullScreen.setOnSingleClickListener {
-                binding.webView.post {
-                    val params = FrameLayout.LayoutParams(
-                        FrameLayout.LayoutParams.MATCH_PARENT,
-                        FrameLayout.LayoutParams.MATCH_PARENT
-                    )
-                    binding.gameLayout.radius = 0F
-                    binding.gameLayout.layoutParams = params
-                    binding.gameFullLayout.show(true)
-                }
+            tvFullScreen.setOnTouchListener(this@PlayGameActivity)
+            tvReduce.setOnSingleClickListener {
+                setReduce(true)
             }
         }
+        binding.gameLayout.viewTreeObserver.addOnGlobalLayoutListener(object :
+            ViewTreeObserver.OnGlobalLayoutListener {
+            override fun onGlobalLayout() {
+                mWebViewHeight = binding.gameLayout.height
+                mWebViewWidth = binding.gameLayout.width
+                binding.gameLayout.viewTreeObserver.removeGlobalOnLayoutListener(this)
+            }
+        })
     }
 
     @SuppressLint("SetTextI18n")
@@ -162,10 +170,14 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         webSettings.javaScriptEnabled = true
         webSettings.setAppCacheEnabled(true)
         webSettings.loadWithOverviewMode = true
-        webSettings.builtInZoomControls = true
         webSettings.allowFileAccess = true
         webSettings.allowUniversalAccessFromFileURLs = true
         webSettings.cacheMode = WebSettings.LOAD_DEFAULT
+
+        webSettings.builtInZoomControls = false
+        webSettings.setSupportZoom(false)
+        webSettings.displayZoomControls = false
+
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
         }
@@ -214,7 +226,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     override fun onTouch(v: View, event: MotionEvent): Boolean {
         when (event.action) {
             MotionEvent.ACTION_DOWN -> {
-                if (v.id == R.id.tvPause || v.id == R.id.tvPauses) {
+                if (v.id == R.id.tvPause || v.id == R.id.tvPauses || v.id == R.id.tvFullScreen) {
                     v.startAnimation(getScaleAnimation())
                 }
             }
@@ -232,10 +244,12 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                                 .navigation(mContext)
                         }
                     }
+                } else if (v.id == R.id.tvFullScreen) {
+                    setReduce(false)
                 }
             }
             MotionEvent.ACTION_CANCEL -> {
-                if (v.id == R.id.tvPause || v.id == R.id.tvPauses) {
+                if (v.id == R.id.tvPause || v.id == R.id.tvPauses || v.id == R.id.tvFullScreen) {
                     v.startAnimation(getEndAnimation())
                 }
             }
@@ -256,6 +270,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
             }
             countdownDialog.show(supportFragmentManager, "countdownDialog")
         }
+        mConstrainSet_one?.clone(binding.gameParentLayout)
     }
 
     override fun onDestroy() {
@@ -562,4 +577,32 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         val cn = am.getRunningTasks(1)[0].topActivity
         return cn!!.className == activity.javaClass.name
     }
+
+    /**
+     * 是否缩放
+     */
+    private fun setReduce(isReduce: Boolean) {
+        binding.webView.post {
+            binding.tvFullScreen.show(isReduce)
+            binding.tvReduce.show(isReduce.not())
+            if (isReduce) {
+                val params = ConstraintLayout.LayoutParams(
+                    mWebViewWidth,
+                    mWebViewHeight
+                )
+                binding.gameLayout.radius = 49F
+                binding.gameLayout.layoutParams = params
+                binding.gameFullLayout.show(isReduce)
+                mConstrainSet_one?.applyTo(binding.gameParentLayout)
+            } else {
+                val params = FrameLayout.LayoutParams(
+                    FrameLayout.LayoutParams.MATCH_PARENT,
+                    FrameLayout.LayoutParams.MATCH_PARENT
+                )
+                binding.gameLayout.radius = 0F
+                binding.gameLayout.layoutParams = params
+                binding.gameFullLayout.show(isReduce.not())
+            }
+        }
+    }
 }

+ 18 - 0
game/src/main/res/layout/activity_play_game.xml

@@ -26,6 +26,7 @@
             android:scaleType="centerCrop" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/gameParentLayout"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
 
@@ -62,6 +63,7 @@
                 app:layout_constraintTop_toTopOf="parent" />
 
             <FrameLayout
+                android:id="@+id/gameFrameLayout"
                 android:layout_width="@dimen/divider_189px"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/divider_14px"
@@ -163,6 +165,22 @@
                             app:layout_constraintStart_toStartOf="parent"
                             app:layout_constraintTop_toTopOf="parent" />
 
+                        <androidx.appcompat.widget.AppCompatTextView
+                            android:id="@+id/tvReduce"
+                            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:fontFamily="@font/lcb"
+                            android:gravity="center"
+                            android:includeFontPadding="false"
+                            android:text="@string/scale"
+                            android:textColor="@color/color_FFFFA916"
+                            android:textSize="@dimen/divider_28px"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintTop_toTopOf="parent" />
+
                         <androidx.appcompat.widget.AppCompatTextView
                             android:id="@+id/tvScores"
                             android:layout_width="@dimen/divider_272px"

+ 1 - 0
game/src/main/res/values/strings.xml

@@ -16,4 +16,5 @@
     <string name="training_completion" tools:ignore="ResourceName">训练完成</string>
     <string name="full_screen" tools:ignore="ResourceName">全屏</string>
     <string name="game_score" tools:ignore="ResourceName">游戏得分</string>
+    <string name="scale" tools:ignore="ResourceName">缩放</string>
 </resources>