From a2b8cfe5128c2462839bd4efbaf4b56630c5c1fc Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Mon, 4 Jul 2022 22:10:15 +0300 Subject: [PATCH] Add "Continue" FAB to navigation rail --- .../koitharu/kotatsu/main/ui/MainActivity.kt | 6 +++-- .../main/ui/NavigationViewInsetsListener.kt | 24 ------------------- .../ui/suggestion/SearchSuggestionFragment.kt | 7 +++--- .../main/res/layout-w600dp/activity_main.xml | 2 ++ .../main/res/layout/navigation_rail_fab.xml | 9 +++++++ 5 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 app/src/main/java/org/koitharu/kotatsu/main/ui/NavigationViewInsetsListener.kt create mode 100644 app/src/main/res/layout/navigation_rail_fab.xml diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index 46013a988..e2c3da7a8 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -92,6 +92,7 @@ class MainActivity : navBar.setOnItemSelectedListener(this) binding.fab.setOnClickListener(this) + binding.navRail?.headerView?.setOnClickListener(this) binding.searchView.isVoiceSearchEnabled = voiceInputLauncher.resolve(this, null) != null supportFragmentManager.findFragmentByTag(TAG_PRIMARY)?.let { @@ -150,6 +151,7 @@ class MainActivity : override fun onClick(v: View) { when (v.id) { R.id.fab -> viewModel.openLastReader() + R.id.railFab -> viewModel.openLastReader() } } @@ -258,8 +260,8 @@ class MainActivity : } private fun onOpenReader(manga: Manga) { - val options = ActivityOptions.makeScaleUpAnimation(binding.fab, 0, 0, binding.fab.width, binding.fab.height) - startActivity(ReaderActivity.newIntent(this, manga), options?.toBundle()) + // val options = ActivityOptions.makeScaleUpAnimation(binding.fab, 0, 0, binding.fab.width, binding.fab.height) + startActivity(ReaderActivity.newIntent(this, manga)) } private fun onError(e: Throwable) { diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/NavigationViewInsetsListener.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/NavigationViewInsetsListener.kt deleted file mode 100644 index f3a66a8fa..000000000 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/NavigationViewInsetsListener.kt +++ /dev/null @@ -1,24 +0,0 @@ -package org.koitharu.kotatsu.main.ui - -import android.view.View -import androidx.core.view.OnApplyWindowInsetsListener -import androidx.core.view.WindowInsetsCompat -import androidx.core.view.updatePadding -import java.lang.ref.WeakReference -import com.google.android.material.R as materialR - -class NavigationViewInsetsListener : OnApplyWindowInsetsListener { - - private var menuViewRef: WeakReference? = null - - override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat { - val menuView = menuViewRef?.get() ?: v.findViewById(materialR.id.design_navigation_view).also { - menuViewRef = WeakReference(it) - } - val systemWindowInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) - v.updatePadding(top = systemWindowInsets.top) - // NavigationView doesn't dispatch insets to the menu view, so pad the bottom here. - menuView.updatePadding(bottom = systemWindowInsets.bottom) - return WindowInsetsCompat.CONSUMED - } -} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt index 7d9a3b6cb..21b5a9104 100644 --- a/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt @@ -43,11 +43,12 @@ class SearchSuggestionFragment : } override fun onWindowInsetsChanged(insets: Insets) { - val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top val extraPadding = resources.getDimensionPixelOffset(R.dimen.list_spacing) binding.root.updatePadding( - top = headerHeight + extraPadding, - bottom = insets.bottom + extraPadding, + top = extraPadding, + right = insets.right, + left = insets.left, + bottom = insets.bottom ) } diff --git a/app/src/main/res/layout-w600dp/activity_main.xml b/app/src/main/res/layout-w600dp/activity_main.xml index b1165974d..3b1eee055 100644 --- a/app/src/main/res/layout-w600dp/activity_main.xml +++ b/app/src/main/res/layout-w600dp/activity_main.xml @@ -11,6 +11,8 @@ android:id="@+id/navRail" android:layout_width="wrap_content" android:layout_height="match_parent" + app:elevation="1dp" + app:headerLayout="@layout/navigation_rail_fab" app:labelVisibilityMode="labeled" app:menu="@menu/nav_bottom" /> diff --git a/app/src/main/res/layout/navigation_rail_fab.xml b/app/src/main/res/layout/navigation_rail_fab.xml new file mode 100644 index 000000000..a20a205c5 --- /dev/null +++ b/app/src/main/res/layout/navigation_rail_fab.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file