Fix MangaListActivity header scrim

pull/453/head
Koitharu 3 years ago
parent c871757893
commit d951306a90
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -6,13 +6,13 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup.MarginLayoutParams import android.view.ViewGroup.MarginLayoutParams
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.graphics.drawable.toDrawable
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.commit import androidx.fragment.app.commit
import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
@ -40,12 +40,13 @@ import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.MangaTag
import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment
import kotlin.math.abs import kotlin.math.absoluteValue
import com.google.android.material.R as materialR
@AndroidEntryPoint @AndroidEntryPoint
class MangaListActivity : class MangaListActivity :
BaseActivity<ActivityMangaListBinding>(), BaseActivity<ActivityMangaListBinding>(),
AppBarOwner, View.OnClickListener, FilterOwner { AppBarOwner, View.OnClickListener, FilterOwner, AppBarLayout.OnOffsetChangedListener {
override val appBar: AppBarLayout override val appBar: AppBarLayout
get() = viewBinding.appbar get() = viewBinding.appbar
@ -60,12 +61,8 @@ class MangaListActivity :
setContentView(ActivityMangaListBinding.inflate(layoutInflater)) setContentView(ActivityMangaListBinding.inflate(layoutInflater))
val tags = intent.getParcelableExtraCompat<ParcelableMangaTags>(EXTRA_TAGS)?.tags val tags = intent.getParcelableExtraCompat<ParcelableMangaTags>(EXTRA_TAGS)?.tags
supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayHomeAsUpEnabled(true)
appBar.addOnOffsetChangedListener { appBarLayout, verticalOffset -> if (viewBinding.containerFilterHeader != null) {
if (abs(verticalOffset) - appBarLayout.totalScrollRange == 0) { viewBinding.appbar.addOnOffsetChangedListener(this)
viewBinding.containerFilterHeader?.setBackgroundColor(com.google.android.material.R.attr.backgroundColor)
} else {
viewBinding.containerFilterHeader?.setBackgroundColor(R.attr.m3ColorBackground)
}
} }
val source = intent.getSerializableExtraCompat(EXTRA_SOURCE) ?: tags?.firstOrNull()?.source val source = intent.getSerializableExtraCompat(EXTRA_SOURCE) ?: tags?.firstOrNull()?.source
if (source == null) { if (source == null) {
@ -88,6 +85,15 @@ class MangaListActivity :
} }
} }
override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
val container = viewBinding.containerFilterHeader ?: return
container.background = if (verticalOffset.absoluteValue < appBarLayout.totalScrollRange) {
container.context.getThemeColor(materialR.attr.backgroundColor).toDrawable()
} else {
viewBinding.collapsingToolbarLayout?.contentScrim
}
}
override fun onClick(v: View) { override fun onClick(v: View) {
when (v.id) { when (v.id) {
R.id.button_order -> FilterSheetFragment.show(supportFragmentManager) R.id.button_order -> FilterSheetFragment.show(supportFragmentManager)

@ -10,8 +10,7 @@
android:id="@+id/appbar" android:id="@+id/appbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fitsSystemWindows="true" android:fitsSystemWindows="true">
app:liftOnScroll="true">
<com.google.android.material.appbar.CollapsingToolbarLayout <com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout" android:id="@+id/collapsingToolbarLayout"

Loading…
Cancel
Save