
Bienvenidos al curso.
Es importante conocer un poco de la historia de Android, más que todo para entender como funcionan algunas cosas que se vienen heredando desde la prehistoria. También nos ayuda a entender cual será el futuro de la tecnología en este sector.
Conocer el API level de nuestras aplicaciones es importante para saber en que versiones de android podremos ejecutar nuesta querida aplicación. En los recursos dejaré una tabla donde puedes ver las diferentes versiones que existen y el api level que tiene cada versión de Android.
En este vídeo vamos a descargar los instaladores del software que usaremos. Android Studio y Git, porque como buenos programadores vamos a organizar y versionar nuestro codigo.
En este vídeo corto vamos a instalar Git como control de versiones y vamos a verificar que se instaló correctamente. Esto nos va ayudar a controlar nuestras versiones de codigo e incluso colaborar con compañeros cuando lo usemos para subir el codigo a Github.
En este vídeo vamos a instalar nuestra herramienta principal de trabajo. Android Studio, practicamente pasaremos todo el curso usando Android Studio y es esencial que lo instalemos correctamente.
En este vídeo aprenderemos a crear nuestros dispositivos emuladores.
Vamos a solucionar el problema con la virtualización de dispositivos emulados activando la virtualización en nuestra BIOS. Cada dispositivo es diferente.
En este vídeo crearemos un dispositivo virtual de tamaño tablet, siempre es bueno tener diferentes tamaños de nuestros dispositivos emulador para poder probar como se comporta nuestra app en cada uno de ellos.
Es hora de crear nuestra primera aplicación, sera un simple Hello Android, pero nos servirá para comprobar que todo el entorno está correctamente configurado y funcionando.
Si queremos convretirnos en desarrolladores de Android necesitamos conocer la estructura de un proyecto.
Comenzamos a aprender la sintaxis de Kotlin, las aplicaciones que vamos a crear serán con Kotlin así que necesitamos entender como funciona el lenguaje de programación.
Para comenzar a programar en Kotlin necesitamos herramientas que nos van a ayudar a aprender la sintaxis de Kotlin.
Las variables son la pieza fundamental de nuestras aplicaciones. Manejar y hacer operaciones con nuestras variables es la forma de crear herramientas eficientes de trabajo. Para eso nos sirven las variables y las constantes.
En esta clase aprenderemos los tipos de datos más importantes que manejaremos en nuestras aplicaciones de Kotlin y Android.
Un lenguaje de programación debe ser capaz de realizar operaciones con sus variables y valores, no solo se trata de almacenar la información, debemos ser capaces de modificarla. En este video (que quiza es un poco largo) haremos operaciones con números, comparaciones booleanas y concatenación de strings.
Fundamentar usar operaciones en runtime para optimizar los recursos de nuestros dispositivos y no hacer mil variables por todo nuestro código.
No tienes una idea de lo importante que son las condicionales a la hora de crear aplicaciones, especialmente con Jetpack Compose. Por eso vamos a dedicar el tiempo necesario para explicarlas a detalle.
Otra forma de hacer condicionales es la sentencia WHEN, con estas manera de hacerlo el código resulta un poco más limpio el código.
Las listas nos permiten organizar nuestros datos de una mejor manera, de forma ordenada y sin complicarnos por cantidad de variables.
Por defecto las estructuras de datos en Kotlin son inmutables (no se pueden modificar) pero podemos hacerlas mutables de una formamuy sencilla.
Los Sets son una estructura de datos bastante especial que tiene una propiedad muy interesante que aprenderemos en este vídeo.
Los mapas son algo paracido a los objetos JSON que se utilizan para comunicar diferentes API en el mundo del desarrollo. Básicamente un objeto clave-valor que puede almacenar información para poder acceder directamente mediante la clave.
Los bucles son algunas de las herramientas más importantes que existen en los lenguajes de programación. Permiten realizar muy rápido muchas tareas repetitivas de forma perfecta.
Otro ciclo bastante util es el bucle While, sin embargo este es un poco peligroso ya que tenemos que controlar la salida del buble, si no tenemos una variable de control podríamos entrar en un bucle infinito.
Los lenguajes modernos permiten utilizar valores nullables y es nuestra responsabilidad asegurarnos que las variables de estos tipos tengan un valor permitido antes que querer hacer operaciones con dicha variable.
Las funciones son una de las estructuras que cualquier lenguaje de programación necesita para volverse modular y estructurado. Son sumamente útiles y por eso en este vídeo aprendermos como usarlas en Kotlin.
Las funciones Lambdas son sumamente importantes en el lenguaje de programación Kotlin y especialmente si trabajamos con Jetpack Compose.
El corazón de la programación orientada a objetos (POO). Esta clase resulto un poco larga, pero es necesario para explicar cual es el uso y capacidad de las clases en Kotlin.
Las Data Class son muy sencillas y muy usadas en Kotlin, serán nuestras amigas durante todo el curso. Class un poco más simples dedicadas a almacenar información.
Esta clase es para aprender sobre las Sealed Class, nos permite escribir código más eficiente y más seguro.
Vamos a conectar a nuestro entorno de trabajo con Git y con Github. Algo importante si queremos ser profesionales en este sector.
Esta es una sección que no te puedes perder si quieres aprender Jetpack Compose. Los componentes de Layout nos permiten organizar nuestros elementos en la pantalla, así que los utilizaremos mucho para diseñar nuestras interfaces en las aplicaciones de Android.
Temás y objetivos de esta sección.
Comenzamos creando un nuevo proyecto para implementar los diferentes tipos de layout que se pueden usar en Jetpack Compose
En este vídeo aprenderemos qué es un elemento composable y hablaremos un poco sobre el Text
Las columnas nos permiten ubicar elementos de forma vertical (uno abajo otro) para organizar nuestros elementos y no estén todos justos o encima estorbandose mutuamente.
Las filas o Row son otro componente muy útil dentro de Jetpack Compose. Cumplen la misma función que las Columns pero de forma horizontal.
Los box son una nueva forma de organizar nuestros elementos composables.
Debemos comenzar a practicar lo que vamos aprendiendo. Es por eso que les recomiendo intentar hacer esta tarea por su cuenta.
Resolvemos la tarea que dejamos en el vídeo anterior. Organizaremos nuestros boxs en la pantalla.
Un Scaffold es como una estructura predeterminada que comparten las aplicaciones en Material Design. Implementarla en Jetpack es muy sencillo.
Una de las propiedades que soporta el Scaffold es el FloatingActionButton o FAB, que nos permite tener el botón de acceso rápido que tienen las aplicaciones en Material. Abajo a la derecha.
Las aplicaciones de Material normalmente tienen un TopBar que nos sirve para poner título y acciones muy específicas. Con el Scaffold podemos tener este componente de forma muy sencilla.
Para crear aplicaciones complejas vamos a necesitar combinar los componentes de layout que aprendimos en esta sección. Es por eso que en este vídeo veremos un ejemplo de como hacerlo.
Cuando necesitas agrupar una serie de funcionalidades podemos crear componente personalizados. Son elementos composable que nosotros diseñamos tanto en funcionamiento como en apariencia.
En esta sección aprenderemos a navegar entre pantallas de nuestra aplicación. Funcionalidad muy importante en cualquier desarrollo.
Comenzamos sección nueva, por la tanto proyecto nuevo. En este proyecto aplicaremos los cambios necesarios para poder realizar una navegación entre pantallas con Jetpack Compose.
Para navegar entre pantallas ocupamos una dependencia adicional que no viene por defecto, así que debemos instalarla. En este vídeo te enseñaré como.
Necesitamos bloques para contruir nuestra aplicación, en este vídeo crearemos las pantallas para movernos entre ellas.
Hay dos componentes sumamente importante a la hora de navegar entre pantallas de Compose, son el NavHost y el navHostController. Veamos como funcionan.
En este vídeo por fin vamos a realizar nuestra primera navegación.
Cuando navegamos de regreso necesitamos un tipo de funcion diferente, el popBackStack realiza este trabajo.
Las animaciones le dan un tono diferentes a las aplicaciones hacen que se vean mucho mejor. En este vídeo aprenderemos como implementarlas a nuestras transisiones de pantallas.
Vamos a enviar parámetros a nuestras rutas, para eso comenzaremos diseñando la interface que usaremos.
Terminamos nuestro ejercicio de enviar parámetros a una segunda pantalla. Veremos como configurar nuestra ratu para que reciba el parametro y como obtener este parámetro de vuelta.
En ocaciones tenemos pantallas que pueden o recibir un parámetro, en esos casos debemos usar parámetros opcionales. Aquí aprenderemos como implementarlos.
La navegación de la forma que la hemos venido usando funciona bien. Pero tiene algunos detalles que la hacer un poco vulnerable. Es por eso que en esta clase aprenderemos una manera más profesional de administrar nuestras rutas.
Esta más que una tarea es un desafío. Haremos una aplicación que animación muy bonitas de diferentes direcciones.
Resolvermos la tarea que dejé en el vídeo anterior. Quedo un poco larga, pero creamos una app intersante y aplicamos todo lo aprendido hasta hoy.
Comenzamos sección nueva, aquí vamos a avasteser nuestro arsenal de componentes de Jetpack Componse.
Vamos a crear un nuevo proyecto desde cero para practicar y para poder a ver los diferentes componentes que tiene Jetpack Compose.
Los textos ya los hemos visto de forma muy básica, pero en este vídeo vamos aprofundizar en algunos detalles muy poderosos que tiene.
Todo lo que necesitamos saber sobre los íconos y un poco más.
Si los elementos no caben en la pantalla debemos hacer que nuestra columna sea scrolleable verticalmente.
Los botones son un tema largo en Jetpack compose, de nunca acabar, en este vídeo veremos algunos de ellos y sus configuraciones más importantes.
Introducir información a formulario no sería posible sin campos de texto que nos permitan escribir. Estos son los textfield, importantes. Además introduciremos el concepto de stateOf, o estado de nuestros componentes.
Aquí uno de esos comportamientos un poco extraños que tiene Jetpack Compose. Vamos a aprender como solucionarlo conociendo una de las funciones más útiles para manejar nuestros estados de forma local.
Comenzamos a ver algunos componentes de selección. El Checkbox es el ideal para comenzar.
Por alguna razón este es mi componente favorito de compose. Y es que se ve muy estético y hace que una aplicación se ve muy profesional.
Este es el último de los componentes de selección que veremos. Este tiene una peculiaridad ya que normalmente sus opciones son excluyente. Veremos la lógica detrás de este comportamiento.
Toda aplicación tiene imágenes en su interface, ya sean logos u otro tipo de usos. Aquí aprenderemos como mostrar imágenes locales en nuestra app.
Leer imágenes de internet cada vez es más requerido en las aplicaciones, por temas de configuración o simplemente porque es parte de las necesidades de la aplicación. Aquí aprenderemos a hacerlo usando la librería Coil que se ve recomendada en la documentación oficial de Android.
Poner un indicador que le muestre a los usuarios que nuestra aplicación está realizando una aplicación. Para esto existen los indicadores. Aquí veremos los CircularProgressIndicator y los LinearProgressIndicator.
El pequeño iconito de las notificaciones, es conocida como el Badge y su componente viene acompañado con un padre que se conoce como BadgeBox. Aquí veremos como funciona.
Un componente que me gusta mucho y además es muy sencillo de usar y muy cómo para los usuarios.
Este es un componente un poco más complejo, básicamente porque requiere un poco de lógica en su implementación. Pero nada que no podamos manejar.
Los card son un componente sumamente simple, pero inquebrantable. Nos sirven para un montón de cosas y le dan mucha estética a nuestros proyectos.
Un elemento olvidado pero muy estético. Realmente se ve muy bien y es muy fácil de implementar.
La típica barra de navegación que está hasta abajo de la aplicación, la podemos hacer muy fácil con Jetpack compose.
Un componente un poco más complejo, además nos sirve para introducir un concepto importante, las Corrutinas. Concepto que utilizaremos mucho después.
No podemos terminar esta sección sin mostrar como hacer las imágenes circulares. Seguro muchos se quedaron pensando como se haría. Aquí explicamos cómo.
Comenzamos una nueva sección donde aprenderemos un montón de cosas sobre Jetpack Compose. Y de paso crearemos nuestra primera aplicación compleja.
Comenzamos sección, comenzamos proyecto. En este proyecto crearemos una especie de chat que podrá ir cambiando de temas.
Necesitamos saber como funcionan los temas para poder implementarlos. Es por eso que en esta clase vamos a explicar como es la implementación y en qué casos lo necesitamos.
Creamos el archivo donde iremos aplicando lo que vamos aprendiendo sobre los Themes.
La forma nativa de saber si el sistema está en modo oscuro o no, es con la función que ya nos ofrece Jetpack Compose, isSystemInDarkTheme( ). Aquí aprenderemos como funciona y cual es el uso que se le suele dar.
En esta clase aprenderemos qué es un ColorScheme y como usarlo en nuestra aplicación.
Crear los colores para nuestras aplicaciones nunca fue tan fácil y rápido. Con esta aplicación web que nos recomienda Google podremos crear la paleta de colores completa para nuestros temas.
Una funcionalidad que solo puede ser usada en versiones de android 12 o superiores ( API 31+ ) es la de dynamicColosScheme, permite un comportamiento muy curioso adoptando diferentes colores dependiendo de la configuración o el fondo de pantalla del dispositivo Android. Una capacidad nativa que puede ser muy útil en ciertos casos.
En esta secciones estamos haciando una aplicación con un diseño de chat, empecemos a hacer que esto parezca un chat.
Seguimos diseñando nuestra aplicación con apariencia de mensajería.
Terminemos el diseño de nuestra app de ThemesChat, en este vídeo si lo terminaremos.
Un chat que no funciona no es muy divertido, así que agreguemos un poco de funcionamiento a nuestra aplicación.
Al terminar este vídeo tendremos una aplicación en la que no solo podemos enviar mensajes, sino que nos responde con mensajes aleatorios. Y además con una animación.
Haremos que nuestra aplicación cambie entre diferentes temas, hagamos un menú donde el usuario pueda elegir cual seleccionar.
Creemos un segundo tema para nuestra aplicación. Haremos la estructura que nos puede servir para poder agregar los temas que queramos.
En este video crearemos la funciona para cambiar entre temas en nuestra aplicación.
Siempre que aprendemos algo debemos practicarlo. Es por eso que en esta clase tendremos que hacer una tarea. Haciendo lo que ya aprendimos, mucha suerte.
Terminamos nuestra aplicación resolviendo la tarea del vídeo anterior.
Comenzamos una de la sección más importante del curso. Aprenderemos como funciona el modelo de arquitectura MVVM.
Un poco de teoría siempre viene bien. Antes de comenzar a crear nuestro código primero entenderemos a nivel teórico como funciona la arquitectura MVVM.
Por defecto los proyectos de Android no traen la capacidad de implementar MVVM de una forma completa. Es por eso que debemos instalar algunas dependencias crear por el mismo equipo de Google para usarlo.
Para el primer ejemplo usaremos una aplicación tipo contador, para entender como fluye la información en todo el MVVM.
Vamos a crear el ViewModel que va a servir entre controlador entre el modelo y la vista.
Para probar el observer necesitamos modificar la fuente de información, darle funcionamiento a nuestro Counter.
Usaremos esta propiedad nativa de Android para recordar el valor del contador despues de cerrar la aplicación.
Hagamos un pequeño repaso de la aplicación actual.
Creamos un segundo proyecto en esta sección para ver un ejemplo práctica de como usar el view model.
Diseñemos la apariencia de la credit card.
Diseñemos el formulario desde el que vamos a modificar la información de la credit card.
Es necesario prácticar lo aprendido. En este vídeo te pongo una tarea/desafío para que pongas a prueba lo que has aprendido en la sección.
Aquí muestro como solucionaría yo la tarea que dejé en el vídeo anterior. Pero recuerda que lo ideal es que lo resuelvas tu mismo.
Separar la información guardada con la información visual es muy sencillo cuando se usa MVVM. Aquí en este vídeo te enseño cómo.
Ampliamos nuestro proyecto agregando nueva funcionalidad. Veremos lo fácil que es una vez tengamos implementada la base.
Con este curso aprenderás desde cero como crear aplicaciones nativas de Android usando los estándares más modernos recomendados por Google, Kotlin como lenguaje de programación, Jetpack Compose como sistema de vistas para componener nuestras pantallas, Material 3 como sistema de diseño. Navegación entre pantallas con Navigation Compose, etc.
Al crear aplicaciones nativas aprovecharemos todas las caracteristicas del sistema operativo Android y crear aplicaciones eficientes y con Jetpack Compose también nos aseguramos que las aplicaciones sean bonitas.
Comenzaremos aprendiendo los conceptos básicos de Kotlin, ya que al final de cuentas programaremos todo el tiempo en este lenguaje de programación moderno, aprenderas desde las bases hasta las funciones avanzadas del lenguaje y algunos trucos para sacarle el máximo provecho.
¿Qué aprenderás en este curso de Android?
Kotlin: sintaxis y características
Programación Orientada a Objetos: las clases en Kotlin pueden ser de varios tipos, clases abstractas, interfaces, subclases, objetos anonimos, data class, enum class, Sealed class...
Estructura de un Proyecto: te explicaré todos los archivos que componen un proyecto en Android. Conocimiento esencial si quieres ser un desarrollador de aplicaciones nativas.
Componentes de Compose: qué son y cómo se usan cada uno de los composables que vienen con Jetpack Compose, Text, Column, Row, Scafold, Icon, Button, etc.
Cómo hacer código ordenado y limpio.
Versionamiento del código con Git y Github.
Cambiar de forma profesional el icono y el SplashScreen animado de una aplicación.
Implementar coroutines en nuestras aplicaciones Android, manejo de diferentes hilos de ejecución.
Buenas prácticas al momento de desarrollar aplicaciones para mejorar su mantenimiento.