UI fixes
This commit is contained in:
@@ -3,23 +3,31 @@ package org.koitharu.kotatsu.core.ui.util
|
||||
import android.view.View
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
|
||||
class FadingAppbarHelper(
|
||||
class FadingAppbarMediator(
|
||||
private val appBarLayout: AppBarLayout,
|
||||
private val target: View
|
||||
) : AppBarLayout.OnOffsetChangedListener {
|
||||
|
||||
private var isBound: Boolean = false
|
||||
|
||||
fun bind() {
|
||||
appBarLayout.addOnOffsetChangedListener(this)
|
||||
if (!isBound) {
|
||||
appBarLayout.addOnOffsetChangedListener(this)
|
||||
isBound = true
|
||||
}
|
||||
}
|
||||
|
||||
fun unBind() {
|
||||
appBarLayout.removeOnOffsetChangedListener(this)
|
||||
fun unbind() {
|
||||
if (isBound) {
|
||||
appBarLayout.removeOnOffsetChangedListener(this)
|
||||
isBound = false
|
||||
}
|
||||
target.alpha = 1f
|
||||
}
|
||||
|
||||
override fun onOffsetChanged(appBarLayout: AppBarLayout?, verticalOffset: Int) {
|
||||
val scrollRange = appBarLayout?.totalScrollRange
|
||||
if (scrollRange == null || scrollRange == 0) {
|
||||
val scrollRange = (appBarLayout ?: return).totalScrollRange
|
||||
if (scrollRange <= 0) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -42,7 +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.FadingAppbarMediator
|
||||
import org.koitharu.kotatsu.core.ui.util.MenuInvalidator
|
||||
import org.koitharu.kotatsu.core.ui.util.OptionsMenuBadgeHelper
|
||||
import org.koitharu.kotatsu.core.ui.widgets.SlidingBottomNavigationView
|
||||
@@ -89,7 +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
|
||||
private lateinit var fadingAppbarMediator: FadingAppbarMediator
|
||||
|
||||
override val appBar: AppBarLayout
|
||||
get() = viewBinding.appbar
|
||||
@@ -108,7 +108,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
|
||||
|
||||
viewBinding.fab?.setOnClickListener(this)
|
||||
viewBinding.navRail?.headerView?.setOnClickListener(this)
|
||||
fadingAppbarHelper = FadingAppbarHelper(viewBinding.appbar, viewBinding.toolbarCard)
|
||||
fadingAppbarMediator = FadingAppbarMediator(viewBinding.appbar, viewBinding.toolbarCard)
|
||||
|
||||
navigationDelegate = MainNavigationDelegate(
|
||||
navBar = checkNotNull(bottomNav ?: viewBinding.navRail),
|
||||
@@ -355,10 +355,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
|
||||
private fun adjustAppbar(topFragment: Fragment) {
|
||||
if (topFragment is FavouritesContainerFragment) {
|
||||
viewBinding.appbar.fitsSystemWindows = true
|
||||
fadingAppbarHelper.bind()
|
||||
fadingAppbarMediator.bind()
|
||||
} else {
|
||||
viewBinding.appbar.fitsSystemWindows = false
|
||||
fadingAppbarHelper.unBind()
|
||||
fadingAppbarMediator.unbind()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -84,8 +84,8 @@ class ReaderInfoBarView @JvmOverloads constructor(
|
||||
paint.strokeWidth = getDimension(R.styleable.ReaderInfoBarView_android_strokeWidth, 2f)
|
||||
paint.textSize = getDimension(R.styleable.ReaderInfoBarView_android_textSize, 16f)
|
||||
}
|
||||
val insetStart = getSystemUiDimensionOffset("status_bar_padding_start")
|
||||
val insetEnd = getSystemUiDimensionOffset("status_bar_padding_end")
|
||||
val insetStart = getSystemUiDimensionOffset("status_bar_padding_start").coerceAtLeast(0)
|
||||
val insetEnd = getSystemUiDimensionOffset("status_bar_padding_end").coerceAtLeast(0)
|
||||
val isRtl = layoutDirection == LAYOUT_DIRECTION_RTL
|
||||
insetLeftFallback = if (isRtl) insetEnd else insetStart
|
||||
insetRightFallback = if (isRtl) insetStart else insetEnd
|
||||
|
||||
@@ -18,7 +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.FadingAppbarMediator
|
||||
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
|
||||
@@ -58,7 +58,7 @@ class SourcesCatalogActivity : BaseActivity<ActivitySourcesCatalogBinding>(),
|
||||
adapter = sourcesAdapter
|
||||
}
|
||||
viewBinding.chipsFilter.onChipClickListener = this
|
||||
FadingAppbarHelper(viewBinding.appbar, viewBinding.toolbar).bind()
|
||||
FadingAppbarMediator(viewBinding.appbar, viewBinding.toolbar).bind()
|
||||
viewModel.content.observe(this, sourcesAdapter)
|
||||
viewModel.onActionDone.observeEvent(
|
||||
this,
|
||||
|
||||
Reference in New Issue
Block a user