瀏覽代碼

refactor(地图) :
- 开关地图异常处理

周文健 5 月之前
父節點
當前提交
512be55360

+ 16 - 0
app/src/main/java/com/grkj/iscs/view/fragment/StepFragment.kt

@@ -1,6 +1,8 @@
 package com.grkj.iscs.view.fragment
 
 import android.graphics.PointF
+import android.view.GestureDetector
+import android.view.MotionEvent
 import android.view.View
 import android.widget.ImageView
 import androidx.lifecycle.Observer
@@ -50,6 +52,7 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
     private lateinit var observer: Observer<MsgEvent>
     private var mCanHandle: Boolean? = null // 是否可以操作,创建人、上锁人至少符合一个才可操作
     private var mapRatio: Float = 1f
+    private lateinit var gestureDetector: GestureDetector
 
     override val viewBinding: FragmentStepBinding
         get() = FragmentStepBinding.inflate(layoutInflater)
@@ -171,13 +174,25 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
     override fun onResume() {
         super.onResume()
         mChangePage?.let {
+            mBinding?.mapview?.visibility = View.VISIBLE
             refreshPage(it)
         }
     }
 
 
     private fun initMap() {
+        gestureDetector = GestureDetector(requireContext(), object :
+            GestureDetector.SimpleOnGestureListener() {
+            override fun onDoubleTap(e: MotionEvent): Boolean {
+                mBinding?.mapview?.currentRotateDegrees = 0f
+                return super.onDoubleTap(e)
+            }
+        })
         mBinding?.mapview?.isScaleAndRotateTogether = false
+        mBinding?.mapview?.setOnTouchListener { _, event ->
+            gestureDetector.onTouchEvent(event)
+            false
+        }
         mBinding?.mapview?.setMapViewListener(object : MapViewListener {
             override fun onMapLoadSuccess() {
                 if (stationLayer != null) {
@@ -526,6 +541,7 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
     override fun onPause() {
         super.onPause()
         mBinding?.mapview?.release()
+        mBinding?.mapview?.visibility = View.GONE
         mStep = 0
     }
 

+ 19 - 1
app/src/main/java/com/grkj/iscs/view/fragment/SwitchStatusFragment.kt

@@ -1,6 +1,10 @@
 package com.grkj.iscs.view.fragment
 
 import android.graphics.PointF
+import android.os.Bundle
+import android.view.GestureDetector
+import android.view.MotionEvent
+import android.view.View
 import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.databinding.FragmentSwitchStatusBinding
 import com.grkj.iscs.util.BitmapUtil
@@ -10,7 +14,6 @@ import com.grkj.iscs.util.release
 import com.grkj.iscs.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.ISwitchStatusView
 import com.grkj.iscs.view.presenter.SwitchStatusPresenter
-import com.grkj.iscs.view.widget.CustomStationLayer
 import com.grkj.iscs.view.widget.CustomSwitchStationLayer
 import com.onlylemi.mapview.library.MapViewListener
 import com.sik.sikcore.thread.ThreadUtils
@@ -20,6 +23,8 @@ class SwitchStatusFragment :
     private var mapRatio: Float = 1f
     private var stationLayer: CustomSwitchStationLayer? = null
     private val mStationList = mutableListOf<CustomSwitchStationLayer.IsolationPoint>()
+    private lateinit var gestureDetector: GestureDetector
+
     override fun initPresenter(): SwitchStatusPresenter {
         return SwitchStatusPresenter()
     }
@@ -28,11 +33,19 @@ class SwitchStatusFragment :
         get() = FragmentSwitchStatusBinding.inflate(layoutInflater)
 
     override fun initView() {
+        gestureDetector = GestureDetector(requireContext(), object :
+        GestureDetector.SimpleOnGestureListener() {
+            override fun onDoubleTap(e: MotionEvent): Boolean {
+                mBinding?.mapview?.currentRotateDegrees = 0f
+                return super.onDoubleTap(e)
+            }
+        })
         initMap()
     }
 
     override fun onResume() {
         super.onResume()
+        mBinding?.mapview?.visibility = View.VISIBLE
         presenter?.getMapData {
             getMap(it)
         }
@@ -51,6 +64,7 @@ class SwitchStatusFragment :
 
     override fun onPause() {
         super.onPause()
+        mBinding?.mapview?.visibility = View.GONE
         mBinding?.mapview?.release()
     }
 
@@ -124,6 +138,10 @@ class SwitchStatusFragment :
      */
     private fun initMap() {
         mBinding?.mapview?.isScaleAndRotateTogether = false
+        mBinding?.mapview?.setOnTouchListener { _, event ->
+            gestureDetector.onTouchEvent(event)
+            false
+        }
         mBinding?.mapview?.setMapViewListener(object : MapViewListener {
             override fun onMapLoadSuccess() {
                 if (stationLayer != null) {

+ 2 - 1
app/src/main/res/layout/fragment_step.xml

@@ -162,7 +162,8 @@
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
                     android:layout_above="@id/rv_statistics"
-                    android:layout_marginTop="@dimen/common_spacing_small" />
+                    android:layout_marginTop="@dimen/common_spacing_small"
+                    android:visibility="gone"/>
             </LinearLayout>
         </LinearLayout>
 

+ 2 - 1
app/src/main/res/layout/fragment_switch_status.xml

@@ -10,5 +10,6 @@
     <com.onlylemi.mapview.library.MapView
         android:id="@+id/mapview"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        android:visibility="invisible"/>
 </RelativeLayout>