fix: fix avatar animation & profile colors
This commit is contained in:
@@ -465,7 +465,7 @@ fun ChatsListScreen(
|
|||||||
text = accountName,
|
text = accountName,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.SemiBold,
|
fontWeight = FontWeight.SemiBold,
|
||||||
color = if (isColorLight(headerColor)) Color.Black else Color.White
|
color = Color.White
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -476,8 +476,7 @@ fun ChatsListScreen(
|
|||||||
text =
|
text =
|
||||||
"@$accountUsername",
|
"@$accountUsername",
|
||||||
fontSize = 13.sp,
|
fontSize = 13.sp,
|
||||||
color =
|
color = Color.White.copy(alpha = 0.7f)
|
||||||
if (isColorLight(headerColor)) Color.Black.copy(alpha = 0.7f) else Color.White.copy(alpha = 0.7f)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -257,9 +257,6 @@ fun ProfileScreen(
|
|||||||
|
|
||||||
// Цвета в зависимости от темы
|
// Цвета в зависимости от темы
|
||||||
val backgroundColor = if (isDarkTheme) Color(0xFF1A1A1A) else Color(0xFFFFFFFF)
|
val backgroundColor = if (isDarkTheme) Color(0xFF1A1A1A) else Color(0xFFFFFFFF)
|
||||||
val surfaceColor = if (isDarkTheme) Color(0xFF2C2C2E) else Color(0xFFF2F2F7)
|
|
||||||
val textColor = if (isDarkTheme) Color.White else Color.Black
|
|
||||||
val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)
|
|
||||||
val avatarColors = getAvatarColor(accountPublicKey, isDarkTheme)
|
val avatarColors = getAvatarColor(accountPublicKey, isDarkTheme)
|
||||||
|
|
||||||
// Проверяем наличие аватара
|
// Проверяем наличие аватара
|
||||||
@@ -321,14 +318,14 @@ fun ProfileScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Пружинистая анимация для snap-эффекта - быстрая
|
// Быстрая snap-анимация без застревания
|
||||||
val animatedOverscroll by
|
val animatedOverscroll by
|
||||||
animateFloatAsState(
|
animateFloatAsState(
|
||||||
targetValue = snapTarget,
|
targetValue = snapTarget,
|
||||||
animationSpec =
|
animationSpec =
|
||||||
spring(
|
spring(
|
||||||
dampingRatio = Spring.DampingRatioLowBouncy,
|
dampingRatio = Spring.DampingRatioMediumBouncy, // Меньше пружинистости
|
||||||
stiffness = 2000f // Очень быстрая анимация
|
stiffness = 4000f // Очень быстрый snap
|
||||||
),
|
),
|
||||||
label = "overscroll"
|
label = "overscroll"
|
||||||
)
|
)
|
||||||
@@ -384,7 +381,7 @@ fun ProfileScreen(
|
|||||||
): Offset {
|
): Offset {
|
||||||
// Если достигли верха (scrollOffset = 0) и тянем вниз - создаем overscroll
|
// Если достигли верха (scrollOffset = 0) и тянем вниз - создаем overscroll
|
||||||
if (available.y > 0 && scrollOffset == 0f) {
|
if (available.y > 0 && scrollOffset == 0f) {
|
||||||
val resistance = 0.3f
|
val resistance = 0.5f // Легче тянуть (было 0.3f)
|
||||||
val delta = available.y * resistance
|
val delta = available.y * resistance
|
||||||
overscrollOffset = (overscrollOffset + delta).coerceAtMost(maxOverscroll)
|
overscrollOffset = (overscrollOffset + delta).coerceAtMost(maxOverscroll)
|
||||||
return Offset(0f, available.y)
|
return Offset(0f, available.y)
|
||||||
@@ -704,7 +701,7 @@ fun ProfileScreen(
|
|||||||
@Composable
|
@Composable
|
||||||
private fun CollapsingProfileHeader(
|
private fun CollapsingProfileHeader(
|
||||||
name: String,
|
name: String,
|
||||||
username: String,
|
@Suppress("UNUSED_PARAMETER") username: String,
|
||||||
publicKey: String,
|
publicKey: String,
|
||||||
avatarColors: AvatarColors,
|
avatarColors: AvatarColors,
|
||||||
collapseProgress: Float,
|
collapseProgress: Float,
|
||||||
|
|||||||
Reference in New Issue
Block a user