CategoriasAndroidProgramación

El camino del desarrollador Android #6 – Activity Lifecycle

¡Hola! esta vez traemos de vuelta nuestros post sobre el desarrollo de aplicaciones Android, para seguir aprendiendo sobre como crear aplicaciones en esta plataforma. En esta oportunidad hablaremos del ciclo de vida de las Activities el cual es muy importante para el desarrollo de nuestras aplicaciones para que se comporten como es debido, tener el conocimiento del ciclo de vida nos ayudara a responder a los diversos cambios del sistema, como cuando tu aplicación se pone en segundo plano o cuando tu aplicación es cerrada.

El ciclo de vida

Cuando tu aplicación es creada y ejecutada pasa por varias etapas del ciclo de vida aquí debajo puedes ver un diagrama de como funciona dicho ciclo de vida.

 

 

ciclo de vida de android
Obtenida de Android Developers

Es un poco intimidante al principio, pero no es muy de difícil de entender ya que tiene bastante sentido prosigamos a explicarlo.

  1. Empecemos, por el onCreate() este es el primer método que viene viene llamado cuando se crea una actividad aquí es donde construye y se crea tu interfaz de usuario, también llamada UI.
  2. Cuando la actividad pasa a estar visible se llamara al método onStart(), el cual aparece cuando la actividad pasa a estar visible.
  3. En el momento en la que la actividad gana foco, se llama el método onResume().

La misma secuencia ocurre en reversa,

  1. La secuencia en reversa empieza con el onPause(), en este punto la Activity ha perdido el foco un ejemplo de esto es cuando queremos compartir una imagen y aparece el dialogo que te indica con que aplicación quieres compartirlo si a través de Instagram, Facebook o Twitter.
  2. Luego continua con el onStop(), el cual viene llamado cuando la Activity ya no es visible.
  3. Y para terminar el ciclo de vida, viene llamado el método onDestroy() el cual es el ultimo que viene llamado al eliminar la Activity.

Los otros dos casos que nos quedan son, cuando el usuario regresa a la aplicación en el cual se llamara al método onRestart(). El otro caso restante es el que podemos encontrar a la izquierda de la imagen, cuando el Sistema operativo tiene demasiada memoria ocupada, empezara a matar las aplicaciones que estén consumiendo mucha memoria, así que podríamos tener el caso en el que tengamos una aplicación en segundo plano pero que este consumiendo muchos recursos, así que será eliminada y nunca pasaría por el onRestart(), lo mismo ocurriría en el onPause().

Mucha teoría poco código, bueno aquí esta.

En este caso vamos a tomar por ejemplo, que tenemos un formulario que el usuario debe rellenar para registrarse. ¿Que ocurre? que al girar el móvil, se borran los campos y tiene que llenarlos de nuevo, una de las peores cosas que pueden pasar.

¿Por que ocurre esto? Por que al hacer esto el ciclo de vida se reinicia y empieza a pintar de nuevo la interfaz desde el onCreate(), así que lo que procederemos a hacer es almacenar el estado en el bundle y luego restaurarlos.

Tendríamos nuestro layout xml, de la siguiente forma:

Y presentando, nuestro primer post en con código en Kotlin tenemos:

De esta forma al girar la aplicación ya tendremos que se mantiene el estado y lo que hemos escrito previamente.

Algunas cosas que deben saber del código en Kotlin que quizas pueden llegar a preguntarse:

  • ¿Donde están los findViewById? en Kotlin puedes utilizar directamente las views de un XML utilizando una extensión que se llama kotlinx.android.synthetic al tu escribir el id de en este caso el EditText te aparecera la sugerencia que te indica si quieres importarlo con kotlinx, aceptas y se incluirá en tu clase.
  • La función .run{}  es una función de Kotlin, asi que no te preocupes si no las has visto antes.
  • El símbolo ? antes de un punto indica que el objeto es opcional.

Para mucha gente que aun tenemos que utilizar Java en nuestro trabajo o en otros proyectos, lo hacemos de la siguiente forma:

Como podemos notar el código en Kotlin, es mucho mas limpio que en Java y ademas nos ahorramos unos cuantos if.

Y bueno, con eso terminamos en este post, una nueva herramienta que ya conocemos y que podemos aplicar a nuestras aplicaciones para hacerlas mas robustas y mejor para nuestros usuarios. Si te ha gustado lo que hemos hablado acá, no olvides, Compartir el Post usando los botones de aquí abajo, unirte a la newsletter para no perderte cualquier información acerca de nuestros post y seguirnos en nuestras redes sociales que encontraras debajo.

 

CategoriasProgramación

Por qué debes aprender a programar

Hoy en día estamos rodeados de redes sociales, de aplicaciones que nos hacen la vida mas fácil, de aplicaciones o páginas que nos enseñan algo que está pasando en tiempo real al otro lado del mundo. Tenemos la suerte de vivir en una época así, a veces sentimos que todo ha sido descubierto hasta ahora, que ya esto no puede estar mejor, ya de aquí ¿Qué más van a inventar? dicen algunas personas. La verdad es que queda mucho por descubrir, quizás tienes una idea de algo que puede revolucionar el mundo, pero sientes que no cuentas con las herramientas adecuadas para realizar tu idea, si tu idea implica el desarrollo de una aplicación, juego o página web, consigue la herramienta que te falta para realizar tu idea, aprende a programar.

La programación como herramienta

Así que un día te levantaste y camino a tu trabajo habitual pensaste «Sería genial que alguien hiciera «esto» «. ¿Por qué en vez de esperar de que alguien lo haga, no lo haces tu?. Solemos escuchar como otras personas se quejan comentando «No, es que no tengo tiempo, no se programar, no soy creativo». Si, probablemente no sepas programar o no tengas una mente tan creativa como otros, en eso puede que tengas razón. Pero te puedo asegurar algo y es que todas las personas tenemos la misma cantidad de horas al día y cada quien decide que hacer con ellas. Puedes tomar solo una hora al día y empezar a aprender a programar solo por diversión. Empieza desde ¿Cómo puedo hacer que mi teléfono haga esto? o ¿Cómo funcionará esta página? o quizás lo que pensaste alguien ya lo inventó, pero tu tienes una idea de como mejorarlo ¿Por qué no hacerlo?.

