diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 738afb7..876f823 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -52,6 +52,7 @@ dependencies { implementation(libs.material) implementation(libs.androidx.activity) implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.compose.ui) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/main/java/es/fpsumma/dam2/intro/MainActivity.kt b/app/src/main/java/es/fpsumma/dam2/intro/MainActivity.kt index 0462544..52118eb 100644 --- a/app/src/main/java/es/fpsumma/dam2/intro/MainActivity.kt +++ b/app/src/main/java/es/fpsumma/dam2/intro/MainActivity.kt @@ -9,6 +9,7 @@ import androidx.compose.material3.Surface import androidx.compose.ui.Modifier import com.ivancorrales.basicjetpackcompose.ui.theme.IntroTheme import es.fpsumma.dam2.intro.ui.screens.CounterScreen +import es.fpsumma.dam2.intro.ui.screens.InputDemoScreen class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -19,7 +20,8 @@ class MainActivity : ComponentActivity() { modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { - CounterScreen() + //CounterScreen() + InputDemoScreen() } } } diff --git a/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/CounterScreen.kt b/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/CounterScreen.kt index 404c688..ca48ff1 100644 --- a/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/CounterScreen.kt +++ b/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/CounterScreen.kt @@ -1,5 +1,7 @@ package es.fpsumma.dam2.intro.ui.screens +import es.fpsumma.dam2.intro.R +import androidx.appcompat.widget.ButtonBarLayout import androidx.compose.foundation.layout.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Refresh @@ -8,15 +10,19 @@ import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.times @Composable fun CounterScreen() { - var count by remember { mutableStateOf(0) } + var count by remember { mutableStateOf(5) } + Column( modifier = Modifier @@ -25,26 +31,40 @@ fun CounterScreen() { horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(16.dp) ) { - Text("Hola mi amig@!", style = MaterialTheme.typography.headlineMedium) + + Text(stringResource(id = R.string.app_presentacion), style = MaterialTheme.typography.headlineMedium) Text("Contador: $count", style = MaterialTheme.typography.titleLarge) Row(horizontalArrangement = Arrangement.spacedBy(12.dp)) { Button( - onClick = {}, - modifier = Modifier.semantics { contentDescription = "Incrementar" } + onClick = {count=count+1}, + modifier = Modifier.semantics { contentDescription = "Incrementar" }, + colors = ButtonDefaults.buttonColors( + containerColor = Color.Green, + contentColor = Color.White + ) ) { Text("+1") } FilledTonalButton( - onClick = {}, + onClick = {if(count>0){count=count-1}}, modifier = Modifier.semantics { contentDescription = "Decrementar" } - ) { Text("-1") } + ) { Text("-1") + } IconButton( - onClick = {}, + onClick = {count=0}, modifier = Modifier.size(48.dp) ) { Icon(Icons.Outlined.Refresh, contentDescription = "Reiniciar contador") } + } + + val ButtonWidth = 5.dp + Button( + onClick = {}, + modifier = Modifier.width(count * ButtonWidth) + ) { } + } } diff --git a/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/InputDemoScreen.kt b/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/InputDemoScreen.kt index c11ccc9..ebaee59 100644 --- a/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/InputDemoScreen.kt +++ b/app/src/main/java/es/fpsumma/dam2/intro/ui/screens/InputDemoScreen.kt @@ -23,13 +23,19 @@ fun InputDemoScreen() { // TODO: valida name: no vacío, mínimo 3 caracteres (trim). val error: String? by remember(name) { derivedStateOf { - null + if (name.trim().isEmpty()) { + "El nombre no puede estar vacío"; + }else if (name.trim().length < 3) { + "El nombre no debe tener menos de 3 caracteres"; + } + else null } } + fun submit() { if (error == null) { - greeting = "Hola, 👋" + greeting = "Hola, ${name.trim()}👋" // $name hace que muestre el nombre que insertes por pantalla se muestre focusManager.clearFocus() } } @@ -49,7 +55,8 @@ fun InputDemoScreen() { Spacer(Modifier.height(16.dp)) Button( onClick = { submit() }, - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), + enabled = error === null && name.trim().isNotBlank() ) { Text("Saludar") } diff --git a/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Color.kt b/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Color.kt index c45da49..fe909b5 100644 --- a/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Color.kt +++ b/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Color.kt @@ -8,4 +8,5 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val Pink40 = Color(0xFF7D5260) + diff --git a/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Theme.kt b/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Theme.kt index cb6c5d5..d8553b2 100644 --- a/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Theme.kt +++ b/app/src/main/java/es/fpsumma/dam2/intro/ui/theme/Theme.kt @@ -28,10 +28,11 @@ private val LightColorScheme = lightColorScheme( @Composable fun IntroTheme( - darkTheme: Boolean = false, - dynamicColor: Boolean = true, + darkTheme: Boolean = true, + dynamicColor: Boolean = false, content: @Composable () -> Unit ) { + val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { val context = LocalContext.current diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 656572b..1238336 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,5 @@ Intro - \ No newline at end of file + ¡Buenos días! + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 64452d1..0edafa9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,7 @@ appcompat = "1.7.1" material = "1.13.0" activity = "1.11.0" constraintlayout = "2.2.1" +ui = "1.9.4" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -32,6 +33,7 @@ androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version material = { group = "com.google.android.material", name = "material", version.ref = "material" } androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } +androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "ui" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }