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" }