Hide toolbar for favorites screen only

This commit is contained in:
vianh
2024-08-11 17:14:12 +07:00
committed by Koitharu
parent a7a943c8dc
commit de18324798
6 changed files with 45 additions and 4 deletions

View File

@@ -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) {

View File

@@ -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<ActivityMainBinding>(), 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<ActivityMainBinding>(), 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<ActivityMainBinding>(), 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<ActivityMainBinding>(), 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<ActivityMainBinding>(), AppBarOwner, BottomNav
viewBinding.toolbarCard.updateLayoutParams<AppBarLayout.LayoutParams> {
scrollFlags = appBarScrollFlags
}
viewBinding.insetsHolder.updateLayoutParams<AppBarLayout.LayoutParams> {
scrollFlags = appBarScrollFlags
}
viewBinding.toolbarCard.background = if (isOpened) {
null
} else {

View File

@@ -58,7 +58,7 @@ class SourcesCatalogActivity : BaseActivity<ActivitySourcesCatalogBinding>(),
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,

View File

@@ -37,8 +37,17 @@
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:stateListAnimator="@null"
app:liftOnScrollColor="@null"
app:liftOnScroll="false">
<org.koitharu.kotatsu.core.ui.widgets.WindowInsetHolder
android:id="@+id/insetsHolder"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
app:layout_scrollFlags="scroll|enterAlways|snap" />
<FrameLayout
android:id="@+id/toolbar_card"
android:layout_width="match_parent"

View File

@@ -19,11 +19,20 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:fitsSystemWindows="true"
android:fitsSystemWindows="false"
android:paddingHorizontal="16dp"
android:stateListAnimator="@null"
app:liftOnScrollColor="@null"
app:liftOnScroll="false">
<org.koitharu.kotatsu.core.ui.widgets.WindowInsetHolder
android:id="@+id/insetsHolder"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
app:layout_scrollFlags="scroll|enterAlways|snap" />
<FrameLayout
android:id="@+id/toolbar_card"
android:layout_width="match_parent"

View File

@@ -12,6 +12,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:liftOnScrollColor="@null"
app:liftOnScroll="false">
<com.google.android.material.appbar.MaterialToolbar