Hide toolbar for favorites screen only
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user