Para programar no importa la edad, ser el clásico estereotipo que se ha visto Star Wars, conocer todos los comics de Marvel y DC o haber salido de «The big bang theory». Nada de esto importa, lo único que importa es tu determinación en aprender una herramienta que te abrirá el camino a un nuevo mundo de creaciones infinitas, donde si cometes un error muchas veces puedes volver atrás utilizando la opción de deshacer.

La programación puede llegar a ser abrumadora, hay muchas tecnologías, lenguajes, patrones de diseño, arquitecturas y todo en constante evolución (una muy veloz cabe destacar). Lo mejor para aprender a programar es trazarte metas pequeñas, porque si empiezas con «Voy a crear el nuevo Instagram» o «Voy a crear una nueva criptomoneda usando blockchain» te vas a dar un gran tropezón.

Seriously

Empieza por lo básico, traza un camino y ponte un objetivo. Por ejemplo, este mes será mes de aprender HTML. Todos los días a una hora en especifico, tomaré una clase de html. Luego empieza con CSS, luego con Javascript. Y poco a poco veras como te vas formando y vas aprendiendo. Ciertamente, si quieres aumentar el número de horas, avanzarás más rápido, pero recuerda que después de cierta cantidad de información la retención disminuye y puede que pierdas la diversión.

Programar para vivir

Hoy en día en el campo de la tecnología siempre se esta buscando nueva gente para integrar al mundo, y lo mejor es que aunque no tengas experiencia seguramente consigas trabajo si has realizado trabajos por tu cuenta como hobby. Si creas proyectos interesantes, subes tu código a repositorios, creas tu portafolio y llegas a una entrevista con un «Esto es lo que he hecho, esto es lo que se hacer, en esto los puedo ayudar», tu esfuerzo será recompensado.

Económicamente los programadores tienen sueldos bastante decentes, no voy a caer mucho en detalles aquí, dependiendo del país que seas puedes buscar un poco en internet y quizás te sorprendan los resultados. Una persona que le guste la programación, se dedique y le ponga cariño, rara vez estará desempleado. Así que si estas pensando en un cambio de carrera o a que dedicarte ¿Por qué no pruebas?.

you-can-do-it

¿En qué empresas podría trabajar?

Puedes trabajar en empresas pioneras en un sector, las startups. Puedes trabajar como una variante de la profesión mas antigua del mundo, en una consultora, solo que en este caso prestas tu cerebro y tus conocimientos como servicios, además perteneces y no perteneces a dicha empresa. Si me permiten una analogía de fútbol, eres un jugador de un equipo que esta en préstamo a otro, así de simple. O por último, puedes trabajar en una empresa grande de tecnología como Google, Facebook, Amazon o Twitter, pero ya estamos hablando de trabajar en el Olimpo.

Cada una tiene sus ventajas y sus desventajas, queda de tu parte valorar en donde quieres trabajar. Pero eso sí, nunca dejes que el trabajo te quite la diversión de programar, siempre mantente actualizado con las nuevas tecnologías, ya que es un área en el que tienes que estar actualizado siempre.

learn

OK, me convenciste pero ¿Dónde aprendo?

Ya tenemos un post aquí en este blog sobre donde puedes aprender, así que no dudes de verlo aqui.

¿Qué hacer después de leer esto?

Empieza un tutorial de los que ya hemos mencionado en el otro post, enrólate en un curso, sigue unos tutoriales, reserva una hora en tu día y utiliza esa hora para aprender a programar y respétala.

Si te ha gustado este post no olvides seguirnos en nuestras redes sociales, las encontraras al fondo de esta página. Además, comenta aquí abajo que te gustaría aprender, ¿Programación web, Móvil o de escritorio?

Foto de la portada por : Riccardo Annandale on Unsplash

CategoriasProgramación

7 Plataformas donde aprender a programar HOY

¡Hola! Esta vez en este post quería hablarles un poco acerca de unas plataformas muy interesantes donde pueden aprender a programar desde 0, o en el caso de que ya sepas algo de programación, pero quieres aprender otro lenguaje y estés buscando una forma no aburrida para aprender.

CodeAcademy

Es una plataforma es muy buena para aprender a programar, ya que cuenta con una consola en la misma página y puedes empezar a practicar lo que acabas de aprender para ir avanzando, no importa si no tienes algún tipo de conocimiento de programación, porque al aprender un lenguaje en esta página te enseñaran desde lo mas básico. Si quieres dar los primeros pasos para empezar a desarrollar paginas web, puedes empezar por aquí que no te arrepentirás. CodeAcademy es gratis y puedes siempre pagar por la versión Pro, este sitio tiene también la opción de ver algunos cursos en español.

Codeschool

Codeschool es una plataforma con unos vídeos que comienzan de una forma muy graciosa y creativa, con música y todo el rollo. Es bastante genial, a mi me gustan muchos sus vídeos. Te proporcionan los mismos archivos PDF que usan en los vídeos y utilizan un editor de texto en la misma pagina para que puedas ir realizando los ejercicios. Lo malo es que a veces tienen contenido algo desactualizado, tienen capítulos de algunos cursos gratis, pero luego para continuar debes tener una membresía, la cual cuesta 29$ por mes y todo se encuentra en ingles. Sin embargo, hay fines de semana en los que dejan todo el contenido libre, si estas suscrito a su newsletter te llegara un correo avisándote 😉

Udemy

Esta es una gran plataforma a diferencia de las otras, en esta cualquiera que conozca de un tema puede audicionar y crear su curso para compartir su conocimiento. Hay grandes cursos en esta plataforma de todo tipo, no solo de programación, también existen otro tipos de contenido. De programación podemos encontrar desde Programación web, Android e iOS, en distintos idiomas y en distintos niveles. Y en la mayoría de los cursos puedes ver una prueba de como es el instructor y si te gusta puedes comprar el curso, muchas veces tienen descuento y solo te cuestan 10$.

Coursera

Es una de mis plataformas favoritas, gracias a ellos tuve la oportunidad de aprender muchas de las cosas que se hoy en día, así que siempre la tendré presente, ya que ellos dada a mi situación económica en Venezuela al no poder pagar uno de sus cursos me proporcionaron ayuda financiera y logre realizar varios cursos de Ruby on Rails y programación web, aunque luego me incline por el desarrollo de apps. En esta plataforma hay cursos desde Paleontología hasta Criptografia dictada por los profesores de la universidad de nada mas y nada menos que… La de Stanford, ¿No me crees? Puedes hacer click aquí y verifícalo por ti mismo.

Puedes elegir entre una variedad de cursos bastante amplia, puede ser tanto de Android como de iOS y si prefieres irte por el lado del desarrollo web y quieres empezar desde 0 no puedes dejar de ver uno de mis cursos favoritos «HTML,CSS and Javascript for Web Developers» el profesor de este curso es súper carismático y seguramente tendrás un momento de risa mientras realizas el curso, porque aprender no tiene por qué ser aburrido y tedioso ¿no?.

Algunos cursos los puedes realizar pero no te darán ningún certificado, que si obtendrías comprando el curso, pero siempre te quedas con lo mas importante, lo que has aprendido.

Treehouse

Debo admitir que tengo cierta debilidad por la interfaz, el branding y la forma en la que se realizan los cursos de Treehouse, el contenido que tiene es de muy alta calidad y bien hecho. Los profesores en Android son muy buenos y las animaciones que incluyen en los videos para explicar me parecen muy buenas, puedes empezar una prueba gratis de 7 días y luego puedes elegir entre un plan de 25$ por mes o el plan pro que es de 50$ por mes que incluye cursos mas avanzados.

Lamentablemente, este sitio cuenta con todos sus cursos en ingles. Luego de haberle preguntado a Ryan Carson a través de Instagram, El CEO de Treehouse me ha respondido que por el momento no tienen planes de llevar los cursos a español ☹️

Udacity

Esta plataforma me ha asombrado mucho ya que tiene una gran relación con Google y varias empresas grandes. Los cursos son algo costosos, pero luego de que te das cuenta que los profesores pueden ser los mismos que los embajadores de Android en el mundo, es algo a tomar muy en cuenta, ademas la calidad es muy buena también y cuenta con ciertos cursos gratis, los cuales los puedes encontrar aquí. Inclusive tiene la posibilidad de prepararte para la certificación de desarrollador Android de Google.

Platzi

Platzi es una plataforma donde puedes obtener buenos cursos y certificados por un precio bastante asequible ademas de tener varios cursos gratis siempre se mantienen actualizados con lo ultimo en el mundo de la tecnología asi que, seguramente quieras echarle un vistazo.

¿Tu cual agregarías a la lista? Háznoslo saber en los comentarios y no olvides compartir en las redes sociales este post, seguramente a algún colega tuyo le pueda interesar esta lista 😉

Photo by 广博 郝 on Unsplash

CategoriasAndroidProgramación

Flutter – ¿Qué es?

¿Qué es Flutter?

Flutter es un SDK creado por Google para desarrollar aplicaciones con una gran calidad en las interfaces, tanto para Android como para iOS. (Si, para iOS). Curiosa apuesta de parte de nuestro amigo Google, ¿no?.

Flutter es un SDK completo con frameworks, widgets y herramientas que le da a los desarrolladores una manera sencilla de crear aplicaciones con una linda interfaz en ambas plataformas. Esta pensado para que los desarrolladores tengan una manera rápida de construir aplicaciones para ambas plataformas sin sacrificar la interfaz.

También desde la página de Flutter, podemos obtener leer lo siguiente «Aunque no sean el objetivo principal para este framework. Flutter También esta hecho para los diseñadores que quieren que sus visiones de diseño sean realizadas consistentemente y con una alta fidelidad a sus usuarios».

¿Qué clase de Ionic, Phonegap o React native es este?

Al principio cuando empece a saber de Flutter, pensé que seguro iba a ser otro mas del montón de frameworks que se utilizan para programar en ambas plataformas, porque es el sueño de muchas empresas, dejar de pagarle a dos desarrolladores para quedarse con uno solo y bueno, que vea como resuelve los problemas.

Pero, al contrario de las otras opciones que tienen una capa «conectora» que permite la comunicación entre Javascript y la parte nativa. En algunos casos es un WebView y en otros casos son los OEM widgets que vienen con el dispositivo Flutter tiene su propio motor de renderizado el cual esta hecho con C y C++.

No te preocupes, no necesitas ser el mejor en C o C++ para usar Flutter. El lenguaje que se utiliza para programar es … ¿Dart?. Si, Dart quizás no lo hayas escuchado antes, pero es un lenguaje «Moderno» y orientado a objetos, el cual a mi parecer tiene mucha semejanza con Javascript.

¿Qué IDE se utiliza para programar?

Para programar con Flutter tienes varias opciones:

– Android Studio 3: Solo necesitaras descargarte los plugins necesarios los cuales son:

  • Flutter
  • Dart

-Intellij IDEA: La versión Community o Ultimate de este IDE. e instalarte los mismos plugins.

-VS Code: Un favorito por muchos amigos desarrolladores, debes instalarte la extensión de dart code y recargar tu Visual estudio, además puedes validarlo escribiendo «doctor» en el Command Palette y seleccionar la opción de Flutter: Run Flutter Doctor

flutter-hotreload

Flutter y su HotReload

Una de las muchas ventajas con las que se vende Flutter es su habilidad de «HotReload» el cual te permite probar rápidamente, experimentar, construir interfaces, agregar funcionalidades y solucionar bugs rápidamente, ya que actualiza la aplicación en pocos segundos sin perder el estado en el que se encuentra, en emuladores y en dispositivos físicos, tanto para Android como para iOS. Eso es algo que suena bastante interesante.

¡Perfecto! Mañana mismo migro toda la aplicación de mi empresa a Flutter

vamoacalmarnomeme

