upgrade DrawerLayout to 1.2.0 and simplify DrawerLayout code

This commit is contained in:
Christophe Beyls 2024-05-03 20:58:24 +02:00
parent 3bbf96b057
commit 05b7358c04
2 changed files with 13 additions and 29 deletions

View File

@ -47,11 +47,9 @@ import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.IntentCompat
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.view.GravityCompat
import androidx.core.view.MenuProvider
import androidx.core.view.forEach
import androidx.core.view.isVisible
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import androidx.viewpager2.widget.MarginPageTransformer
@ -198,13 +196,8 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
private val onBackPressedCallback = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {
when {
binding.mainDrawerLayout.isOpen -> {
binding.mainDrawerLayout.close()
}
binding.viewPager.currentItem != 0 -> {
binding.viewPager.currentItem = 0
}
if (binding.viewPager.currentItem != 0) {
binding.viewPager.currentItem = 0
}
}
}
@ -482,12 +475,14 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
}
}
override fun onStart() {
super.onStart()
// For some reason the navigation drawer is opened when the activity is recreated
if (binding.mainDrawerLayout.isOpen) {
binding.mainDrawerLayout.closeDrawer(GravityCompat.START, false)
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
// Allow software back press to be properly dispatched to drawer layout
val handled = when (event.action) {
KeyEvent.ACTION_DOWN -> binding.mainDrawerLayout.onKeyDown(event.keyCode, event)
KeyEvent.ACTION_UP -> binding.mainDrawerLayout.onKeyUp(event.keyCode, event)
else -> false
}
return handled || super.dispatchKeyEvent(event)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
@ -627,19 +622,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
)
setSavedInstance(savedInstanceState)
}
binding.mainDrawerLayout.addDrawerListener(object : DrawerLayout.DrawerListener {
override fun onDrawerSlide(drawerView: View, slideOffset: Float) { }
override fun onDrawerOpened(drawerView: View) {
onBackPressedCallback.isEnabled = true
}
override fun onDrawerClosed(drawerView: View) {
onBackPressedCallback.isEnabled = binding.tabLayout.selectedTabPosition > 0
}
override fun onDrawerStateChanged(newState: Int) { }
})
}
private fun refreshMainDrawerItems(
@ -900,7 +882,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
onTabSelectedListener = object : OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
onBackPressedCallback.isEnabled = tab.position > 0 || binding.mainDrawerLayout.isOpen
onBackPressedCallback.isEnabled = tab.position > 0
binding.mainToolbar.title = tab.contentDescription

View File

@ -6,6 +6,7 @@ androidx-browser = "1.8.0"
androidx-cardview = "1.0.0"
androidx-constraintlayout = "2.1.4"
androidx-core = "1.13.1"
androidx-drawerlayout = "1.2.0"
androidx-exifinterface = "1.3.7"
androidx-fragment = "1.7.0"
androidx-junit = "1.1.5"
@ -70,6 +71,7 @@ androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayo
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" }
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidx-splashscreen" }
androidx-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "androidx-testing" }
androidx-drawerlayout = { group = "androidx.drawerlayout", name = "drawerlayout", version.ref = "androidx-drawerlayout" }
androidx-emoji2-core = { module = "androidx.emoji2:emoji2", version.ref = "emoji2" }
androidx-emoji2-views-core = { module = "androidx.emoji2:emoji2-views", version.ref = "emoji2" }
androidx-emoji2-view-helper = { module = "androidx.emoji2:emoji2-views-helper", version.ref = "emoji2" }
@ -140,7 +142,7 @@ androidx = ["androidx-core-ktx", "androidx-appcompat", "androidx-fragment-ktx",
"androidx-emoji2-core", "androidx-emoji2-views-core", "androidx-emoji2-view-helper", "androidx-lifecycle-viewmodel-ktx",
"androidx-constraintlayout", "androidx-paging-runtime-ktx", "androidx-viewpager2", "androidx-work-runtime-ktx",
"androidx-core-splashscreen", "androidx-activity", "androidx-media3-exoplayer", "androidx-media3-datasource-okhttp",
"androidx-media3-ui"]
"androidx-media3-ui", "androidx-drawerlayout"]
dagger = ["dagger-core", "dagger-android-core", "dagger-android-support"]
dagger-processors = ["dagger-compiler", "dagger-android-processor"]
filemojicompat = ["filemojicompat-core", "filemojicompat-ui", "filemojicompat-defaults"]