android Entradas de

RoboRouter, mi primera librería OpenSource

RoboRouter, mi primera librería OpenSource

Hace tiempo que no escribo nada en el Blog, pero hoy tengo el orgullo de presentar mi primera librería OpenSource, para Android, disponible a través de Maven/Gradle.

¿Qué es RoboRouter?

RoboRouter es un pequeña librería -de apenas dos clases- que permite mediante la activación/desactivación de componentes manejar el punto de arranque de nuestra aplicación cuando esta tiene una pantalla de inicio de sesión y/o un asistente de bienvenida o tutorial inicial. Cosas que es muestran escasamente una vez en la vida de la aplicación en el móvil de un usuario y que no debería ensuciar el código de la actividad principal con la que arrancamos la aplicación normalmente. RoboRouter permite gestionar este tipo de escenarios de una forma muy fácil y sin apenas escribir código.

Pasaos por GitHub y mirad como funciona, descargad el proyecto de ejemplo y jugad con él. Cualquier sugerencia será bienvenida.

Latest commit to the master branch on

Download as zip

Full text search contra otras formas de búsqueda

Algo muy común en cualquier aplicación Android es el añadir la posibilidad de realizar búsquedas sobre un ListView. Dado que para mostrar los datos sobre un ListView probablemente ya hemos realizado una consulta a la base de datos SQLite donde estos residen, podemos creer que lo mejor es filtrar los datos que ya tenemos cargados en memoria. De esta forma no pagamos de nuevo el precio del acceso a la base de datos que está en disco y es lenta; ni tampoco tenemos que volver a crear los objetos a partir del Cursor que esta nos devuelve. Pero, ¿hemos pensado bien el coste de buscar texto sobre los datos cargados en memoria? ¿Es esto mejor que un acceso a disco? ¿Escala?

Patrón Promise con jdeferred

El patrón Promise es un patrón que trata de simplificar la estructura de nuestro código cuando trabajamos con operaciones asíncronas, algo que está a la orden del día en cualquier aplicación con interfaz gráfica, pero también importante en servicios que tienen distintas dependencias para realizar su trabajo y este puede realizarse en paralelo.
En primer lugar vamos a plantear el problema que trata de resolverse y cómo lo simplificamos con este patrón y en concreto con la librería jdeferred. Luego veremos el caso de particular de Android y el soporte específico que nos ofrece jdeferred que nos simplifican aún más el trabajo.

Prototipado de apps con WireframeSketcher

Prototipado de apps con WireframeSketcher

Aunque este es un blog fundamentalmente de desarrollo, hoy quería comentar un poco algo que nos toca siempre al comenzar una aplicación: la conceptualización. En el desarrollo móvil no es ningún secreto que tenemos el problema del tamaño de la pantalla -a pesar de los pseudo tablets que tenemos ahora por teléfonos-. A la hora de conceptualizar la aplicación, es fundamental utilizar una herramienta que nos permita de forma rápida poder organizar la información y cómo se comportará nuestra app.

Desde hace un tiempo he estado buscando la mejor herramienta para esta labor. Algo fundamental que debe tener una herramienta de este tipo es que respete las proporciones de los componentes nativos de la plataforma. Sin esto, conceptualizar una pantalla es un disparate, ya que estamos organizando la información en base a una premisa que puede ser falsa y a la hora de llevarla a la práctica, podemos ver que las cosas no nos caben -o nos sobra espacio-. En esta búsqueda me he topado con WireframeSketcher, una herramienta la mar de interesante, basada en Eclipse y con todos los elementos nativos de Android 4.X -también tiene los de iOS y Windows Phone entre otros-. Vamos a ver las principales características de esta herramienta.

Calligraphy, fuentes personalizadas en Android

Calligraphy, fuentes personalizadas en Android

Si hay una cosa que es un dolor de muelas en Android es cuando tienes que hacer una app que usa fuentes personalizadas. Aunque es incluso peor, si queremos usar la moderna Roboto, ya tenemos el lío formado, ya que en Android 2.3 no la tendremos tampoco. Y es que utilizar fuentes personalizadas es algo que está muy mal resuelto incluso aún hoy en la última versión del sistema (4.4.3 a día de hoy).

Básicamente para establecer una fuente distinta a las que trae el sistema por defecto, debemos instanciar la fuente (que normalmente tendremos en la carpeta assets) y asignarla a la vista de turno. El código sería algo así de horrible (horrible porque hacer esto por cada vista es una locura desde el punto de vista de mantenimiento de este tipo de código).

Typeface tf = Typeface.createFromAsset(getAssets(), 
                                       "fonts/mycustomfont.ttf");
        
TextView myView = (TextView) findViewById(android.R.id.text1);
myView.setTypeface(tf);

Vamos a ver algunas formas para mejorar lo anterior y dejar que nuestras vistas se definan de forma declarativa por completo en el XML del layout.