¡No tan rápido! Flutter aun está en Beta release y aunque promete muchas cosas, muchas de sus API aun están en crecimiento y necesita crecer todavía un poco. Pero habrá que darle una oportunidad, probar y quien sabe, quizás dentro de 3 años estén buscando desarrolladores con 5 años de experiencia en Flutter (Sarcasmo).

Una imagen vale más que mil palabras

Nuestros amigos de Google, han subido una aplicación a la Play store que podemos descargar desde aquí. Donde puedes probar todas los widgets que tiene Flutter, además aquí dejamos unos cuantos screenshots de como se ve.

Todas estas capturas son de la misma aplicación, podemos ver desde elementos del Material design y un dialogo de iOS.

Eso es todo… Por ahora

Si quieres saber mas acerca de Flutter puedes visitar su página. Además si piensas que deberíamos hacer más post acerca de Dart y Flutter, deja tu opinión en los comentarios. Y no olvides utilizar los botones aquí debajo para compartir el post en tus redes sociales para que este interesante proyecto se conozca más.

Ademas, aquí debajo te dejamos un resumen para que lo compartas con tus colegas 😉
Flutter-Infografia

CategoriasAndroidProgramación

El camino del desarrollador Android #5 – Primera Aplicación, Pizzapedia

Hola a todos, Por fin ha llegado el momento de crear nuestra primera aplicación donde utilizaremos todo lo que hemos estado aprendiendo en los post anteriores, si has llegado a este Post y no sabes de cual hablo, te invito a conocerlos aquí. Hoy nos enfocaremos en hacer una aplicación donde podamos «iniciar sesión», seleccionar una pizza entre un catalogo y al tocarla mostrar una descripción de ella.

La idea de estas aplicaciones es practicar con ejemplos de la vida real donde puedes llegar a sentir que has aprendido algo, no solo ver videos o leer blogs y esperar que todo lo que has leído lo aprendas mágicamente. Lo que no se practica se olvida y en el campo de la programación la práctica hace al maestro.

Creando el proyecto

Para empezar, vamos a crear nuestro proyecto y colocarle un nombre original como «Pizzapedia» y vamos a seleccionar crear un Empty Activity, es decir, una «Activity Vacia». Le dejamos el nombre de MainActivity, hacemos click en «Siguiente» Y esperamos que el Android Studio termine de inicializar el proyecto.

Luego que se haya creado el proyecto, procederemos a crear el layout de nuestra Activity en el activity_main.xml  donde vamos a añadir un LinearLayout y dentro de este, dos EditText para el nombre de usuario y contraseña respectivamente y luego incluiremos un Button para iniciar sesión.

Sin mas que agregar, abrimos el archivo activity_main.xml y agregamos el siguiente código:

La mayoría de estos atributos los habíamos visto en los Post anteriores. Sin embargo, he agregado dos mas a la lista los cuales serían:

android:layout_margin: El cual indica el margen del widget respecto al padre, al utilizar este atributo modificamos todos los márgenes respecto al padre por 8dp (En Android es una buena practica utilizar la unidad dp en vez de px)

android:layout_gravity: Este atributo especifica como debería colocarse el Button en un conjunto de vistas. En nuestro caso hemos optado por que se mantenga en el centro.

Agreguémosle funcionalidad

Ahora, agreguémosle la funcionalidad a nuestro layout. Abrimos nuestro archivo MainActivity.java donde vamos a implementar toda lógica que necesitamos para pasar a los siguientes Activities.

Primero, creamos nuestras variables miembros, mUsername_et,mPassword_et y mButton. Le añadimos el prefijo «m», así indicamos que es una variable miembro y le asignamos su vista utilizando el id que hemos declarado en el activity_main.xml.

Luego, vamos a agregarle la funcionalidad al Button utilizando el método setOnClickListener(); y dentro de este vamos a llamar a un método que vamos a crear llamado CheckUser(); el cual se encargara de hacer una validación sencilla, en donde verificaremos que el campo de usuario y contraseña no están vacíos, ademas de verificar que sean los correctos.

Para terminar, en caso de que el usuario haya ingresado el nombre de usuario y la contraseña correcta, se ejecutará un método que crearemos llamado moveToPizzaList(); donde utilizaremos un Intent para abrir la Activity que muestra la lista de pizzas disponibles.

Mostrando la lista de pizzas

Ahora que ya hemos iniciado sesión en nuestra aplicación queremos ver nuestra lista de pizzas, para esto necesitamos utilizar la herramienta que ya conocemos el llamado RecyclerView. Ahora, para empezar vamos a crear el layout de nuestra celda en el RecyclerView que llamaremos item_row.xml e incluiremos un ImageView y un TextView donde mostraremos una imagen de la pizza y su nombre.

Hemos agregado unas imágenes de pizzas a nuestra carpeta drawable donde luego con el RecyclerView vamos a mostrar, ahora agregamos el RecyclerView a nuestro layout de la nueva Activity que hemos creado el cual es el PizzaListActivity. Quedando asi el activity_pizza_list.xml:

Muy bien, ahora necesitamos crear un objeto de java llamado Pizza con tres atributos: nombre, descripción y un entero que será el id del drawable que vamos a colocar en el ImageView en pocas palabras el id de la imagen que acabamos de pegar en nuestra carpeta drawable.


Ahora que ya tenemos un objeto Pizza crearemos un Adapter que utilizará una lista de pizzas para mostrar. Empezamos creando nuestra clase CustomAdapter y Extendiéndola de la clase RecyclerView.Adapter tal cual como lo vimos en nuestro articulo anterior, luego le indicamos al viewHolder cual layout debe inflar en el método onCreateViewHolder(); y declaramos nuestros widgets en el método onBindViewHolder();

Recuerda que si no recuerdas bien como crear un Adapter personalizado, puedes revisar nuestro post anterior Aquí.

El CustomAdapter queda de la siguiente manera:

Ok, ya casi terminamos. Necesitamos crear nuestra lista de pizzas e inicializar nuestro RecyclerView en el mainActivity. Para esto, seguiremos los mismos pasos que en el post Anterior solo que en esta oportunidad, vamos a crear una lista de objetos Pizza y la vamos a pasar al CustomAdapter, quedando de esta forma:

