diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/AutoSizeText.kt b/app/src/main/java/com/tangem/tap/features/home/compose/AutoSizeText.kt new file mode 100644 index 0000000000..a7d9b2b606 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/features/home/compose/AutoSizeText.kt @@ -0,0 +1,45 @@ +package com.tangem.tap.features.home.compose + +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.text.TextLayoutResult +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.ExperimentalUnitApi + +@OptIn(ExperimentalUnitApi::class) +@Composable +fun AutoSizeText( + text: String, + textStyle: TextStyle, + modifier: Modifier = Modifier +) { + val scaledTextStyle = remember { mutableStateOf(textStyle) } + val readyToDraw = remember { mutableStateOf(false) } + + val onTextLayout: (TextLayoutResult) -> Unit = { result -> + if (result.didOverflowWidth) { + val fontSize = result.size.width / result.multiParagraph.width + scaledTextStyle.value = +// scaledTextStyle.value.copy(fontSize = TextUnit(fontSize, TextUnitType.Sp)) + scaledTextStyle.value.copy(fontSize = scaledTextStyle.value.fontSize * 0.9) + } else { + readyToDraw.value = true + } + } + + Text( + text = text, + modifier = modifier.drawWithContent { + if (readyToDraw.value) { + drawContent() + } + }, + softWrap = false, + onTextLayout = onTextLayout, + style = scaledTextStyle.value, + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/FirstStoriesContent.kt b/app/src/main/java/com/tangem/tap/features/home/compose/FirstStoriesContent.kt index 9dab20b43f..92929c0027 100644 --- a/app/src/main/java/com/tangem/tap/features/home/compose/FirstStoriesContent.kt +++ b/app/src/main/java/com/tangem/tap/features/home/compose/FirstStoriesContent.kt @@ -9,7 +9,6 @@ import androidx.compose.animation.scaleIn import androidx.compose.animation.slideInVertically import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* -import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.mutableStateOf @@ -21,6 +20,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -88,32 +88,27 @@ fun FirstStoriesContent( StartingScreenState.MEET_TANGEM -> R.string.story_meet_title } - if (screenState.value != StartingScreenState.MEET_TANGEM) { - Text( - text = text?.let { stringResource(text) } ?: "", - fontSize = 60.sp, - fontWeight = FontWeight.SemiBold, - modifier = Modifier - .padding(start = 40.dp, end = 40.dp) - .alpha(if (screenState.value == StartingScreenState.SHOW_CARD) 0f else 1f), - color = Color.White, - textAlign = TextAlign.Center, + val style = TextStyle( + fontSize = 60.sp, + fontWeight = FontWeight.SemiBold, + color = Color.White, + textAlign = TextAlign.Center, + ) - ) + if (screenState.value != StartingScreenState.MEET_TANGEM) { + AutoSizeText(text = text?.let { stringResource(text) } ?: "", textStyle = style, + modifier = Modifier + .padding(start = 40.dp, end = 40.dp) + .alpha(if (screenState.value == StartingScreenState.SHOW_CARD) 0f else 1f),) } AnimatedVisibility( visible = screenState.value == StartingScreenState.MEET_TANGEM, enter = slideInVertically() { it / 2 } ) { - Text( - text = text?.let { stringResource(text) } ?: "", - fontSize = 60.sp, - fontWeight = FontWeight.SemiBold, + AutoSizeText(text = text?.let { stringResource(text) } ?: "", textStyle = style, modifier = Modifier - .padding(start = 40.dp, end = 40.dp), - color = Color.White, - textAlign = TextAlign.Center + .padding(start = 40.dp, end = 40.dp) ) } diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/HomeButtons.kt b/app/src/main/java/com/tangem/tap/features/home/compose/HomeButtons.kt index 0c223b4096..1791cf0455 100644 --- a/app/src/main/java/com/tangem/tap/features/home/compose/HomeButtons.kt +++ b/app/src/main/java/com/tangem/tap/features/home/compose/HomeButtons.kt @@ -9,10 +9,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.tangem.wallet.R -import androidx.compose.foundation.layout.fillMaxWidth as fillMaxWidth1 @Composable fun HomeButtons( @@ -25,13 +25,13 @@ fun HomeButtons( Row( horizontalArrangement = Arrangement.SpaceEvenly, - modifier = modifier.fillMaxWidth1() + modifier = modifier.fillMaxWidth() ) { - Spacer(modifier = Modifier.size(16.dp)) Button( modifier = Modifier .weight(1f) - .height(42.dp), + .height(42.dp) + , onClick = onScanButtonClick, colors = ButtonDefaults.textButtonColors( backgroundColor = if (isDarkBackground) darkColorBackground else Color.White, @@ -41,7 +41,8 @@ fun HomeButtons( Text( text = stringResource(id = R.string.home_button_scan), fontWeight = FontWeight.Medium, - fontSize = 16.sp + fontSize = 16.sp, + textAlign = TextAlign.Center ) } Spacer(modifier = Modifier.size(8.dp)) @@ -58,9 +59,9 @@ fun HomeButtons( Text( text = stringResource(id = R.string.home_button_order), fontWeight = FontWeight.Medium, - fontSize = 16.sp + fontSize = 16.sp, + textAlign = TextAlign.Center ) } - Spacer(modifier = Modifier.size(16.dp)) } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/Stories.kt b/app/src/main/java/com/tangem/tap/features/home/compose/Stories.kt index 59b7355b6c..761ca5dd22 100644 --- a/app/src/main/java/com/tangem/tap/features/home/compose/Stories.kt +++ b/app/src/main/java/com/tangem/tap/features/home/compose/Stories.kt @@ -87,9 +87,8 @@ fun StoriesScreen( } Column( horizontalAlignment = Alignment.CenterHorizontally, - modifier = - Modifier - .fillMaxSize() + verticalArrangement = Arrangement.Center, + modifier = Modifier.fillMaxWidth() ) { Spacer(modifier = Modifier.size(24.dp)) StoriesProgressBar( @@ -111,12 +110,6 @@ fun StoriesScreen( .align(Alignment.Start), colorFilter = if (isDarkBackground) null else ColorFilter.tint(Color.Black) ) - } - Column( - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, - modifier = Modifier.fillMaxWidth() - ) { when (currentStep.value) { 1 -> FirstStoriesContent(pause, stepDuration) { hideContent.value = it } 2 -> StoriesRevolutionaryWallet() @@ -130,7 +123,8 @@ fun StoriesScreen( isDarkBackground = isDarkBackground, modifier = Modifier .align(Alignment.BottomCenter) - .padding(37.dp), + .padding(37.dp) + .fillMaxWidth(), onScanButtonClick = onScanButtonClick, onShopButtonClick = onShopButtonClick ) diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/StoriesGeneralContent.kt b/app/src/main/java/com/tangem/tap/features/home/compose/StoriesGeneralContent.kt index 3f9ba4c0a4..b12be36802 100644 --- a/app/src/main/java/com/tangem/tap/features/home/compose/StoriesGeneralContent.kt +++ b/app/src/main/java/com/tangem/tap/features/home/compose/StoriesGeneralContent.kt @@ -61,7 +61,7 @@ fun StoriesGeneralContent( Image( painter = painterResource(id = imageSource), contentDescription = null, - contentScale = ContentScale.FillWidth, + contentScale = if(isDarkBackground) ContentScale.Inside else ContentScale.FillWidth, modifier = Modifier.fillMaxWidth() ) }