Browse Source

feat 增加双击显示/隐藏cad底图的功能

lihao1 3 years ago
parent
commit
7c58caeea3

+ 41 - 4
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -71,6 +71,12 @@ class GraphyActivity : BaseActivity() {
 
         /** 添加设备成功 */
         private const val REQUEST_CODE_EQUIP = 0x0001
+
+        /** 上次点击图形时间 */
+        private var lastClickTime: Long = 0
+
+        /** 是否显示了底图item */
+        var isAddBaseMap: Boolean = false
     }
 
     /** viewModel */
@@ -103,6 +109,9 @@ class GraphyActivity : BaseActivity() {
     val scene = FloorScene()
     private val gson = Gson()
 
+    /** 底图item */
+    lateinit var mapItem: BaseMapItem
+
     @Subscribe
     fun test(msg: SGraphyViewMoveEvent) {
         Log.d(TAG, "msg=$msg")
@@ -137,10 +146,11 @@ class GraphyActivity : BaseActivity() {
 //                graphyView.moveRange()
                 graphyView.post {
                     Log.e("viewW", graphyView.width.toString())
-                    val mapItem = BaseMapItem(this@GraphyActivity, null)
-                    mapItem.zOrder = 1000000f
-                    mapItem.isVisible = true
-                    scene.addItem(mapItem)
+//                    val mapItem = BaseMapItem(this@GraphyActivity, null)
+//                    mapItem.zOrder = 1000000f
+//                    mapItem.isVisible = true
+//                    scene.addItem(mapItem)
+                    mapItem = BaseMapItem(this@GraphyActivity, null)
                 }
 
                 Log.e("viewH", graphyView.measuredHeight.toString())
@@ -168,12 +178,39 @@ class GraphyActivity : BaseActivity() {
         from = floor.getString("from")
     }
 
+
+    /**
+     * 防止用户连续点击
+     *
+     * @return true:连续点击 false:单次点击
+     */
+    fun isFastDoubleClick(): Boolean {
+        val time = System.currentTimeMillis()
+        val timeD = time - lastClickTime
+        if (0 < timeD && timeD < 300) {
+            return true
+        }
+        lastClickTime = time
+        return false
+    }
+
     /**
      * 图形点击事件
      * */
     private fun initSingleTopUp() {
         scene.setOnSingleTopUp(object : FloorScene.OnSingleTopUp {
             override fun onSingUp(x: Float, y: Float) {
+                if (isFastDoubleClick()) {
+                    if (isAddBaseMap) {
+                        scene.removeItem(mapItem)
+                        isAddBaseMap = false
+                    } else {
+                        mapItem.zOrder = 1000000f
+                        mapItem.isVisible = true
+                        scene.addItem(mapItem)
+                        isAddBaseMap = true
+                    }
+                }
                 if ("pipe".equals(scene.type)) {
                     return
                 }