Agregando el onClickListener

Para tener la capacidad de reaccionar al click de cada celda del RecyclerView no podemos utilizar un simple .setOnClickListener(); necesitamos crear nuestro propio onClickListener y aunque no hemos hablado todavía de los Listener, explicaremos brevemente que en este caso lo utilizaremos para reaccionar a ciertos eventos y ejecutar métodos entre distintas clases.

Empezaremos por crear la clase OnRecyclerViewItemClicklistener, la cual es una interfaz. Las interfaces solo tienen la declaración de los métodos mas no su implementación, esta se realiza en la clase que implementa la interfaz.

Ahora, debemos agregar como un nuevo atributo al CustomAdapter el cual va a ser nuestro recién creado Listener y a su vez vamos a modificar el constructor de la clase CustomAdapter.

Luego, en el método onBindViewHolder vamos a mover toda la inicialización de los widget a un método llamado bind() en la clase del ViewHolder y le pasaremos como parámetro la pizza de la lista que hemos seleccionado además del Listener, para despues asignarle un setOnClickListener al itemView y dentro de este llamar al Listener que creamos pasándole la pizza que hemos seleccionado anteriormente. El cual queda de la siguiente manera:

Para terminar, modificamos la forma en la cual creamos el CustomAdapter utilizando el nuevo constructor y creando un new OnRecyclerviewItemClickListener quedando de la siguiente manera:

Y así culminamos la aplicación, recuerda que esto es una base y puedes dar rienda suelta a tu imaginación para basarte en esta aplicación y crear otras aplicaciones con tus propias ideas. Si quieres descargarte el proyecto puedes encontrar el link al repositorio de github aquí. 

Como siempre, si te ha gustado el post deja un comentario acerca de que te ha parecido, sobre que te gustaría que habláramos y no olvides compartir el post y seguirnos en nuestras redes sociales.¡Hasta la próxima!

CategoriasAndroidProgramación

El camino del desarrollador Android #4 – RecyclerView y Adapters

Hola amigos, bienvenidos otra vez a otro tutorial de esta serie sobre Android en este caso por fin, toca hablar de uno de los elementos más usados en todo el mundo del desarrollo Android, RecyclerViews.

¿Que son estos famosos RecyclerViews?

Los RecycerViews son elementos que permiten mostrar una lista de elementos en una aplicación, por ejemplo. Mostrar una lista de fotos, dónde el usuario puede interactuar con cada foto, darle «Me gusta», compartir la foto y comentar sobre la foto. ¿Les suena parecido este ejemplo? pues seguramente si, Instagram, Facebook, La aplicación que usas para ordenar pizza los domingos probablemente también utilice un RecyclerView para mostrarte todas sus pizzas.

Un RecyclerView nunca anda solo, siempre tiene compañeros y estos son los Adapters y los LayoutManager. Son algo así cómo los tres mosqueteros, El LayoutManager se encarga de gestionar cómo mostrar cada celda del Recyclerview y ordenarlas de cierta manera, el Adapter se encarga de cómo se gestiona la información manejar la lista de elementos, notificar cuando un elemento ha cambiado o ha sido eliminado y por último el RecyclerView gestiona la parte visual de cómo se muestra esta cantidad de elementos en una manera muy eficiente, esto lo hace manteniendo una cantidad de limitada de vistas.

Fuente: Android Developers

¿Entendido, por dónde empezamos?

Para empezar debemos primero agregar nuestro RecyclerView al layout XML de nuestro Activity.

Vemos que al ser un widget, tiene atributos que ya hemos visto antes en los otros post si no te acuerdas de ellos o no los has visto. Puedes revisar en nuestro post dónde hablamos de widgets Aquí.

Paso #2

Crear nuestro layout del ViewHolder, cada ViewHolder necesita mostrar un layout. Así que nos centramos en crear nuestro propio layout, es bastante simple, hacemos el mismo procedimiento que hemos realizado previamente para los Activities.

cómo podrás ver, no tiene nada del otro mundo. Es solo un Activity con un TextView dentro que nos muestra un nombre.

Paso #3

Para continuar con la creación de nuestro RecyclerView, necesitamos crear nuestro propio Adapter. Para ellos necesitamos crear una clase que sea hija del Recyclerview.Adapter y lo hacemos de la siguiente manera:

Ok, hemos creado nuestro Adapter e implementado sus métodos. Pero, un momento ¿que es un «ViewHolder» y por que esta ahí?, bueno un ViewHolder es la forma en la que cada celda es representada en el RecyclerView y cada ViewHolder necesita de un layout. Si, un archivo XML así cómo las Activities ¿Que sorpresa no?.

Puede parecer mucho código luego de implementar todos los métodos que se generan por la herencia de la clase, pero calma que explicaremos cada parte de este código.

Primero, creamos una clase llamada CustomAdapter. Esta clase hereda de RecyclerViewAdapter y dentro de ella tenemos un ViewHolder, al ser una clase hija de RecyclerView.Adapter debe implementar los siguientes métodos:

onCreateViewHolder(ViewGroup parent, int viewType): Este método se encarga de «inflar» el xml del cual hablamos previamente y regresar un objeto ViewHolder.

public void onBindViewHolder(MyViewHolder holder, int position): Este método se encarga de asignarle a cada ViewHolder los datos que tiene que mostrar por eso para acceder a los widgets que tenemos declarados previamente, necesitamos utilizar el holder.mTextView.setText y asignarle el texto obteniendo cada elemento de la lista utilizando mNameList.get(position).

public int getItemCount(): Por último este método indica la cantidad de objetos que contiene la lista. La cual hemos creado previamente, en nuestra clase CustomAdapter.

Para terminar con este paso hablaremos de la clase MyViewHolder la cual es una clase que hereda de la clase RecyclerView.ViewHolder y es dónde creamos nuestro ViewHolder personalizado, aquí declaramos los widgets que se muestra en el layout xml que hemos creado previamente y para inicializarlos tenemos que utilizar el famoso método findViewById() pero esta vez necesitamos buscar este id en el itemView que nos provee el constructor por eso utilizamos itemView.findViewById(R.id.tv_name);

