From ef53d4ec070ace3a863f7ba22749b3b511a1b4a6 Mon Sep 17 00:00:00 2001 From: arkon Date: Fri, 14 May 2021 17:48:11 -0400 Subject: [PATCH] Fix grid columns on tablets, split out common main_activity layout sections --- .../tachiyomi/ui/browse/BrowseController.kt | 4 +- .../tachiyomi/ui/library/LibraryController.kt | 4 +- .../kanade/tachiyomi/ui/main/MainActivity.kt | 46 +++++----- .../tachiyomi/ui/manga/MangaController.kt | 2 +- .../main/res/layout-sw600dp/main_activity.xml | 83 ++++--------------- app/src/main/res/layout/main_activity.xml | 71 ++-------------- app/src/main/res/layout/main_activity_fab.xml | 9 ++ .../main/res/layout/main_activity_toolbar.xml | 60 ++++++++++++++ 8 files changed, 118 insertions(+), 161 deletions(-) create mode 100644 app/src/main/res/layout/main_activity_fab.xml create mode 100644 app/src/main/res/layout/main_activity_toolbar.xml diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt index 3107fe5a3c..deaf2f1319 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt @@ -70,7 +70,7 @@ class BrowseController : override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) { super.onChangeStarted(handler, type) if (type.isEnter) { - (activity as? MainActivity)?.binding?.tabs?.apply { + (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.apply { setupWithViewPager(binding.pager) // Show badge on tab for extension updates @@ -92,7 +92,7 @@ class BrowseController : } fun setExtensionUpdateBadge() { - (activity as? MainActivity)?.binding?.tabs?.apply { + (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.apply { val updates = preferences.extensionUpdatesCount().get() if (updates > 0) { val badge: BadgeDrawable? = getTabAt(1)?.orCreateBadge diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index eb616bc0dd..3e41d4ab92 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -218,7 +218,7 @@ class LibraryController( override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) { super.onChangeStarted(handler, type) if (type.isEnter) { - (activity as? MainActivity)?.binding?.tabs?.setupWithViewPager(binding.libraryPager) + (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.setupWithViewPager(binding.libraryPager) presenter.subscribeLibrary() } } @@ -297,7 +297,7 @@ class LibraryController( // Delay the scroll position to allow the view to be properly measured. view.post { if (isAttached) { - (activity as? MainActivity)?.binding?.tabs?.setScrollPosition(binding.libraryPager.currentItem, 0f, true) + (activity as? MainActivity)?.binding?.toolbarLayout?.tabs?.setScrollPosition(binding.libraryPager.currentItem, 0f, true) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index fa626c8435..bfe56ff4c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -96,16 +96,16 @@ class MainActivity : BaseViewBindingActivity() { } setContentView(binding.root) - setSupportActionBar(binding.toolbar) + setSupportActionBar(binding.toolbarLayout.toolbar) // Draw edge-to-edge WindowCompat.setDecorFitsSystemWindows(window, false) - binding.appbar.applyInsetter { + binding.toolbarLayout.appbar.applyInsetter { type(navigationBars = true, statusBars = true) { padding(left = true, top = true, right = true) } } - binding.rootFab.applyInsetter { + binding.fabLayout.rootFab.applyInsetter { type(navigationBars = true) { margin() } @@ -131,13 +131,13 @@ class MainActivity : BaseViewBindingActivity() { insets } - tabAnimator = ViewHeightAnimator(binding.tabs, 0L) + tabAnimator = ViewHeightAnimator(binding.toolbarLayout.tabs, 0L) if (binding.bottomNav != null) { bottomNavAnimator = ViewHeightAnimator(binding.bottomNav!!) // If bottom nav is hidden, make it visible again when the app bar is expanded - binding.appbar.addOnOffsetChangedListener( + binding.toolbarLayout.appbar.addOnOffsetChangedListener( AppBarLayout.OnOffsetChangedListener { _, verticalOffset -> if (verticalOffset == 0) { showNav(true) @@ -186,7 +186,7 @@ class MainActivity : BaseViewBindingActivity() { } } - binding.toolbar.setNavigationOnClickListener { + binding.toolbarLayout.toolbar.setNavigationOnClickListener { onBackPressed() } @@ -227,13 +227,13 @@ class MainActivity : BaseViewBindingActivity() { .launchIn(lifecycleScope) preferences.downloadedOnly() - .asImmediateFlow { binding.downloadedOnly.isVisible = it } + .asImmediateFlow { binding.toolbarLayout.downloadedOnly.isVisible = it } .launchIn(lifecycleScope) preferences.incognitoMode().asFlow() .drop(1) .onEach { - binding.incognitoMode.isVisible = it + binding.toolbarLayout.incognitoMode.isVisible = it // Close BrowseSourceController and its MangaController child when incognito mode is disabled if (!it) { @@ -355,7 +355,7 @@ class MainActivity : BaseViewBindingActivity() { // Binding sometimes isn't actually instantiated yet somehow nav.setOnItemSelectedListener(null) - binding?.toolbar.setNavigationOnClickListener(null) + binding?.toolbarLayout?.toolbar.setNavigationOnClickListener(null) } override fun onBackPressed() { @@ -408,7 +408,7 @@ class MainActivity : BaseViewBindingActivity() { supportActionBar?.setDisplayHomeAsUpEnabled(router.backstackSize != 1) // Always show appbar again when changing controllers - binding.appbar.setExpanded(true) + binding.toolbarLayout.appbar.setExpanded(true) if ((from == null || from is RootController) && to !is RootController) { showNav(visible = false, collapse = true) @@ -419,34 +419,34 @@ class MainActivity : BaseViewBindingActivity() { } if (from is TabbedController) { - from.cleanupTabs(binding.tabs) + from.cleanupTabs(binding.toolbarLayout.tabs) } if (to is TabbedController) { tabAnimator.expand() - to.configureTabs(binding.tabs) + to.configureTabs(binding.toolbarLayout.tabs) } else { tabAnimator.collapse() - binding.tabs.setupWithViewPager(null) + binding.toolbarLayout.tabs.setupWithViewPager(null) } if (from is FabController) { - binding.rootFab.isVisible = false - from.cleanupFab(binding.rootFab) + binding.fabLayout.rootFab.isVisible = false + from.cleanupFab(binding.fabLayout.rootFab) } if (to is FabController) { - binding.rootFab.isVisible = true - to.configureFab(binding.rootFab) + binding.fabLayout.rootFab.isVisible = true + to.configureFab(binding.fabLayout.rootFab) } when (to) { is NoToolbarElevationController -> { - binding.appbar.disableElevation() + binding.toolbarLayout.appbar.disableElevation() } is ToolbarLiftOnScrollController -> { - binding.appbar.enableElevation(true) + binding.toolbarLayout.appbar.enableElevation(true) } else -> { - binding.appbar.enableElevation(false) + binding.toolbarLayout.appbar.enableElevation(false) } } } @@ -482,16 +482,16 @@ class MainActivity : BaseViewBindingActivity() { */ fun fixViewToBottom(view: View) { val listener = AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset -> - val maxAbsOffset = appBarLayout.measuredHeight - binding.tabs.measuredHeight + val maxAbsOffset = appBarLayout.measuredHeight - binding.toolbarLayout.tabs.measuredHeight view.translationY = -maxAbsOffset - verticalOffset.toFloat() + appBarLayout.marginTop } - binding.appbar.addOnOffsetChangedListener(listener) + binding.toolbarLayout.appbar.addOnOffsetChangedListener(listener) fixedViewsToBottom[view] = listener } fun clearFixViewToBottom(view: View) { val listener = fixedViewsToBottom.remove(view) - binding.appbar.removeOnOffsetChangedListener(listener) + binding.toolbarLayout.appbar.removeOnOffsetChangedListener(listener) } private fun setBottomNavBehaviorOnScroll() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index 8be864f0af..8c8a9a26d3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -277,7 +277,7 @@ class MangaController : else -> min(binding.recycler.computeVerticalScrollOffset(), 255) } - (activity as? MainActivity)?.binding?.toolbar?.setTitleTextColor( + (activity as? MainActivity)?.binding?.toolbarLayout?.toolbar?.setTitleTextColor( Color.argb( calculatedAlpha, toolbarTextColor.red, diff --git a/app/src/main/res/layout-sw600dp/main_activity.xml b/app/src/main/res/layout-sw600dp/main_activity.xml index ab0896696a..8d794d3509 100644 --- a/app/src/main/res/layout-sw600dp/main_activity.xml +++ b/app/src/main/res/layout-sw600dp/main_activity.xml @@ -1,71 +1,16 @@ - + - - - - - - - - - - - - - - - - - - - @@ -78,22 +23,24 @@ app:itemIconTint="@color/nav_selector" app:itemTextColor="@color/nav_selector" app:labelVisibilityMode="labeled" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" app:menu="@menu/main_nav" /> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/side_nav" + app:layout_constraintTop_toTopOf="parent" /> - + - + diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 559d555221..617cf933c3 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -1,69 +1,14 @@ - - - - - - - - - - - - - - - - - - - + - + + diff --git a/app/src/main/res/layout/main_activity_toolbar.xml b/app/src/main/res/layout/main_activity_toolbar.xml new file mode 100644 index 0000000000..47dedf572b --- /dev/null +++ b/app/src/main/res/layout/main_activity_toolbar.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + +