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.
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.
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?
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
ySwiftUI
.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:
Kotlin Playground: https://play.kotlinlang.org
Android Basics: Introduction to Kotlin: https://developer.android.com/courses/pathways/android-basics-kotlin-one
Jetpack Compose:
Jetpack Compose Pathway: https://developer.android.com/courses/pathways/compose
Blast: pensando en Compose - Proximamente: https://www.youtube.com/channel/UC_HHvDbrcFT-VimxyILfUeA
Un saludo a mi amigo @facundomr, un crack en Jetpack Compose, pronto subiremos contenido a este canal 👀
Jetpack Compose Playground: https://foso.github.io/Jetpack-Compose-Playground
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.
Android, Mobile Development, Jetpack Compose
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.
Tecnologías Emergentes • AR Foundation • Unity
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.
AR, Videojuegos
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?
Announcements
Presentamos Re-Spawn
Nuestra primera incursión en el mundo de la creación de contenido audiovisual.
Mobile / Flutter
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.
Nuevas Tecnologías, Inteligencia Artificial
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.