Práctica: Crea una cuadrícula

1. Antes de comenzar

¡Felicitaciones! Compilaste tu primera app con una lista desplazable. Ya puedes poner en práctica lo que aprendiste.

Este ejercicio se centra en la creación de los componentes necesarios para crear una lista desplazable. El material amplía lo que aprendiste en el codelab Cómo agregar una lista desplazable y te permite aplicar ese conocimiento para crear una cuadrícula del mismo estilo.

Es posible que en algunas secciones se requiera que uses modificadores o funciones de componibilidad que no hayas visto antes. En esos casos, consulta las Referencias disponibles para cada problema, en las que puedes encontrar vínculos a documentación relacionada con los modificadores, las propiedades y las funciones de componibilidad que no conoces. Puedes leer la documentación y determinar cómo incorporar los conceptos en la app. La capacidad de comprender la documentación es una habilidad esencial que debes desarrollar para aumentar tus conocimientos.

El código de la solución estará disponible al final, pero intenta resolver los ejercicios antes de comprobar las respuestas. Considera la solución como una forma de implementar la app.

Requisitos previos

Requisitos

  • Una computadora con acceso a Internet y Android Studio instalado

Recursos

Necesitarás los siguientes recursos para completar el código de estos problemas prácticos.

  • Imágenes por tema Estas imágenes representan cada tema de la lista.
  • ic_grain.xml Este es el ícono decorativo que aparece junto a la cantidad de cursos del tema.

Qué compilarás

En estos problemas prácticos, compilarás la app de Courses desde cero. La app de Courses muestra una lista de temas de cursos.

Los problemas prácticos se dividen en secciones, en las que compilarás lo siguiente:

  • Una clase de datos sobre temas del curso

Los datos del tema tendrán una imagen, un nombre y la cantidad de cursos asociados a ese tema.

  • Una función de componibilidad para representar un elemento de la cuadrícula de temas del curso:

Cada elemento del tema mostrará la imagen, el nombre, la cantidad de cursos asociados y un ícono decorativo.

  • Una función de componibilidad para mostrar una cuadrícula de esos elementos del tema del curso

La app final se verá de la siguiente manera:

97c449bee4a2029d.png

2. Primeros pasos

Crea un proyecto nuevo con la plantilla Empty Activity y un SDK mínimo de 24.

3. Clase de datos de los temas

En esta sección, compilarás una clase para conservar los datos de cada tema del curso.

Mira los elementos de la app final.

bf68e7995b2f47bd.png

Cada tema del curso contiene tres tipos de información única. Con el contenido único de cada elemento como referencia, crea una clase para conservar estos datos.

4. Fuente de datos

En esta sección, crearás un conjunto de datos para la cuadrícula de cursos.

Copia los siguientes elementos en app/src/main/res/values/strings.xml:

<string name="architecture">Architecture</string>
<string name="crafts">Crafts</string>
<string name="business">Business</string>
<string name="culinary">Culinary</string>
<string name="design">Design</string>
<string name="fashion">Fashion</string>
<string name="film">Film</string>
<string name="gaming">Gaming</string>
<string name="drawing">Drawing</string>
<string name="lifestyle">Lifestyle</string>
<string name="music">Music</string>
<string name="painting">Painting</string>
<string name="photography">Photography</string>
<string name="tech">Tech</string>

Crea un archivo vacío llamado DataSource.kt. Copia el siguiente código en el archivo:

object DataSource {
    val topics = listOf(
        Topic(R.string.architecture, 58, R.drawable.architecture),
        Topic(R.string.crafts, 121, R.drawable.crafts),
        Topic(R.string.business, 78, R.drawable.business),
        Topic(R.string.culinary, 118, R.drawable.culinary),
        Topic(R.string.design, 423, R.drawable.design),
        Topic(R.string.fashion, 92, R.drawable.fashion),
        Topic(R.string.film, 165, R.drawable.film),
        Topic(R.string.gaming, 164, R.drawable.gaming),
        Topic(R.string.drawing, 326, R.drawable.drawing),
        Topic(R.string.lifestyle, 305, R.drawable.lifestyle),
        Topic(R.string.music, 212, R.drawable.music),
        Topic(R.string.painting, 172, R.drawable.painting),
        Topic(R.string.photography, 321, R.drawable.photography),
        Topic(R.string.tech, 118, R.drawable.tech)
    )
}

5. Elemento de la cuadrícula de temas

Crea una función de componibilidad para representar un elemento de la cuadrícula de temas.

Captura de pantalla final

Cuando termines la implementación, el diseño del elemento de tema debería coincidir con la siguiente captura de pantalla:

f7e47f86ab7ea8b3.png

Especificaciones de IU

Usa las siguientes especificaciones de IU:

3bdfc5ea4f3d619d.png

b051bb634fa06501.png

Estilos de texto

Pista: ¿Qué función de componibilidad organiza sus elementos secundarios de forma vertical y cuál los organiza de forma horizontal?

Referencias

6. Cuadrícula de cursos

Una vez que se haya creado el elemento de la cuadrícula de temas, se puede usar para crear una cuadrícula de temas de cursos.

En este ejercicio, usarás una función de componibilidad para crear una cuadrícula con dos columnas.

Captura de pantalla final

Cuando termines la implementación, tu diseño debería coincidir con la siguiente captura de pantalla:

97c449bee4a2029d.png

Especificación de IU

Usa las siguientes especificaciones de IU:

aee57a3a525e91bb.png

Referencias

7. Obtén el código de la solución

Para descargar el código del codelab terminado, puedes usar este comando de git:

$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-courses.git

También puedes descargar el repositorio como un archivo ZIP, descomprimirlo y abrirlo en Android Studio.

Descargar ZIP

Si deseas ver el código de la solución, puedes hacerlo en GitHub.

La app que compilaste en este ejercicio es una versión modificada de la pantalla de cursos de la app de Owl. La app de Owl es una app de ejemplo completa que demuestra las capacidades de Compose. Puedes encontrar otras apps de ejemplo de Compose en el repositorio de GitHub compose-samples.