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

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.

»

Parcelables con Android AutoParcel

Cuando vamos a crear una app en Android y tenemos que pasar datos entre Activities y/o Fragments, el sistema operativo nos brinda la posibilidad de usar un Bundle, ya sea a través del Intent (y el Bundle de extras) o a través del método setArguments() de los Fragments. Esta es la manera idónea de pasar datos entre componentes, ya que no crea acoplamientos poco deseables, además estos se gestionan de manera automática por el sistema, por lo que no debemos preocuparnos de qué pasa con ellos si el sistema ha tenido que recrear el Activity o Fragment debido al ciclo de vida de la aplicación.

El problema viene con los tipos de datos que nos permite almacenar un Bundle, estos son tipos básicos u objetos que implementen la interfaz Serializable o Parcelable. A la hora de implementar una u otra interfaz, la primera es sencilla, con solo hacer que nuestra clase implemente la interfaz Serializable el sistema por medio de reflexión es capaz de serializar el objeto a una representación binaria que se puede persistir. En el caso de Parcelable, sin embargo, debemos implementar dos métodos para serializar -writeToParcel()- y deserializar -constructor- el objeto. Además debemos escribirlo con sumo cuidado y en perfecto orden inverso o no funcionará, algo muy tedioso y difícil de mantener.

»

Timeline y Live Cards. Primeros pasos con Google Glass (V)

Hace mucho que no escribía en el blog, entre otras cosas porque ando un poco liado con un proyecto personal. Además, como ya sabrás Google ha actualizado Google Glass a la versión de firmware XE16, subiendo la versión de Android a 4.4.2, actualizando también el GDK y por consiguiente, nos trae muchos cambios en la API. Esto ha implicado que parte de este artículo ya no tenga sentido, ya que Google ha eliminado la clase TimelineManager y por tanto, ya no es posible publicar en el Timeline tarjetas estáticas.

Cambios en el GDK

Antes de continuar con la última entrega en esta serie de artículos de introducción a Google Glass, toca actualizar los anteriores. En el repositorio Git donde está el código de todos los artículos anteriores, podrás encontrar los proyectos actualizados con estos cambios, no son muchos y la mayoría no son más que cambios de nombres.

»

Cards API. Primeros pasos con Google Glass (IV)

Hoy vamos a ver cómo crear interfaces gráficas para nuestro Glassware utilizando el concepto de tarjetas o Cards. Como sabéis, en Google Glass no hay botones, no hay forma de interactuar con elementos en la interfaz gráfica, sino que esta se compone de pantallas por las que podemos movernos, pantallas que se denominan tarjetas o Cards. El propio Timeline que se representa en la interfaz inicial de Google Glass es un conjunto de tarjetas por las que podemos movernos. ¿Cómo podemos crear una interfaz de este estilo? Pues de forma muy fácil utilizando las clases CardScrollView, CardScrollAdapter y Card. ¡Vamos a ello!

»