Paso #4

Ahora tenemos que crear e inicializar nuestro RecyclerView y Adapter en el Activity que estamos utilizando. Lo hacemos de la siguiente manera:

Aquí podemos observar, cómo creamos un RecyclerView y lo inicializamos, luego creamos una lista de nombres que es con la cual vamos a rellenar nuestro CustomAdapter y llegamos al LayoutManager el cual se encarga de ordenar y manejar las celdas que le envie el Adapter, existen tres tipos de LayoutManager las cuales son:

  • LinearLayoutManager: El cual muestra las celdas cómo si fuera un LinearLayout de forma vertical o de forma horizontal.
  • GridLayoutManager: Que muestra los elementos en forma de cuadrícula.
  • StaggeredGridLayoutManager: Parecido al GridLayoutManager solo que esta lo muestra de una manera escalonada.

Si no estas contento con alguno de estos 3, siempre puedes crear tu propio LayoutManager.

Luego, indicamos al RecyclerView que ItemAnimator debe utilizar el cual es una animación que se muestra en una celda cuando un cambio es realizado en el Adapter y un divisor que divide cada celda de nuestro RecyclerView. Para terminar solo le indicamos al RecyclerView cual es el Adapter que debe utilizar y hemos terminado!

RecyclerView

Y con esto tenemos otra herramienta más a nuestro arsenal, dónde sin duda alguna es una de las más importantes y muy usadas en este mundo del desarrollo Android, no te pierdas la próxima entrega de esta serie de tutoriales dónde crearemos una aplicación desde 0 y utilizaremos todos los conocimientos que hemos ido publicando hasta el momento.

Y cómo siempre, si te ha gustado el Post o nuestro blog puedes comentar, compartir nuestro post por las redes sociales y seguirnos en ellas (Instagram, Twitter, Facebook) para que no te pierdas ningún Post de nuestro blog y más importante, nos apoyes. ¡Hasta luego!

CategoriasAndroidProgramación

El camino del desarrollador android #3 – Intents,ImageView y Bundles

Hola a todos, previamente ya hemos hablado acerca de lo que son las Activities, cómo funcionan y cómo agregar widgets para darle un uso y una apariencia. De lo que vamos a hablar en este Post es acerca de Intents,Imageview (Otro widget que aun no hemos cubierto) y Bundles. Estos componentes son esenciales en una app de Android, ya que por empezar a hablar de ellos los Intents nos ayudan a llamar a otro componente de la aplicación, es imposible tener una app sin imágenes así que para eso tenemos los ImageView y los Bundles que nos sirven para almacenar objetos y pasarlos a través de clases.

¿Qué son los Intents?

Los Intents son objetos que se utilizan para solicitar la acción de otro componente de Android. Ya vimos una de ellas que son las Activities, ahora los otros tres componentes de Android restantes serían, Broadcast, Services y content Providers. De los cuales hablaremos próximamente en este blog.

Las tres formas más comunes para utilizar Intents son las que vamos a ver a continuación:

Para comenzar una actividad

En caso de que tengamos nuestra actividad Login y quisiéramos desplazarnos a nuestra actividad principal con toda la información principal de la aplicación, tendríamos que crear un Intent y utilizar el método

startActivity();

y pasarle como parámetro un Intent con la clase a la que nos queremos dirigir, por ejemplo:

Los dos tipos de Intents

Existen dos tipos de Intents, lo que acabamos de ver que sería un Intent explícito, el cual se llama así por que se indica explícitamente que componente vamos a iniciar, en este caso sería otra activity de nuestra app.

Fuente: Android Developers

En esta imagen podemos ver como se inicia un Intent desde un Activity A hasta como llega y se inicia un Activity B.

Al contrario a un Intent implícito,
no le indicamos que componente va a iniciar, sino que le declaramos una acción, lo cual permite a otra aplicación como gestionarlo. ¿Alguna vez has querido compartir esa foto graciosa que encontraste en tu aplicación favorita y le das al famoso botón de share y luego te muestra un menú para seleccionar a través de que aplicación quieres compartirla?, Bueno eso es gracias a un Intent implícito.

Para crear un Intent implícito en tu aplicación puedes hacerlo de la siguiente manera:

También existen los Pending Intents los cuales son contenedores de Intents que se ejecutan luego de que el usuario interactúa con una notificación o con un widget.

ImageViews

Los ImageViews son widgets como los que hablamos en la versión anterior de esta serie de tutoriales solo que estos se encargan, como su nombre lo indica, de mostrar una imagen al usuario. Para mostrar una imagen solo hay que copiarla en el directorio Drawable o Mipmap y luego llamarla desde el XML de la siguiente forma:

En el cual podemos ver los siguientes atributos:

android:layout_width=«wrap_content»: Donde le indicamos que queremos que el ancho de la imagen se adapte al tamaño que tenemos.
android:layout_height=«wrap_content»: En este atributo le indicamos que se adapte al tamaño pero en este caso hablamos de la altura del widget.
android:src=«@mipmap/ic_launcher»: En este atributo indicamos en donde esta guardada la imagen y el nombre que esta tiene para asignarla

Aparte de estos atributos los ImageView tienen atributos muy importantes como son los siguientes:

android:tint : Con este atributo podemos cambiarle el color a drawable o un svg.
android:scaleType : Con este atributo podemos cambiar la forma en el que se ve una imagen al aplicarle una reducción.

Bundles

Los Bundles, objetos cuya misión es transportar tus objetos desde una Activity a otra. Para ello, el objeto que tengas que enviar debe implementar la interfaz Parcelable. O utilizar primitivos para enviar tus datos desde una Activity a otra, por ejemplo, si queremos enviar un dato desde una Activity a otra podemos agregarlo al Intent de la siguiente manera:

Luego en la mainActivity.java podemos obtenerlo desde un bundle de la siguiente forma:

