Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ingredientes para hacer una app rebelde

Ingredientes para hacer una app rebelde

Introducción al stack Rebelde para Android.
Se explican conceptos de la arquitectura Flux, el VirtualDOM y las librerías Anvil y Magellan.
La presentación fue acompañada por una app de ejemplo que se realizó durante la presentación. La misma esta disonible en https://github.com/juanignaciomolina/rebelde-demo

Avatar for Juan Ignacio Molina

Juan Ignacio Molina

August 03, 2017

Other Decks in Programming

Transcript

  1. Contenidos 1. Intro 2. El stack rebelde 3. La app

    demo 4. Haciendo una app rebelde 5. Ejemplos concretos del stack 6. Preguntas
  2. • Redux es un framework que implementa la arquitectura Flux,

    principalmente utilizado en React. • Redux agrega un 5to componente, los reducers que especifican la forma en la que una action modifica un store. Arquitectura Flux y Redux
  3. 1. View es el componente de UI, puede emitir actions

    2. Las actions le solicitan a un reducer que modifique un store 3. Una vez modificado el store, se notifica a la view 4. Una vez notificada la view, se actualizan los componentes de UI Arquitectura Flux y Bansa Resumiendo Bansa...
  4. Dibujando vistas con Anvil override fun view() { frameLayout {

    backgroundColor(Color.BLACK) size(MATCH, MATCH) v(FloatingActionButton::class.java) { size(WRAP, WRAP) margin(0, 0, dip(16), dip(64)) layoutGravity(BOTTOM or END) imageResource(R.drawable.ic_search) } } }
  5. Dibujando vistas con Anvil override fun view() { frameLayout {

    backgroundColor(Color.BLACK) size(MATCH, MATCH) v(FloatingActionButton::class.java) { size(WRAP, WRAP) margin(0, 0, dip(16), dip(64)) layoutGravity(BOTTOM or END) imageResource(R.drawable.ic_search) } } } Component A Component B
  6. Virtual DOM Conformado por los objetos que se ven en

    “pantalla”. Hacer cambios es un proceso costoso. Necesario para la interacción con el usuario. DOM Descripción de los elementos de la UI. En memoria únicamente, no en la “pantalla”. Permite comparaciones y cambios rápidos Concepto utilizado por React en Web.
  7. Dibujando vistas con Anvil ➔ Reemplaza las vistas en XML

    por clases directamente en el lenguaje del resto de la app (DSL) ➔ Simplifica el desarrollo, no es necesario obtener referencias forzadas e inseguras a las vistas (es decir, no hacen falta los findViewById(..) ) ➔ El código del comportamiento de la vista puede convivir con el modelado de la misma. ➔ Utiliza el concepto de Virtual DOM para realizar cambios en las vistas con una destacada performance. Resumiendo Anvil...
  8. La forma más sencilla de actualizar la UI cada vez

    que se produce un cambio es volver a leer el Store y renderizar la vista entera nuevamente
  9. • Utiliza una sola Activity. • Utiliza la clase ScreenContainer,

    en donde se cargan Screens que contienen a la diferentes UIs, a la que al librería denomina Views. • Implementación muy sencilla, basta con llamar a Navigator#goTo() para navegar de una vista a la otra. Navegación con Magellan
  10. Empresas que usan un sistema de navegación alternativo Scoop Magellan

    FLOW github.com/square/flow github.com/lyft/scoop github.com/wealthfront/magellan
  11. • Utiliza todo el Stack Rebelde • App simple, solo

    una demo • Navegación del tipo Master/Detail • Desarrollo en Android Studio 3.0 La app Demo “El marketplace para el rebelde moderno”
  12. ListView val items = arrayListOf("Anvil","Magellan","Flux","Kotlin") val demoAdapter = RenderableAdapter.withItems(items, {

    pos, item -> textView { text(item) } }) override fun view() { listView { size(MATCH, MATCH) adapter(demoAdapter) onItemClick { av, v, pos, id -> toast("Clicked on item #" + pos) } } }
  13. Conclusiones - Código - Código - bugs + calidad -

    bugs + calidad + VELOCIDAD + VELOCIDAD
  14. Conclusiones - Código - Código - bugs + calidad -

    bugs + calidad + VELOCIDAD + VELOCIDAD + FELICIDAD! + FELICIDAD!