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