feat: Update version to 1.0.6 and enhance release notes with new features and improvements
This commit is contained in:
@@ -653,7 +653,7 @@ fun ChatsListScreen(
|
||||
modifier = Modifier
|
||||
.matchParentSize()
|
||||
.background(
|
||||
if (isDarkTheme) Color(0xFF2A2A2A) else PrimaryBlue
|
||||
if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF228BE6)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1117,7 +1117,36 @@ fun ChatsListScreen(
|
||||
}
|
||||
}
|
||||
) {
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// Telegram-style scale animation: main content shrinks when drawer opens
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
val drawerWidthPx = with(LocalDensity.current) { 300.dp.toPx() }
|
||||
val translateXPx = with(LocalDensity.current) { 4.dp.toPx() }
|
||||
val density = LocalDensity.current
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(backgroundColor)
|
||||
.graphicsLayer {
|
||||
@Suppress("DEPRECATION")
|
||||
val offset = drawerState.offset.value
|
||||
val progress = if (offset.isNaN()) 0f
|
||||
else ((drawerWidthPx + offset) / drawerWidthPx).coerceIn(0f, 1f)
|
||||
|
||||
if (progress > 0.001f) {
|
||||
val s = 1f - 0.07f * progress
|
||||
scaleX = s
|
||||
scaleY = s
|
||||
translationX = translateXPx * progress
|
||||
transformOrigin = androidx.compose.ui.graphics.TransformOrigin(1f, 0f)
|
||||
val cornerPx = with(density) { (16.dp * progress).toPx() }
|
||||
shape = RoundedCornerShape(cornerPx)
|
||||
clip = true
|
||||
compositingStrategy = CompositingStrategy.Offscreen
|
||||
}
|
||||
}
|
||||
) {
|
||||
Scaffold(
|
||||
topBar = {
|
||||
key(isDarkTheme, showRequestsScreen, isSelectionMode) {
|
||||
@@ -1247,8 +1276,8 @@ fun ChatsListScreen(
|
||||
}
|
||||
},
|
||||
colors = TopAppBarDefaults.topAppBarColors(
|
||||
containerColor = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF0D8CF4),
|
||||
scrolledContainerColor = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF0D8CF4),
|
||||
containerColor = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF228BE6),
|
||||
scrolledContainerColor = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF228BE6),
|
||||
navigationIconContentColor = Color.White,
|
||||
titleContentColor = Color.White,
|
||||
actionIconContentColor = Color.White
|
||||
@@ -1320,7 +1349,7 @@ fun ChatsListScreen(
|
||||
.defaultMinSize(minWidth = 20.dp, minHeight = 20.dp)
|
||||
.clip(badgeShape)
|
||||
.background(
|
||||
color = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF0D8CF4)
|
||||
color = if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF228BE6)
|
||||
)
|
||||
.padding(2.dp)
|
||||
.clip(badgeShape)
|
||||
@@ -1331,7 +1360,7 @@ fun ChatsListScreen(
|
||||
text = badgeText,
|
||||
fontSize = 10.sp,
|
||||
fontWeight = FontWeight.Bold,
|
||||
color = Color(0xFF0D8CF4),
|
||||
color = Color(0xFF228BE6),
|
||||
lineHeight = 10.sp,
|
||||
modifier = Modifier.padding(horizontal = 4.dp, vertical = 2.dp)
|
||||
)
|
||||
@@ -1420,9 +1449,9 @@ fun ChatsListScreen(
|
||||
colors =
|
||||
TopAppBarDefaults.topAppBarColors(
|
||||
containerColor =
|
||||
if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF0D8CF4),
|
||||
if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF228BE6),
|
||||
scrolledContainerColor =
|
||||
if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF0D8CF4),
|
||||
if (isDarkTheme) Color(0xFF2A2A2A) else Color(0xFF228BE6),
|
||||
navigationIconContentColor =
|
||||
Color.White,
|
||||
titleContentColor =
|
||||
|
||||
@@ -197,8 +197,8 @@ fun ImageEditorScreen(
|
||||
animationProgress.animateTo(
|
||||
targetValue = 1f,
|
||||
animationSpec = tween(
|
||||
durationMillis = 250,
|
||||
easing = FastOutSlowInEasing
|
||||
durationMillis = 300,
|
||||
easing = CubicBezierEasing(0.2f, 0.0f, 0.0f, 1.0f)
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -417,6 +417,7 @@ fun ImageEditorScreen(
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.graphicsLayer { alpha = animatedBackgroundAlpha }
|
||||
.background(Color.Black)
|
||||
.zIndex(100f)
|
||||
.pointerInput(Unit) {
|
||||
@@ -429,7 +430,17 @@ fun ImageEditorScreen(
|
||||
Box(
|
||||
modifier =
|
||||
Modifier.fillMaxSize()
|
||||
.graphicsLayer { alpha = animationProgress.value }
|
||||
.graphicsLayer {
|
||||
scaleX = animatedScale
|
||||
scaleY = animatedScale
|
||||
translationX = animatedTranslationX
|
||||
translationY = animatedTranslationY
|
||||
if (animatedCornerRadius > 0f) {
|
||||
shape = RoundedCornerShape(animatedCornerRadius)
|
||||
clip = true
|
||||
}
|
||||
alpha = animationProgress.value
|
||||
}
|
||||
) {
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
// 📸 FULLSCREEN PHOTO - занимает ВЕСЬ экран, не реагирует на клавиатуру
|
||||
@@ -443,10 +454,10 @@ fun ImageEditorScreen(
|
||||
setPadding(0, 0, 0, 0)
|
||||
setBackgroundColor(android.graphics.Color.BLACK)
|
||||
|
||||
// Простой FIT_CENTER - показывает ВСЁ фото, центрирует
|
||||
// Edge-to-edge: фото заполняет весь экран без чёрных полос
|
||||
source.apply {
|
||||
scaleType = ImageView.ScaleType.FIT_CENTER
|
||||
adjustViewBounds = true
|
||||
scaleType = ImageView.ScaleType.CENTER_CROP
|
||||
adjustViewBounds = false
|
||||
setPadding(0, 0, 0, 0)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user