======JetPack Compose======
**Jetpack Compose** es el sistema oficial de Google para el diseño de interfaces. Con Compose las interfaces se construyen mediante funciones en lenguaje Kotlin.
===== Funciones Composable =====
Las funciones que forman parte de la interfaz se marcan con la anotación:
@Composable
Por ejemplo:
@Composable
fun Saludo() {
Text("Hola Android")
}
Una función ''@Composable'' puede llamar a otras funciones ''@Composable'' para construir interfaces más complejas.
Por ejemplo:
@Composable
fun PantallaPrincipal() {
Column {
Text("Bienvenido")
Text("Mi primera aplicación")
}
}
==== Mostrar la interfaz ====
Desde la Activity podemos indicar qué interfaz queremos mostrar utilizando:
setContent {
PantallaPrincipal()
}
Un ejemplo completo sería:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
PantallaPrincipal()
}
}
}
==== Componentes básicos ====
Compose incluye numerosos componentes para construir interfaces. Algunos de los más utilizados al principio son:
^ Componente ^ Función ^
| ''Text'' | Mostrar texto |
| ''Button'' | Crear botones |
| ''TextField'' | Introducir texto |
| ''Image'' | Mostrar imágenes |
| ''Icon'' | Mostrar iconos |
Por ejemplo:
@Composable
fun Ejemplo() {
Text("Nombre")
Button(
onClick = {
// Acción al pulsar
}
) {
Text("Aceptar")
}
}
==== Organización de elementos ====
Compose permite organizar los componentes mediante distintos contenedores. Los principales son:
^ Componente ^ Función ^
| ''Column'' | Coloca los elementos verticalmente |
| ''Row'' | Coloca los elementos horizontalmente |
| ''Box'' | Permite superponer o posicionar elementos |
Ejemplo:
@Composable
fun DatosUsuario() {
Column {
Text("Nombre: Ana")
Text("Edad: 22")
}
}
También podemos combinar diferentes contenedores:
@Composable
fun FichaUsuario() {
Column {
Text("Usuario")
Row {
Text("Ana")
Text("22 años")
}
}
}
==== Modifier ====
''Modifier'' se utiliza para modificar el aspecto, tamaño o posición de los componentes. Por ejemplo:
Text(
text = "Hola Android",
modifier = Modifier.padding(16.dp)
)
También podemos encadenar varios modificadores:
Button(
onClick = { },
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
) {
Text("Aceptar")
}
Algunos modificadores habituales son:
* ''padding()''
* ''fillMaxWidth()''
* ''fillMaxSize()''
* ''width()''
* ''height()''
==== Material Design ====
Jetpack Compose utiliza habitualmente componentes basados en Material Design. Por ejemplo:
Button(
onClick = { }
) {
Text("Guardar")
}
o:
TextField(
value = "",
onValueChange = { },
label = {
Text("Nombre")
}
)
Estos componentes ya incluyen comportamientos y estilos preparados para aplicaciones Android modernas.
==== Previsualizar componentes ====
Android Studio permite previsualizar componentes Compose sin ejecutar completamente la aplicación. Para ello se utiliza la anotación:
@Preview
Por ejemplo:
@Preview(showBackground = true)
@Composable
fun PantallaPreview() {
PantallaPrincipal()
}
Esto permite comprobar rápidamente cómo se verá una parte de la interfaz.
==== Componentes reutilizables ====
Una de las ventajas de Compose es que podemos dividir una interfaz en funciones pequeñas y reutilizables. Por ejemplo:
@Composable
fun Titulo(texto: String) {
Text(texto)
}
Podemos reutilizarla varias veces:
@Composable
fun Pantalla() {
Column {
Titulo("Usuarios")
Titulo("Configuración")
}
}
Esto facilita mantener el código organizado y evita repetir elementos.
===== Estado y eventos =====
El estado es el conjunto de datos que determina cómo debe mostrarse la interfaz en un momento determinado.