Donde podemos observar que obtenemos el intent con el método getIntent(); y luego obtenemos los extra que habíamos colocado anteriormente con el método .getExtras(); y por último, verificamos si el bundle no es nulo y si contiene el string con la clave url de ser hacer mostramos un Toast.

Nuestros amigos los bundles, también sirve para guardar los datos de nuestra activity en un caso que se gire la pantalla y se tenga que reconstruir la actividad. Hablaremos de esto y acerca del ciclo de vida de las activities en un próximo post aquí, así que no olvides seguirnos en las redes sociales para estar al tanto de nuestros post.

Con esto terminamos otro capitulo mas acerca del camino del desarrollador Android y estamos más cerca de poder lograr nuestra propia aplicación así que comenta si te gusto el post, si no te ha gustado comenta que no te gusto y comparte este post por las redes sociales para todos aquellos que quieran empezar a desarrollar en Android, ¡Hasta luego!

Recuerda que si quieres adelantarte y seguir conociendo mas de Android puedes visitar la documentación oficial haciendo click aquí

CategoriasAndroidProgramaciónSin categoria

El camino del desarrollador Android #2 – Hola mundo, Activities y Widgets

Hola mundo, los primeros pasos para todo desarrollador que se encuentra aprendiendo un nuevo lenguaje, un nuevo framework y empezando una nueva aventura con algo nuevo. En este post te hablo de como vamos a crear nuestro primer proyecto de Android Studio y hablaremos de uno de los 4 principales componentes de Android.

Las famosas Activities y que sería de una Activity sin los widgets que la complementan, solo veríamos una pantalla la cual no podríamos hacer mas que cambiar de color.

Los activities son una clase del SDK de Android, como ya mencionaba pueden almacenar muchos widgets inclusive almacenar Fragments (Otro componente de Android, pero del cual hablaremos en otro momento).

¿Qué son los Widgets?

Para hablar de los Widgets necesitamos hablar primero de las View, que son una clase padre que existe en el SDK de android, las cuales tienen muchas clases hijas como lo son los Textview,EditText,ImageView,Button. Todos estos son hijos de la super clase llamada View, estos componentes que son llamados Widgets. Estos widgets pueden modificarse para mostrar el texto que deseamos o la imagen que deseamos mostrar al Usuario, así como cambiar el color del texto o del fondo o decidir si mostrarlos u ocultarlos. Para poder hacer esto, necesitamos asignarle un id para poder identificarlo de los demás.

¿Y dónde se utilizan estos widgets?

Los widgets pueden ser utilizados dentro de un layout. Un layout es un archivo .xml, el cual guarda toda la información de como se verá tu actividad. Toda Activity o Fragment tiene un layout, que es la parte de la Interfaz de Usuario que esta muestra y que además en este se declaran los Widgets. Usualmente, estos suelen tener una estructura jerárquica donde siempre hay un widget que es el Padre y pueden haber varios hermanos.

Ya va, ¿Qué?

Tranquilo, no es tan complicado como parece. Veámoslo en el siguiente código:

Este es un TextView, un widget que muestra el texto que deseamos y le hemos dado las siguientes propiedades:

android:layout_width : Esta propiedad establece la anchura del TextView.
android:layout_height : Esta propiedad esteblece la altura del TextView.
android:text : En esta propiedad establecemos el texto que queremos mostrar a través del TextView.
android:id : En esta propiedad se establece el id del widget para poder acceder a el.

¿No es tan difícil, cierto?, ok ahora vamos a crear un EditText el cual es un campo de texto donde puedes ingresar texto y ademas crearemos un botón para enviar el texto que hemos escrito.

Aparte de estos dos widgets vamos a utilizar un LinearLayout, el cual es un widget que a diferencia de los elementos que mencionamos anteriormente, es hijo de la clase ViewGroup del Android SDK, el cual se utiliza para organizar otras vistas, sea Horizontal o verticalmente. Dentro de este LinearLayout vamos a almacenar nuestro EditText y nuestro Button, quedando de esta manera:

Ok, como te comentaba anteriormente, estos layout XML son utilizados por las clases de android para mostrar la interfaz, así que nos encargamos de declarar nuestro layout en nuestra activity. Cada vez que creas un Activity, el android studio genera por defecto un archivo .xml, en nuestro caso se llama activity_main.xml que es en el cual agregamos los widgets.

El código de tu activity debería verse así:

¡Muéstrame el mensaje!

Ya tenemos definido nuestros Widgets, ahora solo debemos agregar un listener a nuestro botón para que reaccione al tocarlo. De los listener hablaremos en otro tutorial, mientras tanto solo puedo decir que son líneas de código que se ejecutan cuando un evento ocurre.

Para empezar utilizamos el método setOnClickListener del objeto button, luego como parámetro creamos un nuevo onClickListener, el autocompletado del android studio debería ayudarte y este sería el resultado:

Entendido y anotado capitán, pero ahora ¿como hacemos para mostrar un mensaje que diga el nombre?, pues es muy sencillo, te presento a nuestro amigo el Toast, quías si tienes un dispositivo android lo hayas visto antes pues es muy sencillo de utilizar.

Para mostrar un Toast solo debes crearlo de la siguiente forma:

Donde el primer parámetro le puedes pasar un contexto (Esto es un tema que está fuera del alcance de este post, pero del cual hablaremos próximamente).
El segundo parámetro es el mensaje que quieres mostrar al usuario, es decir un String. Y el tercero, es una constante el cual es el tiempo de duración que quieres que dure el toast.
Por último, pero para nada menos importante tenemos el método .show() que es el encargado de mostrar nuestro Toast, sin el no podríamos observar su belleza.

Pero nosotros no queremos mostrar un texto cualquiera, nosotros queremos mostrar el texto que hemos escrito en nuestro EditText, ¿cómo lo obtenemos?. Pues de una manera muy sencilla, utilizando el método .getText de nuestro EditText, quedando así de la siguiente manera:

Que no te asuste el String.valueOf(); el método getText devuelve un objeto del tipo Editable, así que lo que hace este método es transformarlo a un String para que el Toast lo pueda mostrar.

