From 095a9149b4de68b917f3aaac51bf0d0bb5a9daad Mon Sep 17 00:00:00 2001 From: tarsin Date: Thu, 23 Mar 2023 12:38:57 +0800 Subject: [PATCH] Let DrawerLayout handle OnBackPressedInvoked internally --- app/build.gradle.kts | 1 + .../com/hippo/ehviewer/ui/MainActivity.kt | 25 +------------------ 2 files changed, 2 insertions(+), 24 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 787f257ab..be2bd87e2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -173,6 +173,7 @@ dependencies { implementation("androidx.constraintlayout:constraintlayout:2.2.0-alpha09") implementation("androidx.constraintlayout:constraintlayout-compose:1.1.0-alpha09") implementation("androidx.coordinatorlayout:coordinatorlayout:1.2.0") + implementation("androidx.drawerlayout:drawerlayout:1.2.0") // https://developer.android.com/jetpack/androidx/releases/lifecycle implementation("androidx.lifecycle:lifecycle-process:2.6.1") diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt index 9d17f7b27..a13cae29a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt @@ -35,7 +35,6 @@ import android.text.TextUtils import android.util.Log import android.view.View import android.widget.Toast -import androidx.activity.OnBackPressedCallback import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.RequiresApi import androidx.annotation.StringRes @@ -43,7 +42,6 @@ import androidx.core.content.getSystemService import androidx.core.view.GravityCompat import androidx.customview.widget.Openable import androidx.drawerlayout.widget.DrawerLayout -import androidx.drawerlayout.widget.DrawerLayout.DrawerListener import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController @@ -243,7 +241,6 @@ class MainActivity : EhActivity() { supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment navController = navHostFragment.navController if (!EhUtils.needSignedIn()) setNavGraph() - binding.drawView.addDrawerListener(mDrawerOnBackPressedCallback) binding.navView.setupWithNavController(navController) // Trick: Tweak NavigationUI to disable multiple backstack @@ -389,11 +386,7 @@ class MainActivity : EhActivity() { } super.onResume() lifecycleScope.launch { - delay(100) - // delay 100ms to make sure it take precedence over androidx navigation's callback - mDrawerOnBackPressedCallback.remove() - onBackPressedDispatcher.addCallback(mDrawerOnBackPressedCallback) - delay(200) + delay(300) checkClipboardUrl() } } @@ -520,22 +513,6 @@ class MainActivity : EhActivity() { mShareUrl?.let { outContent?.webUri = Uri.parse(mShareUrl) } } - private val mDrawerOnBackPressedCallback = - object : OnBackPressedCallback(false), DrawerListener { - val slideThreshold = 0.05 - override fun handleOnBackPressed() { - binding.drawView.closeDrawers() - } - - override fun onDrawerSlide(drawerView: View, slideOffset: Float) { - isEnabled = slideOffset > slideThreshold - } - - override fun onDrawerOpened(drawerView: View) {} - override fun onDrawerClosed(drawerView: View) {} - override fun onDrawerStateChanged(newState: Int) {} - } - private val mNetworkCallback = object : ConnectivityManager.NetworkCallback() { private val TAG = "mNetworkCallback"