Hide toolbar when scrolling up

This commit is contained in:
vianh
2024-08-07 12:16:18 +07:00
committed by Koitharu
parent 6e975b9d66
commit a7a943c8dc
6 changed files with 28 additions and 19 deletions

View File

@@ -0,0 +1,22 @@
package org.koitharu.kotatsu.core.ui.util
import android.view.View
import com.google.android.material.appbar.AppBarLayout
class FadingAppbarHelper(
private val target: View
) : AppBarLayout.OnOffsetChangedListener {
fun setup(appBarLayout: AppBarLayout) {
appBarLayout.addOnOffsetChangedListener(this)
}
override fun onOffsetChanged(appBarLayout: AppBarLayout?, verticalOffset: Int) {
val scrollRange = appBarLayout?.totalScrollRange
if (scrollRange == null || scrollRange == 0) {
return
}
target.alpha = 1f + verticalOffset / (scrollRange / 2f)
}
}

View File

@@ -42,6 +42,7 @@ import org.koitharu.kotatsu.core.exceptions.resolve.SnackbarErrorObserver
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.core.prefs.NavItem
import org.koitharu.kotatsu.core.ui.BaseActivity
import org.koitharu.kotatsu.core.ui.util.FadingAppbarHelper
import org.koitharu.kotatsu.core.ui.util.MenuInvalidator
import org.koitharu.kotatsu.core.ui.util.OptionsMenuBadgeHelper
import org.koitharu.kotatsu.core.ui.widgets.SlidingBottomNavigationView
@@ -105,6 +106,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
viewBinding.fab?.setOnClickListener(this)
viewBinding.navRail?.headerView?.setOnClickListener(this)
FadingAppbarHelper(viewBinding.toolbarCard).setup(viewBinding.appbar)
navigationDelegate = MainNavigationDelegate(
navBar = checkNotNull(bottomNav ?: viewBinding.navRail),
@@ -376,9 +378,6 @@ 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

@@ -18,6 +18,7 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.model.titleResId
import org.koitharu.kotatsu.core.ui.BaseActivity
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.ui.util.FadingAppbarHelper
import org.koitharu.kotatsu.core.ui.util.ReversibleActionObserver
import org.koitharu.kotatsu.core.ui.widgets.ChipsView
import org.koitharu.kotatsu.core.ui.widgets.ChipsView.ChipModel
@@ -57,6 +58,7 @@ class SourcesCatalogActivity : BaseActivity<ActivitySourcesCatalogBinding>(),
adapter = sourcesAdapter
}
viewBinding.chipsFilter.onChipClickListener = this
FadingAppbarHelper(viewBinding.toolbar).setup(appBar)
viewModel.content.observe(this, sourcesAdapter)
viewModel.onActionDone.observeEvent(
this,

View File

@@ -30,7 +30,7 @@ class SourcesCatalogMenuProvider(
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false
override fun onMenuItemActionExpand(item: MenuItem): Boolean {
(activity as? AppBarOwner)?.appBar?.setExpanded(false, true)
(activity as? AppBarOwner)?.appBar?.setExpanded(true, true)
return expandListener.onMenuItemActionExpand(item)
}

View File

@@ -39,13 +39,6 @@
android:stateListAnimator="@null"
app:liftOnScroll="false">
<org.koitharu.kotatsu.core.ui.widgets.WindowInsetHolder
android:id="@+id/insetsHolder"
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,18 +19,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:fitsSystemWindows="false"
android:fitsSystemWindows="true"
android:paddingHorizontal="16dp"
android:stateListAnimator="@null"
app:liftOnScroll="false">
<org.koitharu.kotatsu.core.ui.widgets.WindowInsetHolder
android:id="@+id/insetsHolder"
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"