fix(AppBar): Adjust scrolled container color

This commit is contained in:
Ahmad Ansori Palembani 2024-12-27 07:01:35 +07:00
parent 60ef9482c8
commit 71dcb2ab85
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
21 changed files with 49 additions and 26 deletions

View file

@ -23,7 +23,7 @@ import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.view.backgroundColor import eu.kanade.tachiyomi.util.view.backgroundColor
import eu.kanade.tachiyomi.util.view.setCards import eu.kanade.tachiyomi.util.view.setCards
import eu.kanade.tachiyomi.widget.AutofitRecyclerView import eu.kanade.tachiyomi.widget.AutofitRecyclerView
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
/** /**
* Class used to hold the displayed data of a manga in the library, like the cover or the title. * Class used to hold the displayed data of a manga in the library, like the cover or the title.

View file

@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.util.lang.highlightText
import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.view.setCards import eu.kanade.tachiyomi.util.view.setCards
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
import yokai.util.lang.getString import yokai.util.lang.getString
/** /**

View file

@ -43,8 +43,8 @@ import uy.kohesive.injekt.injectLazy
import yokai.domain.manga.interactor.GetManga import yokai.domain.manga.interactor.GetManga
import yokai.domain.manga.models.cover import yokai.domain.manga.models.cover
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.core.util.coil.asTarget import yokai.util.coil.asTarget
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
import yokai.util.lang.getString import yokai.util.lang.getString
import android.R as AR import android.R as AR

View file

@ -47,7 +47,7 @@ import eu.kanade.tachiyomi.util.system.isInNightMode
import eu.kanade.tachiyomi.util.system.isLTR import eu.kanade.tachiyomi.util.system.isLTR
import eu.kanade.tachiyomi.util.view.resetStrokeColor import eu.kanade.tachiyomi.util.view.resetStrokeColor
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
import yokai.util.lang.getString import yokai.util.lang.getString
import android.R as AR import android.R as AR

View file

@ -8,7 +8,7 @@ import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.databinding.MangaListItemBinding import eu.kanade.tachiyomi.databinding.MangaListItemBinding
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
import eu.kanade.tachiyomi.util.view.setCards import eu.kanade.tachiyomi.util.view.setCards
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
class MangaHolder( class MangaHolder(
view: View, view: View,

View file

@ -27,7 +27,7 @@ import yokai.domain.chapter.interactor.GetChapter
import yokai.domain.manga.interactor.GetManga import yokai.domain.manga.interactor.GetManga
import yokai.domain.manga.models.cover import yokai.domain.manga.models.cover
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
import yokai.util.lang.getString import yokai.util.lang.getString
class MigrationProcessHolder( class MigrationProcessHolder(

View file

@ -34,7 +34,7 @@ import eu.kanade.tachiyomi.util.view.setCards
import java.util.Date import java.util.Date
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
import yokai.util.lang.getString import yokai.util.lang.getString
import android.R as AR import android.R as AR

View file

@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.domain.manga.models.Manga
import eu.kanade.tachiyomi.ui.library.LibraryCategoryAdapter import eu.kanade.tachiyomi.ui.library.LibraryCategoryAdapter
import eu.kanade.tachiyomi.util.view.setCards import eu.kanade.tachiyomi.util.view.setCards
import yokai.domain.manga.models.cover import yokai.domain.manga.models.cover
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
/** /**
* Class used to hold the displayed data of a manga in the library, like the cover or the title. * Class used to hold the displayed data of a manga in the library, like the cover or the title.

View file

@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.databinding.MangaListItemBinding
import eu.kanade.tachiyomi.domain.manga.models.Manga import eu.kanade.tachiyomi.domain.manga.models.Manga
import eu.kanade.tachiyomi.util.view.setCards import eu.kanade.tachiyomi.util.view.setCards
import yokai.domain.manga.models.cover import yokai.domain.manga.models.cover
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
/** /**
* Class used to hold the displayed data of a manga in the catalogue, like the cover or the title. * Class used to hold the displayed data of a manga in the catalogue, like the cover or the title.

View file

@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.view.makeShapeCorners import eu.kanade.tachiyomi.util.view.makeShapeCorners
import eu.kanade.tachiyomi.util.view.setCards import eu.kanade.tachiyomi.util.view.setCards
import yokai.domain.manga.models.cover import yokai.domain.manga.models.cover
import yokai.presentation.core.util.coil.loadManga import yokai.util.coil.loadManga
class GlobalSearchMangaHolder(view: View, adapter: GlobalSearchCardAdapter) : class GlobalSearchMangaHolder(view: View, adapter: GlobalSearchCardAdapter) :
BaseFlexibleViewHolder(view, adapter) { BaseFlexibleViewHolder(view, adapter) {

View file

@ -23,11 +23,13 @@ import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.dp
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
import dev.icerock.moko.resources.compose.stringResource import dev.icerock.moko.resources.compose.stringResource
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.component.ToolTipButton import yokai.presentation.component.ToolTipButton
import yokai.presentation.core.ExpandedAppBar import yokai.presentation.core.ExpandedAppBar
import yokai.util.applyElevationOverlay
@Composable @Composable
fun YokaiScaffold( fun YokaiScaffold(
@ -44,7 +46,7 @@ fun YokaiScaffold(
) { ) {
val view = LocalView.current val view = LocalView.current
val useDarkIcons = MaterialTheme.colorScheme.surface.luminance() > .5 val useDarkIcons = MaterialTheme.colorScheme.surface.luminance() > .5
val (color, scrolledColor) = getTopAppBarColor(title) val color = getTopAppBarColor(title)
SideEffect { SideEffect {
val activity = view.context as Activity val activity = view.context as Activity
@ -66,7 +68,7 @@ fun YokaiScaffold(
// modifier = Modifier.statusBarsPadding(), // modifier = Modifier.statusBarsPadding(),
colors = topAppBarColors( colors = topAppBarColors(
containerColor = color, containerColor = color,
scrolledContainerColor = scrolledColor, scrolledContainerColor = color.applyElevationOverlay(4.dp),
), ),
navigationIcon = { navigationIcon = {
ToolTipButton( ToolTipButton(
@ -85,7 +87,7 @@ fun YokaiScaffold(
// modifier = Modifier.statusBarsPadding(), // modifier = Modifier.statusBarsPadding(),
colors = topAppBarColors( colors = topAppBarColors(
containerColor = color, containerColor = color,
scrolledContainerColor = scrolledColor, scrolledContainerColor = color.applyElevationOverlay(4.dp),
), ),
navigationIcon = { navigationIcon = {
ToolTipButton( ToolTipButton(
@ -104,10 +106,10 @@ fun YokaiScaffold(
} }
@Composable @Composable
fun getTopAppBarColor(title: String): Pair<Color, Color> { fun getTopAppBarColor(title: String): Color {
return when (title.isEmpty()) { return when (title.isEmpty()) {
true -> Color.Transparent to Color.Transparent true -> Color.Transparent
false -> MaterialTheme.colorScheme.surface to MaterialTheme.colorScheme.surfaceContainer false -> MaterialTheme.colorScheme.surface
} }
} }

View file

@ -17,7 +17,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import dev.icerock.moko.resources.compose.stringResource import dev.icerock.moko.resources.compose.stringResource
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
import yokai.presentation.core.util.clickableNoIndication import yokai.util.clickableNoIndication
@Composable @Composable
fun TrackLogoIcon( fun TrackLogoIcon(

View file

@ -10,8 +10,8 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import yokai.presentation.core.util.secondaryItemAlpha
import yokai.presentation.theme.Size import yokai.presentation.theme.Size
import yokai.util.secondaryItemAlpha
@Composable @Composable
internal fun InfoWidget(text: String) { internal fun InfoWidget(text: String) {

View file

@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import yokai.presentation.core.util.secondaryItemAlpha import yokai.util.secondaryItemAlpha
@Composable @Composable
fun TextPreferenceWidget( fun TextPreferenceWidget(

View file

@ -31,8 +31,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.zIndex import androidx.compose.ui.zIndex
import yokai.presentation.core.util.secondaryItemAlpha
import yokai.presentation.theme.Size import yokai.presentation.theme.Size
import yokai.util.secondaryItemAlpha
@Composable @Composable
fun InfoScreen( fun InfoScreen(

View file

@ -42,7 +42,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.missingChapterCount
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import kotlinx.collections.immutable.persistentMapOf import kotlinx.collections.immutable.persistentMapOf
import yokai.i18n.MR import yokai.i18n.MR
import yokai.presentation.core.util.secondaryItemAlpha import yokai.util.secondaryItemAlpha
@Composable @Composable
fun ChapterTransition( fun ChapterTransition(

View file

@ -18,9 +18,9 @@ import yokai.i18n.MR
import yokai.util.lang.getString import yokai.util.lang.getString
import dev.icerock.moko.resources.compose.stringResource import dev.icerock.moko.resources.compose.stringResource
import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.DiskUtil
import yokai.presentation.core.util.secondaryItemAlpha
import yokai.presentation.theme.Size import yokai.presentation.theme.Size
import yokai.presentation.theme.header import yokai.presentation.theme.header
import yokai.util.secondaryItemAlpha
import java.io.File import java.io.File
@Composable @Composable

View file

@ -0,0 +1,20 @@
package yokai.util
import androidx.compose.material3.LocalAbsoluteTonalElevation
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.compositeOver
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
@Composable
fun Color.applyElevationOverlay(
elevation: Dp = 0.dp,
overlayColor: Color = MaterialTheme.colorScheme.secondary,
): Color {
val absoluteElevation = LocalAbsoluteTonalElevation.current + elevation
return overlayColor
.copy(alpha = (absoluteElevation.value) / 100f)
.compositeOver(this)
}

View file

@ -1,4 +1,4 @@
package yokai.presentation.core.util package yokai.util
import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource

View file

@ -1,4 +1,4 @@
package yokai.presentation.core.util.coil package yokai.util.coil
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView

View file

@ -8,6 +8,7 @@
<style name="Theme.ActionBar.DayNight" parent="ThemeOverlay.Material3.ActionBar"> <style name="Theme.ActionBar.DayNight" parent="ThemeOverlay.Material3.ActionBar">
<item name="elevationOverlayEnabled">true</item> <item name="elevationOverlayEnabled">true</item>
<item name="elevationOverlayColor">?colorSecondary</item> <item name="elevationOverlayColor">?colorSecondary</item>
<item name="elevation">4dp</item>
</style> </style>
<!--===============--> <!--===============-->