Y con eso tendríamos nuestro resultado:

imagen_final

Puedes saber mas acerca de los Widgets,Activities y Toast en los links que te dejo aquí abajo:

https://developer.android.com/guide/components/activities/index.html

https://developer.android.com/reference/android/widget/Toast.html

https://developer.android.com/reference/android/view/View.html

Y con esto terminamos nuestro Post #2 del Camino del desarrollador Android, comenta debajo sobre que widget quisieras conocer mas y que te interesaría realizar :).

Si te gustó el post no olvides compartirlo en tus redes sociales y ayudar a propagar esta información a personas que quisieran comenzar en el mundo del desarrollo Android.

CategoriasProgramación

¡Algoritmos!, ¿Que son?

¡Hola! Soy Giuseppe Vetri un fanático de la computación, ingeniero en computación y apasionado por el desarrollo. Este es mi primer post en este blog llamado CodingPizza y mi primer post en general quise abrir este blog para contar un poco acerca de mis experiencias con el desarrollo y poder colaborar con otros desarrolladores que estén aprendiendo o se encuentren en un nivel mas avanzado acerca de software hablar sobre las buenas practicas y entender juntos algunas documentaciones que no son del todo amigables.Bueno, Basta de hablar de mi. Hablemos del tema de hoy el cual es ¡Algoritmos!, ¿Que son?  ¿Para que se usan? si has llegado hasta aquí a este blog seguramente tienes alguna noción de programación. De no ser así no te preocupes que aquí lo hablaremos desde el principio.

La palabra algoritmo te puede sonar a computación, a código, a programación. Pero ¿sabias que usamos algoritmos todos los días?, Pues si.

Los algoritmos son una serie ordenada de instrucciones o procesos que se realizan para solucionar un problema, pueden ser algo sencillo como tus rutinas matutinas por ejemplo:

  1. Levantarte de la cama
  2. Cepillarte
  3. Bañarte
  4. Vestirte
  5. Desayunar
  6. Salir a trabajar

Vemos y realizamos algoritmos todos los días, ahora si lo llevamos a ciencias de la computación podemos decir que los algoritmos son una serie de instrucciones con ordenes muy precisas y escritas en un lenguaje de programación que el computador entienda y pueda realizar las ordenes que le estamos indicando.

Existen algoritmos que son muy importante en el campo de la programación los cuales son:

Algoritmos de Ordenamiento

Son algoritmos que se basan en darle una secuencia a ciertos elementos determinados los cuales podrían por ejemplo ser ordenados numéricamente. Por nombre a un par de ellos podemos mencionar al Quick Sort el cual se basa en comparar elementos para determinar su orden y el Radix Sort o ordenamiento de raíz, el cual toma el ultimo dígito significativo de cada elemento y los va agrupando consecutivamente.

Ejemplo del Quick Sort

Un Ejemplo del Radix Sort se puede encontrar en la pagina de la Universidad de San Francisco: Radix Sort Visualization
Arboles

En las ciencias de la computación un árbol es un tipo de dato abstracto o una estructura de datos que su función es simular la copa de los arboles empezando desde un padre hasta tener muchos nodos los cuales son los hijos y el nodo que no tenga hijo es llamado Hoja. Para que exista una estructura de árbol valido un nodo del árbol no puede tener mas de 1 padre ademas que no pueden haber nodos sin conectarse.

 

Arbol binario

Ejemplo de un árbol binario

Listas

Una lista es un tipo de dato abstracto como lo son los arboles, el cual contiene un numero de valores secuenciales donde los valores pueden repetirse a diferencia de las pilas o las colas los valores pueden ser removidos en cualquier posición de la lista. Existen varios tipos de listas como lo son las Listas Enlazadas(Linked List) las cuales son una secuencia de valores que tienen una referencia hacia el valor que le antecede y el valor que le procede.

Lista Enlazada

Ejemplo de Listas Enlazadas

Stacks

Los stacks o pilas, son estructuras de datos con las que se puede encontrar fácilmente una analogía en la vida real, por ejemplo podemos decir que tenemos una pila de libros de programación en el siguiente orden:

  • Introducción a Python
  • Como volverse un experto en Ruby
  • Aprendiendo Javascript
  • Libro de programación de Kotlin

Ahora queremos retirar el libro de programación de Kotlin a diferencia de las listas en las que se puede retirar un elemento de cualquier posición de esta con las pilas no ocurre lo mismo. En este caso solo podremos obtener el libro que se encuentra en la cima de la pila e ir retirando continuamente hasta poder alcanzar el libro que deseamos que en nuestro caso seria el de Kotlin (Para los que aun no conocen este lenguaje pronto aquí en CodingPizza tendremos un tutorial sobre este lenguaje de programación).

En las pilas solo podemos retirar elementos que están en la cima de esta debido a que tienen una estructura del tipo LIFO (Last In First Out) esto significa que el ultimo elemento en entrar a la pila es el primero en salir a diferencia de las listas las cuales son del tipo FIFO ( First In First Out) como ocurre en las filas de los supermercados el primero en llegar es el primero en salir.

 

Pila

Representación grafica de un Stack o Pila

Algoritmos de Grafos

Los algoritmos de grafos son muchos, uno de los mas famosos es el algoritmo de Dijkstra el cual tiene como función encontrar el camino mas corto dado un vértice de inicio. Este algoritmo funciona de la siguiente manera selecciona la arista con peso menor que contenga el vértice y lo repetirá cuantas veces sea necesario para llegar a su destino.

Ejemplo de como funciona un algoritmo de grafo

Conclusión
Existen muchas variaciones de estos algoritmos de los cuales hemos hablado, algunos son mejores que otros dependiendo del contexto en el cual se este usando. En la programación siempre habrá una herramienta que funcionara bien para cierto tipos de problemas y otra que funcionaria mejor para otros.

¿Que algoritmo te ha gustado mas? ¿Has tenido que implementar uno para una prueba practica para un trabajo o la universidad? Nos encantaría saber acerca de tu experiencia 🙂

¡Comenta y si te ha gustado el post compártelo en las redes sociales!

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies