From d951306a906b2d179b2129a2e527afa64ac915b2 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 18 Aug 2023 10:12:12 +0300 Subject: [PATCH] Fix MangaListActivity header scrim --- .../kotatsu/search/ui/MangaListActivity.kt | 24 ++++++++++++------- .../main/res/layout/activity_manga_list.xml | 3 +-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/search/ui/MangaListActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/search/ui/MangaListActivity.kt index bd93c8a68..5b28f894a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/search/ui/MangaListActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/search/ui/MangaListActivity.kt @@ -6,13 +6,13 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup.MarginLayoutParams import androidx.core.graphics.Insets +import androidx.core.graphics.drawable.toDrawable import androidx.core.os.bundleOf import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.commit import com.google.android.material.appbar.AppBarLayout -import com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers 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.MangaTag import org.koitharu.kotatsu.remotelist.ui.RemoteListFragment -import kotlin.math.abs +import kotlin.math.absoluteValue +import com.google.android.material.R as materialR @AndroidEntryPoint class MangaListActivity : BaseActivity(), - AppBarOwner, View.OnClickListener, FilterOwner { + AppBarOwner, View.OnClickListener, FilterOwner, AppBarLayout.OnOffsetChangedListener { override val appBar: AppBarLayout get() = viewBinding.appbar @@ -60,12 +61,8 @@ class MangaListActivity : setContentView(ActivityMangaListBinding.inflate(layoutInflater)) val tags = intent.getParcelableExtraCompat(EXTRA_TAGS)?.tags supportActionBar?.setDisplayHomeAsUpEnabled(true) - appBar.addOnOffsetChangedListener { appBarLayout, verticalOffset -> - if (abs(verticalOffset) - appBarLayout.totalScrollRange == 0) { - viewBinding.containerFilterHeader?.setBackgroundColor(com.google.android.material.R.attr.backgroundColor) - } else { - viewBinding.containerFilterHeader?.setBackgroundColor(R.attr.m3ColorBackground) - } + if (viewBinding.containerFilterHeader != null) { + viewBinding.appbar.addOnOffsetChangedListener(this) } val source = intent.getSerializableExtraCompat(EXTRA_SOURCE) ?: tags?.firstOrNull()?.source 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) { when (v.id) { R.id.button_order -> FilterSheetFragment.show(supportFragmentManager) diff --git a/app/src/main/res/layout/activity_manga_list.xml b/app/src/main/res/layout/activity_manga_list.xml index 86c3c383b..94f30a0b1 100644 --- a/app/src/main/res/layout/activity_manga_list.xml +++ b/app/src/main/res/layout/activity_manga_list.xml @@ -10,8 +10,7 @@ android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:fitsSystemWindows="true" - app:liftOnScroll="true"> + android:fitsSystemWindows="true">