小优化
This commit is contained in:
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,
|
||||
|
||||
Reference in new issue
Block a user