Llevo ya algunos años trabajando con Android, disfruto crear aplicaciones que se convierten en productos digitales que pueden ayudar a muchas personas, que puedan envolvernos en nuevas experiencias y que resuelvan una necesidad real de una forma clara y sencilla.

Android como SDK ha tenido muchos cambios que han sido para bien, como es el caso de Kotlin, que vino a cambiar mucho la forma en que creabamos aplicaciones. A mi parecer fue un cambio necesario a un lenguaje no solo "bonito" de leer, sino tambien que redujo mucho codigo que generalmente escribiamos diariamente.

bored

Pero despues de Kotlin, algo me empezaba a aburrir cuando trabajaba en las app, sentia este cambio entre construir la logica y toda la funcionalidad con Kotlin, a volver a XML y crear las vistas. Claro ya existian nuevas vistas como ConstraintLayout que eran mucho mas divertidas de trabajar, pero realmente sentia que Android se estaba quedando atrás.

Declarative UI

Algo que cambio mucho mi perspectiva fue el empezar a trabajar con Flutter, que traia como propuesta las UI declarativas, esto cambiaba mucho mi forma de pesar como construir una interfaz. Para los que no esten familiarizados con que es una UI declarativa, estamos cambiando nuestra forma de programacion imperativa (en la que ibamos detallando cada accion que realizariamos en nuestra vista, como si de comandos secuenciales se tratase):


<TextView android:id="@+id/simpleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""/>

val simpleText: TextView = findViewById(R.id.simpleText)
simpleText.text = "Hola desde el blog de Pixela"
simpleText.setTextColor(Color.parseColor("#000000"))

a una forma en la que nosotros podemos describir nuestras vistas en base a un estado:


return Text(
  "Hola desde el blog de Pixela",
	color: Colors.black
);

Esto ultimo es importante, porque desde un principio tenemos que pensar en reactividad, ya no podemos pesar en vistas que ibamos condicionando, ahora podemos hacer que nuestras vistas reaccionen y cambien dependiendo del estado que manejemos.

Esto fue un gran cambio para mi, pero me preguntaba si algun dia tambien tendriamos esta forma de construir vistas en Android nativo, ¿como se haría? ¿como se vería? ¿habrian cambios fuertes?

¿Que es Jetpack Compose?

Es la razon por la que volví a enamorarme de Android, pero sin ponernos melosos y resumiendo: Jetpack Compose es la nueva propuesta de Android para crear interfaces gráficas. Sin XML, nada de programacion imperativa, todo en Kotlin utilizando el concepto declarativo.

El termino Composable sera muy recurrente, y es que todos nuestros elementos visuales seran un Composable, un elemento reutilizable. Pensemos en todas las vistas que vayamos construyendo como un Composable: un texto, una imagen, un boton, un drawer, cualquier elemento que veamos, es un Composable.

Vale la pena mencionar, no estamos cambiando nada de esto por nuestras Activities, seguimos necesitando de una para poder construir nuestras vistas, pero en lugar de hacer un setContentView para decirle que vista XML usar, utilizaremos:


class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(sabedInstanceState)
    // setContentView(R.layout.activity_main)
  	setContent {
      SimpleScreen()
    }
  }
}

Declaremos las reglas del juego para utilizar Compose:

  • Tendremos elemento visuales llamados Composables

  • Tendremos un punto de entrada para colocar nuestros Composables: setContent

  • Cada Composable sera representado por una funcion Kotlin con la anotacion @Composable

  • La funcion de nuestro Composable no retorna nada.

  • Cada Composable puede ser tan grande o pequeño como querramos.

  • Al ser funciones, podemos hacer uso de otros Composables dentro de los nuestros llamandolo como cualquier otra funcion.

Esto abre un mundo de posibilidades en muchos aspectos: animaciones, manejo de data, theming, reactividad, por nombrar algunas.

Jetpack Compose samples

Samples del equipo oficial de Android

¿Por que trabajar con Jetpack Compose ahora?

Hasta el dia de esta publicacion, Compose se encuentra en beta04 por lo que muy probablemente se piense:

¿Por que trabajar con una herramienta que aun esta en fase beta?

¿Por que?

A continuacion un listado de las razones por las que deberias empezar a aprender y trabajar con Compose:

  • Se convertira en el nuevo estandar para trabajar en el futuro.

  • Solo debes trabajar en un lenguaje: Kotlin.

  • Podras aprender un paradigma de programacion que se utiliza en otras plataformas como Flutter y SwiftUI.

  • No debes aprender mas herramientas, tendras un path claro y moderno para involucrarte en Android si aun no lo has hecho.

  • La comunidad y la documentacion están creciendo dia a dia.

  • Hay muchos recursos disponibles con los que puedes iniciar no solo en Compose, tambien con Kotlin.

  • Experimentar con una herramienta genial y novedosa.

¿Como comienzo a trabajar con Compose?

La mejor forma de aprender una nueva herramiente es haciendolo, y en este caso, si aun no hemos tenido un acercamiento a Kotlin, vale la pena echarle un vistazo a los recursos que tenemos para aprender:

Kotlin:

Jetpack Compose:

Concluyendo: Jetpack Compose es hermoso, devolvío mi amor por Android y hara que tanto desarrolladores experimentados como los que nunca han trabajado con Android, puedan aprender crear interfaces gráficas de una forma moderna, que ademas, el concepto declarativo podran aplicarlo en otras plataformas.

Esto es todo por el momento, seguramente seguiremos subiendo mas contenido de mobile, hay muchas oportunidades que aprovechar y aprender en este mundo del Androide y las apps.

Creando una animación de sonido con Jetpack Compose

Crear animaciones en cualquier framework puede parecer una tarea complicada, pero Jetpack Compose lo hace fácil.

Ver más

Trabajando Con Realidad Aumentada

Crear una experiencia en AR podría sonar relativamente simple, pero el flujo de trabajo también incluye Inteligencia Artificial y tecnologías de videojuegos.

Ver más

Desarrollando videojuegos: no es lo que esperaba, pero eso es bueno.

Crear videojuegos puede ser al mismo tiempo una experiencia familiar y completamente distinta. ¿Cómo desarrollar tu primer videojuego si ya eres un desarrollador avanzado?

Ver más

Presentamos Re-Spawn

Nuestra primera incursión en el mundo de la creación de contenido audiovisual.

Ver más

Manage your app content with Flutter and Prismic.io

There are many ways to provide content for our apps and websites, we show you how to use our very own implementation of Prismic IO in your flutter app.

Ver más

Gran poder en la palma de tu mano: usando Inteligencia Artificial para construir experiencias de A.R en Android.

La inteligencia artificial juega un papel fundamental en la creación de aplicaciones de Realidad Aumentada.

Ver más