kunfei пре 3 година
родитељ
комит
98ac95a2c7

+ 7 - 0
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt

@@ -110,6 +110,13 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
         }
     }
 
+    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
+        if (ev.action == MotionEvent.ACTION_DOWN) {
+            binding.root.hideSoftInput()
+        }
+        return super.dispatchTouchEvent(ev)
+    }
+
     override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
         menuInflater.inflate(R.menu.book_source, menu)
         return super.onCompatCreateOptionsMenu(menu)

+ 9 - 4
app/src/main/java/io/legado/app/ui/main/MainActivity.kt

@@ -6,6 +6,7 @@ import android.os.Bundle
 import android.text.format.DateUtils
 import android.view.KeyEvent
 import android.view.MenuItem
+import android.view.MotionEvent
 import android.view.ViewGroup
 import androidx.activity.viewModels
 import androidx.core.view.postDelayed
@@ -38,10 +39,7 @@ import io.legado.app.ui.main.explore.ExploreFragment
 import io.legado.app.ui.main.my.MyFragment
 import io.legado.app.ui.main.rss.RssFragment
 import io.legado.app.ui.widget.dialog.TextDialog
-import io.legado.app.utils.observeEvent
-import io.legado.app.utils.setEdgeEffectColor
-import io.legado.app.utils.showDialogFragment
-import io.legado.app.utils.toastOnUi
+import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.launch
@@ -85,6 +83,13 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
         }
     }
 
+    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
+        if (ev.action == MotionEvent.ACTION_DOWN) {
+            binding.root.hideSoftInput()
+        }
+        return super.dispatchTouchEvent(ev)
+    }
+
     override fun onPostCreate(savedInstanceState: Bundle?) {
         super.onPostCreate(savedInstanceState)
         launch {

+ 4 - 10
app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt

@@ -23,7 +23,10 @@ import io.legado.app.lib.theme.primaryColor
 import io.legado.app.lib.theme.primaryTextColor
 import io.legado.app.ui.book.explore.ExploreShowActivity
 import io.legado.app.ui.book.source.edit.BookSourceEditActivity
-import io.legado.app.utils.*
+import io.legado.app.utils.applyTint
+import io.legado.app.utils.cnCompare
+import io.legado.app.utils.setEdgeEffectColor
+import io.legado.app.utils.startActivity
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Job
@@ -48,7 +51,6 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
     private val groups = linkedSetOf<String>()
     private var exploreFlowJob: Job? = null
     private var groupsMenu: SubMenu? = null
-    private val softKeyBoardChangeListener = SoftKeyBoardChangeListener()
 
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
         setSupportToolbar(binding.titleBar.toolbar)
@@ -56,14 +58,6 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
         initRecyclerView()
         initGroupData()
         upExploreData()
-        softKeyBoardChangeListener.attach(requireActivity().window) {
-            binding.root.setPaddingBottom(softKeyBoardChangeListener.keyBoardHeight)
-        }
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        softKeyBoardChangeListener.unAttach()
     }
 
     override fun onCompatCreateOptionsMenu(menu: Menu) {

+ 0 - 47
app/src/main/java/io/legado/app/utils/SoftKeyBoardChangeListener.kt

@@ -1,47 +0,0 @@
-package io.legado.app.utils
-
-import android.graphics.Rect
-import android.view.ViewTreeObserver
-import android.view.Window
-import splitties.systemservices.windowManager
-import kotlin.math.abs
-
-class SoftKeyBoardChangeListener : ViewTreeObserver.OnGlobalLayoutListener {
-
-    private var window: Window? = null
-    private var softKeyBoardChangeCallback: ((Boolean) -> Unit)? = null
-    var keyBoardShowing = false
-        private set
-    var keyBoardHeight = 0
-
-    fun attach(window: Window, callback: ((Boolean) -> Unit)) {
-        this.window = window
-        window.decorView.viewTreeObserver.addOnGlobalLayoutListener(this)
-        softKeyBoardChangeCallback = callback
-    }
-
-    fun unAttach() {
-        window?.decorView?.viewTreeObserver?.removeOnGlobalLayoutListener(this)
-        window = null
-    }
-
-    override fun onGlobalLayout() {
-        window?.let {
-            val rect = Rect()
-            // 获取当前页面窗口的显示范围
-            it.decorView.getWindowVisibleDisplayFrame(rect)
-            val screenHeight = windowManager.windowSize.heightPixels
-            val keyboardHeight = screenHeight - rect.bottom // 输入法的高度
-            if (abs(keyboardHeight) > screenHeight / 5) {
-                keyBoardShowing = true // 超过屏幕五分之一则表示弹出了输入法
-                this.keyBoardHeight = abs(keyboardHeight)
-                softKeyBoardChangeCallback?.invoke(true)
-            } else {
-                keyBoardShowing = false
-                this.keyBoardHeight = 0
-                softKeyBoardChangeCallback?.invoke(false)
-            }
-        }
-    }
-
-}