From 4048811e7aad3741bafb19e5bf6f3764ed1111d1 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sun, 8 May 2022 04:15:32 -0400 Subject: [PATCH] Some fixes to the app bar when changing controllers --- .../eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt | 9 ++++++--- .../kanade/tachiyomi/util/view/ControllerExtensions.kt | 8 +++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt index cde7f94c94..af1f9dd8a2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt @@ -26,6 +26,7 @@ import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.system.isTablet import eu.kanade.tachiyomi.util.view.backgroundColor +import eu.kanade.tachiyomi.util.view.isControllerVisible import eu.kanade.tachiyomi.util.view.setTextColorAlpha import uy.kohesive.injekt.injectLazy import kotlin.math.abs @@ -369,7 +370,7 @@ class ExpandedAppBarLayout@JvmOverloads constructor(context: Context, attrs: Att * @param callback closure updates along with snapping the appbar, use if something needs to * update alongside the appbar */ - fun snapAppBarY(recyclerView: RecyclerView, callback: (() -> Unit)?): Float { + fun snapAppBarY(controller: Controller?, recyclerView: RecyclerView, callback: (() -> Unit)?): Float { yAnimator?.cancel() val halfWay = compactAppBarHeight / 2 val shortAnimationDuration = resources?.getInteger( @@ -393,8 +394,10 @@ class ExpandedAppBarLayout@JvmOverloads constructor(context: Context, attrs: Att yAnimator = animate().y(lastY) .setDuration(shortAnimationDuration.toLong()) yAnimator?.setUpdateListener { - updateAppBarAfterY(recyclerView, false) - callback?.invoke() + if (controller?.isControllerVisible == true) { + updateAppBarAfterY(recyclerView, false) + callback?.invoke() + } } yAnimator?.start() useSearchToolbarForMenu(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt index 021b955032..16ba35fa2b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt @@ -230,7 +230,7 @@ fun Controller.scrollViewWith( swipeRefreshLayout?.setDistanceToTriggerSync(150.dpToPx) val swipeCircle = swipeRefreshLayout?.findChild() activityBinding!!.appBar.doOnLayout { - if (fullAppBarHeight!! > 0) { + if (fullAppBarHeight!! > 0 && isControllerVisible) { appBarHeight = fullAppBarHeight!! recycler.requestApplyInsets() } @@ -485,7 +485,7 @@ fun Controller.scrollViewWith( if (activityBinding!!.bottomNav?.isVisible == true && preferences.hideBottomNavOnScroll().get() ) closerToBottom else closerToTop - lastY = activityBinding!!.appBar.snapAppBarY(recycler) { + lastY = activityBinding!!.appBar.snapAppBarY(this@scrollViewWith, recycler) { val activityBinding = activityBinding ?: return@snapAppBarY swipeCircle?.translationY = max( activityBinding.appBar.y, @@ -531,7 +531,9 @@ fun Controller.setItemAnimatorForAppBar(recycler: RecyclerView) { val duration = (recycler.itemAnimator?.changeDuration ?: 250) * 2 itemAppBarAnimator = ValueAnimator.ofFloat(0f, 1f).apply { addUpdateListener { - activityBinding?.appBar?.updateAppBarAfterY(recycler) + if (isControllerVisible) { + activityBinding?.appBar?.updateAppBarAfterY(recycler) + } } } itemAppBarAnimator?.duration = duration