diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/util/FadingAppbarHelper.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/util/FadingAppbarHelper.kt index dde4f3cb3..83f99be13 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/util/FadingAppbarHelper.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/util/FadingAppbarHelper.kt @@ -4,13 +4,19 @@ import android.view.View import com.google.android.material.appbar.AppBarLayout class FadingAppbarHelper( + private val appBarLayout: AppBarLayout, private val target: View ) : AppBarLayout.OnOffsetChangedListener { - fun setup(appBarLayout: AppBarLayout) { + fun bind() { appBarLayout.addOnOffsetChangedListener(this) } + fun unBind() { + appBarLayout.removeOnOffsetChangedListener(this) + target.alpha = 1f + } + override fun onOffsetChanged(appBarLayout: AppBarLayout?, verticalOffset: Int) { val scrollRange = appBarLayout?.totalScrollRange if (scrollRange == null || scrollRange == 0) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt index de84d0d0c..8b08625be 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -53,6 +53,7 @@ import org.koitharu.kotatsu.core.util.ext.scaleUpActivityOptionsOf import org.koitharu.kotatsu.databinding.ActivityMainBinding import org.koitharu.kotatsu.details.service.MangaPrefetchService import org.koitharu.kotatsu.details.ui.DetailsActivity +import org.koitharu.kotatsu.favourites.ui.container.FavouritesContainerFragment import org.koitharu.kotatsu.history.ui.HistoryListFragment import org.koitharu.kotatsu.local.ui.LocalStorageCleanupWorker import org.koitharu.kotatsu.main.ui.owners.AppBarOwner @@ -88,6 +89,7 @@ class MainActivity : BaseActivity(), AppBarOwner, BottomNav private val closeSearchCallback = CloseSearchCallback() private lateinit var navigationDelegate: MainNavigationDelegate private lateinit var appUpdateBadge: OptionsMenuBadgeHelper + private lateinit var fadingAppbarHelper: FadingAppbarHelper override val appBar: AppBarLayout get() = viewBinding.appbar @@ -106,7 +108,7 @@ class MainActivity : BaseActivity(), AppBarOwner, BottomNav viewBinding.fab?.setOnClickListener(this) viewBinding.navRail?.headerView?.setOnClickListener(this) - FadingAppbarHelper(viewBinding.toolbarCard).setup(viewBinding.appbar) + fadingAppbarHelper = FadingAppbarHelper(viewBinding.appbar, viewBinding.toolbarCard) navigationDelegate = MainNavigationDelegate( navBar = checkNotNull(bottomNav ?: viewBinding.navRail), @@ -147,6 +149,7 @@ class MainActivity : BaseActivity(), AppBarOwner, BottomNav override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) { adjustFabVisibility(topFragment = fragment) + adjustAppbar(topFragment = fragment) if (fromUser) { actionModeDelegate.finishActionMode() closeSearchCallback.handleOnBackPressed() @@ -349,6 +352,16 @@ class MainActivity : BaseActivity(), AppBarOwner, BottomNav } } + private fun adjustAppbar(topFragment: Fragment) { + if (topFragment is FavouritesContainerFragment) { + viewBinding.appbar.fitsSystemWindows = true + fadingAppbarHelper.bind() + } else { + viewBinding.appbar.fitsSystemWindows = false + fadingAppbarHelper.unBind() + } + } + private fun adjustFabVisibility( isResumeEnabled: Boolean = viewModel.isResumeEnabled.value, topFragment: Fragment? = navigationDelegate.primaryFragment, @@ -378,6 +391,9 @@ class MainActivity : BaseActivity(), AppBarOwner, BottomNav viewBinding.toolbarCard.updateLayoutParams { scrollFlags = appBarScrollFlags } + viewBinding.insetsHolder.updateLayoutParams { + scrollFlags = appBarScrollFlags + } viewBinding.toolbarCard.background = if (isOpened) { null } else { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/catalog/SourcesCatalogActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/catalog/SourcesCatalogActivity.kt index 2c41e1c11..3377f9c40 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/catalog/SourcesCatalogActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/sources/catalog/SourcesCatalogActivity.kt @@ -58,7 +58,7 @@ class SourcesCatalogActivity : BaseActivity(), adapter = sourcesAdapter } viewBinding.chipsFilter.onChipClickListener = this - FadingAppbarHelper(viewBinding.toolbar).setup(appBar) + FadingAppbarHelper(viewBinding.appbar, viewBinding.toolbar).bind() viewModel.content.observe(this, sourcesAdapter) viewModel.onActionDone.observeEvent( this, diff --git a/app/src/main/res/layout-w600dp-land/activity_main.xml b/app/src/main/res/layout-w600dp-land/activity_main.xml index 8b40ba5e5..1f33a1517 100644 --- a/app/src/main/res/layout-w600dp-land/activity_main.xml +++ b/app/src/main/res/layout-w600dp-land/activity_main.xml @@ -37,8 +37,17 @@ android:paddingLeft="16dp" android:paddingRight="16dp" android:stateListAnimator="@null" + app:liftOnScrollColor="@null" app:liftOnScroll="false"> + + + +