Herramientas de usuario

Herramientas del sitio


anexos:compose

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.

anexos/compose.txt · Última modificación: por fernando