小优化

This commit is contained in:
beyond committed 2026-09-05 18:34:21 +08:00
1 parent 67c602a5ef
commit 082c42e177
2 files changed
+33 -27

No files matched your search

@@ -305,11 +305,16 @@ private fun FeaturedItemBanner(
Box(Modifier.fillMaxSize().background(
Brush.verticalGradient(
0f to Color.Transparent,
0.38f to Color.Transparent,
0.56f to immersive.hero.copy(alpha = 0.10f),
0.72f to immersive.hero.copy(alpha = 0.34f),
0.88f to immersive.pageTop.copy(alpha = 0.76f),
1f to immersive.pageTop,
0.30f to Color.Transparent,
0.45f to immersive.hero.copy(alpha = 0.06f),
0.55f to immersive.hero.copy(alpha = 0.14f),
0.63f to immersive.hero.copy(alpha = 0.24f),
0.70f to immersive.hero.copy(alpha = 0.36f),
0.77f to immersive.hero.copy(alpha = 0.50f),
0.83f to immersive.hero.copy(alpha = 0.66f),
0.89f to immersive.hero.copy(alpha = 0.80f),
0.94f to immersive.hero.copy(alpha = 0.92f),
1f to immersive.hero,
)
))
@@ -880,8 +885,8 @@ fun HomeScreen(
}
val homeBackground = if (useImmersiveHomeBackground) {
Brush.verticalGradient(
0f to immersiveBackground.pageTop,
0.54f to immersiveBackground.pageTop,
0f to immersiveBackground.hero,
0.50f to immersiveBackground.hero,
1f to immersiveBackground.pageBottom,
)
} else {
@@ -47,6 +47,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.BlendMode
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Size
@@ -468,8 +469,8 @@ fun MediaDetailScreen(
.fillMaxSize()
.background(
Brush.verticalGradient(
0f to immersive.pageTop,
0.53f to immersive.hero,
0f to immersive.hero,
0.50f to immersive.hero,
1f to immersive.pageBottom,
)
)
@@ -818,7 +819,7 @@ private fun DetailHero(
val posterUrl = EmbyRepository.buildImageUrl(serverUrl, item, maxWidth = 900)
// Keep the detail cover at the same height as the home hero.
Box(Modifier.fillMaxWidth().aspectRatio(0.84f)) {
Box(Modifier.fillMaxWidth().aspectRatio(1.0f)) {
if (backdropUrl != null || posterUrl != null) {
LumaAsyncImage(
model = backdropUrl ?: posterUrl,
@@ -859,21 +860,21 @@ private fun DetailHero(
),
)
// Long bottom ramp into the same palette-derived background. Most of the
// artwork stays visible; the transition happens mainly in the lower third.
// Bottom ramp: gentle transition into the palette background.
// Starts late so most of the artwork stays clear.
Box(
Modifier
.fillMaxSize()
.background(
Brush.verticalGradient(
0f to Color.Transparent,
0.34f to background.copy(alpha = 0.03f),
0.50f to background.copy(alpha = 0.10f),
0.63f to background.copy(alpha = 0.23f),
0.73f to background.copy(alpha = 0.41f),
0.82f to background.copy(alpha = 0.60f),
0.90f to background.copy(alpha = 0.78f),
0.96f to background.copy(alpha = 0.92f),
0.48f to Color.Transparent,
0.60f to background.copy(alpha = 0.08f),
0.70f to background.copy(alpha = 0.20f),
0.78f to background.copy(alpha = 0.40f),
0.85f to background.copy(alpha = 0.62f),
0.91f to background.copy(alpha = 0.80f),
0.96f to background.copy(alpha = 0.93f),
1f to background,
)
),
@@ -897,16 +898,16 @@ private fun DetailHeadline(detail: EmbyItem, serverUrl: String) {
horizontalAlignment = Alignment.CenterHorizontally,
) {
Box(
Modifier.fillMaxWidth().heightIn(min = 58.dp, max = 96.dp),
Modifier.fillMaxWidth().heightIn(min = 78.dp, max = 136.dp),
contentAlignment = Alignment.Center,
) {
if (!logoLoaded) {
Text(
text = displayTitle,
color = LocalDetailText.current,
fontSize = 23.sp,
fontSize = 34.sp,
fontWeight = FontWeight.Bold,
lineHeight = 28.sp,
lineHeight = 42.sp,
textAlign = TextAlign.Center,
maxLines = 3,
overflow = TextOverflow.Ellipsis,
@@ -917,7 +918,7 @@ private fun DetailHeadline(detail: EmbyItem, serverUrl: String) {
model = logoUrl,
contentDescription = displayTitle,
contentScale = ContentScale.Fit,
modifier = Modifier.fillMaxWidth(0.76f).heightIn(max = 96.dp),
modifier = Modifier.fillMaxWidth(0.88f).heightIn(max = 136.dp),
onSuccess = { logoLoaded = true },
onError = { logoLoaded = false },
)
@@ -1377,13 +1378,13 @@ private fun CastSection(cast: List<DetailCastMember>, loading: Boolean) {
private fun CastMemberCard(member: DetailCastMember) {
Column(
modifier = Modifier
.width(92.dp)
.height(128.dp),
.width(84.dp)
.height(118.dp),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Box(
Modifier
.size(88.dp)
.size(80.dp)
.clip(CircleShape)
.background(
Brush.linearGradient(
@@ -1416,7 +1417,7 @@ private fun CastMemberCard(member: DetailCastMember) {
Text(
text = member.name,
color = LocalDetailText.current,
fontSize = 12.sp,
fontSize = 11.sp,
fontWeight = FontWeight.SemiBold,
maxLines = 1,
textAlign = TextAlign.Center,