Rounded avatars in Android

Telly Popular

During the development of Telly we tried different ways to achieve those rounded avatars that for some reason had become the standard way of display an user’s avatar, I think there was a meeting last year and all the designers agreed that avatars had to be rounded :)

I tried three different approaches listed below, ranked in my opinion which is worst to better, having the best at the end:

The bad

This is an old one from the ages where you didn’t have border-radius in CSS, you simply can overlap an image with alpha in the region you want to display, and match the background color in the regions you want to hide, causing the illusion of cropping like this (warning: uglified on purpose):

device-2013-07-21-192209

Without using custom views your layout would look more or less like this:

Why is it the bad?

  • First if you look closely you could notice if you do a poor job with your resources you will get a pixelated border plus your solid colors won’t even match depending on Bitmap configuration

    bad_zoomed

  • Second obvious overdraw is obvious, you get it even without adding states just yet

    bad_overdraw

  • Again, this is resource error prone, if you are not careful enough you could get broken resources in different densities

    bad_density

  • Finally, by just changing your background you will have to update your overlays to match that color and forget about gradients, and remember you are not supporting states just yet.

    bad_bg_change

The ugly

So next we have a familiar one, it is widely used by several apps right now, this technique consist of using a second Bitmap for masking, whether is one obtained from resources or drawn at runtime, this technique provides much better results and you don’t have to deal with resources:

It produces a beautiful circle!

device-2013-07-21-202754

without overdraw or pixelation, yet keep reading…

cute
regular_overdraw

Why is it the ugly?

To be fair it is not ugly, it is quite the opposite, isn’t it?, we should call it “the dirty” instead, you probably noticed we recycle the original Bitmap right away, the problem is also a well known, if we are using a lot of them we get good chances eventually we could run out of memory soon and get an OutOfMemoryException, it gets worst if we don’t properly cache those computed Bitmaps and our animations and scrolling could get janky due garbage collector claiming memory while we continue allocating for each avatar.

The good

Finally visually we can’t get any better than the one above, but regarding performance sure we can, do you remember this Android Recipe from Romain Guy?, well you bet it is about doing the same, after that we can get a nice drawable or view, that we can desaturate or apply some color filters and of course we can reuse like this one:

Note that both Views share the same Bitmap

device-2013-07-21-220144

So there you have it, the rule of thumb when using Bitmaps (and actually any other Object) is to use them as few as possible but use them to delight and enchant your users, if you didn’t get tired of seen my face so many times hopefully I will be publishing more recipes/tips like this if you like to subscribe to this blog, or add me on Google+, follow me on Twitter or GitHub! where I often post #androiddev fun :)

JULY 21 2013

[Solución] En KDE al hacer click en ciertos botones de Eclipse no pasa nada

(c) Eclipse Foundation

(c) Eclipse Foundation

Hace mucho quería hacer una entrada al estilo @pacopistolas ¡Así que ahora se aguantan!:

El problema

Al usar ciertos diálogos como los wizards o asistentes en Eclipse sobre KDE (¡como mola!) no funcionan los botones es decir al hacer click no pasa nada de nada.

Ejemplo del problema

Al crear un nuevo proyecto Java en File > New > Java Project y darle un nombre damos click en Next y no pasa nada.

Diagnostico

Parece ser uno de los ya comunes problemas de integración entre GTK+ (SWT esta basado en este) y Qt, pese a que los desarrolladores de KDE y GNOME trabajan fuertemente en una buena integración entre escritorios, fallas como estas aparecen.

Soluciones

Actualizar Eclipse

Tan sólo con ir a Help > Check for Updates, actualizar y reiniciar se ha resuelto el problema para mi si esto no te ha funcionado sigue leyendo.

Variable de entorno GDK_NATIVE_WINDOWS

Puedes ejecutar Eclipse con:

GDK_NATIVE_WINDOWS=true eclipse


o

GDK_NATIVE_WINDOWS=1 eclipse


Con ello permites a la aplicación hacer llamadas al servidor X directamente y no a través de GDK.

Solución a lo Chuck Norris

Si nada de lo anterior funciono o si simplemente te dio pereza hacerlo puedes hacerlo al estilo Chuck Norris:

  1. Da click en el botón que quieres presionar y mira que gane el foco (es decir que se resalte).
  2. Presiona la tecla Enter.
  3. Listo.

Eso es todo mediante alguna de esas 3 soluciones puedes terminar con ese pequeño pero molesto problema de Eclipse al usarlo con KDE ;)

MARCH 03 2010

Descarga Ubuntu 9.10 Kamic Koala de la forma más rápida

Ubuntu 9.10 Karmic Koala Splash Screen

Bien, de mi distribución favorita sabemos:

  1. Que cumplió 5 buenos años hace poco.
  2. Las novedades y mejoras que trae esta nueva versión.
  3. Que quienes sufrimos de versionitis hemos esperado impacientemente cerca de 6 meses.
  4. Que por reducir gastos a algunos no nos regalaron CDs esta vez.
  5. ¡Que esta del putas!.
  6. y finalmente ¡Hoy es el Lanzamiento!.

Lo que tal vez no sabemos es:

¿Cual es la forma más rápida de descargar?

Tenemos diferentes formas de descargarla por torrent, descarga directa (FTP, HTTP), Jidgo, Zsync y Metalink.

¡Entre gustos si que hay disgustos! en experiencia personal me quedo con Metalink.

¿Por qué Metalink?

Eso lo puedes leer por acá.

Pero… ¿Por qué Metalink?

Si te dio pereza leer lo anterior, te doy 4 ( ¡Sí! ¡4! ) razones con las cuales yo solito me convencí:

  1. Para descargar combina Descarga directa y Torrent.
  2. No tienes que lidiar con mirrors este formato se encarga de ellos.
  3. Tiene verificación de los datos descargados.
  4. ¡Es realmente rápido!.

Ok, ok… ¿Cómo descargo con Metalink?

Fácilmente con DownThemAll! o con Aria2… esta en los repositorios lo podemos instalar en la Terminal:

$ sudo aptitude install aria2

o con AptURL.

¿Esto es un comercial de Metalink? ó ¿Cómo descargo Ubuntu 9.10 Kamic Koala usando Metalink?

Si te fijas bien en la página de releases de Ubuntu 9.10 Kamic Koala están los archivos .metalink los puedes usar para descargar tu imagen de CD.

Ejemplos con Aria2

Lo siguiente escrito en una Terminal descargará la imagen de CD de Ubuntu 9.10 Kamic Koala para PC (x86 a.k.a. queridos procesadores de 32 bits)

$ aria2c http://releases.ubuntu.com/releases/9.10/ubuntu-9.10-desktop-i386.metalink

Sorpresa: Puedes reemplazar la URL por la de otro archivo .metalink, otro ejemplo, para la versión de PC de 64 bits esta vez:

$ aria2c http://releases.ubuntu.com/releases/9.10/ubuntu-9.10-desktop-amd64.metalink

Bonus: doble jamón y queso con Aria2

Dentro del archivo .metalink verás que hay un atributo maxconnections para el tag resources pues este -como su nombre puede sugerir- limita las conexiones a los diferentes servidores de acuerdo a su valor (por ejemplo en cualquier .metalink de una imagen de Karmic veras un lindo 1), el cual Aria2 obedece ciegamente, si este no existe Aria2 por defecto usa 5, pero también existe un parámetro que altera este valor:

$ aria2c -C NUMERO_SERVIDORES URL_METALINK

o

$ aria2c --metalink-servers=NUMERO_SERVIDORES URL_METALINK

Donde NUMERO_SERVIDORES es el número mágico y URL_METALINK es ¡por favor!.

Para mayor información consulta en tu biblioteca local:

$ man aria2c

Quedando para nuestro ejemplo anterior (el de 32) usaremos 20 conexiones:

$ aria2c -C 20 http://releases.ubuntu.com/releases/9.10/ubuntu-9.10-desktop-i386.metalink

Eso es todo a disfrutar de fast & free pr0n FTW! Ubuntu 9.10 Kamic Koala y agradecer los esfuerzos de la gente de Canonical, GNU, Linux y los demás por hacer de Ubuntu lo mejor.

Actualización: Zsync

Zsync bate a Metalink en caso que hallas descargado una imagen de Karmic previamente (como la RC) puesto que sólo descarga los bloques cambiados del archivo… instrucciones en OMG! Ubuntu!.

OCTOBER 29 2009

La evolución multimedial a través de la historia de la telefonía móvil

Resumen.

Este artículo pretende informar al lector de la diversidad de contenido que se transmite a través de las redes de telefonía móvil mediante un enfoque espacio-temporal, recorriendo la evolución, la finalidad de uso, las entidades, las personas y las tecnologías desarrolladas para concretar lo que hoy en día usamos, conocemos y denominamos telefonía móvil, para luego proyectar a mediano plazo lo que será de el contenido y el medio.

Palabras clave. Telefonía móvil, Multimedia, Internet móvil.

OCTOBER 12 2009

Google Wave

No tan bueno como creíamos

No tan bueno como creíamos

OCTOBER 01 2009

Solución: “E: No se pudo bloquear /var/lib/apt/lists/lock – open (11 Recurso temporalmente no disponible)”

Curioso error:

$ sudo aptitude update
E: No se pudo bloquear /var/lib/apt/lists/lock - open (11 Recurso temporalmente no disponible)
E: No se pudo bloquear el directorio de listas...¿es el administrador?

Me sucedió al intentar actualizar los paquetes disponibles desde el Gestor de Actualizaciones y forzar su salida -bruto de mí- en fin… no fue sino buscar un poco y aquí está la solución:

Eliminar el archivo lock

Cándidamente eliminamos el archivo /var/lib/apt/lists/lock como super usuario con el comando rm y opcionalmente actualizamos:

$ sudo rm /var/lib/apt/lists/lock 
$ sudo aptitude update

We are done

Fuente: El otro lado

AUGUST 06 2009

QuickG: Widget para búsquedas en Google para Symbian

QuickGUn widget muy simple pero necesario…

¿Extrañas el comportamiento de la barra de URL de Firefox (a.k.a Location bar) en tu smartphone con Symbian?

Pues si tu cacharro soporta Web Runtime (WRT para los amigos) estas de suerte querido padawan pues QuickG lo hace, te permite buscar rápidamente en Google y en caso de que la gran G decida que existe un sitio fuertemente asociado le cargará (por ej. escribes gmail y te carga GMail.com, escribes twitter, te cargará Twitter.com, escribes jesus te cargará la Wikipedia, etc).

QuickG no es más que las siguientes lineas chungas de código JavaScript:

window.onload = function()
 
{
 
	var s = prompt('Google Search','');
 
	if(s!=null)
 
		window.widget.openURL('http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q='+escape(s));
 
	window.close();
 
}

Eso sí aderezadas con un icono feísimo y empaquetado en un Zip (.wgz) como cada buen Widget debe serlo.

Lo implementé cansado de (además que como soy un flojo de tiempo completo):

  1. tener que abrir el navegador de mi odiado Nokia 5800
  2. esperar que cargará Google
  3. y al fin poder buscar por las Interwebs

…también le agregué esa hermosa funcionalidad que proveé el http:// y el .tld (como el .com) que logra Firefox con los parámetros sourceid=navclient&gfns=1 sí existe una URL relevante al keyword (bah ya lo expliqué previamente con lo de jesus).

Agregalo a tu home screen y tendrás una acceso a las webas mucho más rápido a solo unos tabs de distancia ¿?¡!:

Home Screen

Eso es todo, ¿quieres más?… pues usa (me acabo de enterar de su existencia) Q Search o iSearch… eso sí no vengas por acá cuando implemente mejoras (just kidding).

Descargar QuickG

Pssst la licencia es la misma del bló (CC by-nc-sa) Shake Share alike

JULY 29 2009

Nokia 5800 firmware 30.2.011

¡¡Si señores!! habemus la deseada actualización de firmware para el querido y odiado Nokia 5800 pero no es la 31.0.0.15 como se preveía es la 30.2.011:

Nokia 5800 firmware 30.2.011

Nokia 5800 firmware 30.2.011

Curiosamente se me dio por iniciar el asqueroso y puto (putísimo) Windows 7 que instalé en el Campus Party que justamente conserve por el Ovi Suite… ¡gracias Nokia! ¬¬

Ejecuté Ovi Suite y vi en la parte inferior derecha la ansiada notificación (valió la pena cruzar hasta las piernas)…

Primero el backup que se demoró una eternidad

Nokia 5800 firmware 30.2.011 backup

Nokia 5800 firmware 30.2.011 backup

Así que lo cancelé (no recomendado):

Nokia 5800 firmware 30.2.011 backup canceled

Nokia 5800 firmware 30.2.011 backup canceled

y se demoró mucho en cancelar así que lo maté (no no no recomendado), volví a comenzar y me salteé el backup:

Nokia 5800 firmware 30.2.011 backup exit

Nokia 5800 firmware 30.2.011 backup exit

El primer paso es informativo:

Nokia 5800 firmware 30.2.011 firmware update step 1

Nokia 5800 firmware 30.2.011 firmware update step 1

En el segundo me salteé el backup (no recomendado):

Nokia 5800 firmware 30.2.011 firmware update step 2

Nokia 5800 firmware 30.2.011 firmware update step 2

Estoy esperando que descargue los 120 MB:

Nokia 5800 firmware 30.2.011 firmware update step 3

Nokia 5800 firmware 30.2.011 firmware update step 3

Argghhh ya van dos veces que recibo este error:

Nokia 5800 firmware 30.2.011 update fail

Nokia 5800 firmware 30.2.011 update fail

la tercera será la vencida, intentaré con el Nokia Software Updater:

Nokia 5800 firmware 30.2.011 Nokia Software Updater

Nokia 5800 firmware 30.2.011 Nokia Software Updater

En el NSU son 6.1 MB más :S

Nokia 5800 firmware 30.2.011 Nokia Software Updater step 2

Nokia 5800 firmware 30.2.011 Nokia Software Updater step 2

¡¡Descargado e Instalando!!, y sip se puso blanca la pantalla :) mostrando “Local Mode 30.2.011″ y el logo de Nokia no alcancé a tomar foto:

Nokia 5800 firmware 30.2.011 Nokia Software Updater step 3

Nokia 5800 firmware 30.2.011 Nokia Software Updater step 3

Según NSU todo esta listo:

Nokia 5800 firmware 30.2.011 Nokia Software Updater step 4

Nokia 5800 firmware 30.2.011 Nokia Software Updater step 4

El smartphone se reinicio y listo… Me pondré a probarlo a ver las novedades :D

A primera vista

Nada nuevo :S o ¿será mi cacharro?… lo que noté fue un aumento en la velocidad de respuesta del smartphone, se siente mucho más sólido, cambio en el color de ciertos botones del tema… nada más…

Home Screen

Home Screen

Esto es lo que muestra la aplicación de actualización que se ejecuta con *#0000#:

*#0000# info

*#0000# info

No muestra ningún tema nuevo para la Home Screen:

No new home screen

No new home screen

esto muestra DeviceInfo:

DeviceInfo 1

DeviceInfo 1

DeviceInfo 1

DeviceInfo 2

Realizaré otras pruebas… :(

Nota: Entrada en actualización e iré publicando las novedades, no, aún no sé que trae este nuevo firmware pues busque y no encontré resultados, mantente sintonizado.

Decepcionante esta nueva versión los cambios:

  • Email plugin for homescreen email notification (set homescreen mode to shortcuts). You may need to hard reset the phone to make it work.
  • Noticeable speed and response improvements
  • Better music quality, onscreen touch volume control
  • Improved browser, faster surfing, fullscreen web has now transparent arrow
  • Correct icons for the call lists (mobile, fixed, etc.)
  • The portrait/landscape switch is pretty fast now
  • More free RAM available now

Lo dicho, decepcionante.

JULY 27 2009

ppakeysupdate: .deb para agregar / actualizar GPG Keys para PPAs de forma automática

Logo de Launchpad

Leyendo Ubuntips me entero de una forma automática de incluir las GPG Keys (Llaves GNU Privacy Guard) para los PPAs (Personal Package Archives). Agregar las GPG Keys es la parte más engorrosa al agregar estos mini-repositorios con paquetes actualizados y de gran utilidad. Consiste en dos scripts: Launchpad Update por parte de Dominic Evans y otro más pequeño pero que le da la automatización a la cosa, por parte de Martin Meredith… esto ya no será problema para Ubuntu 9.10 Karmic Koala pero es muy útil para las versiones anteriores para quienes usamos los PPAs.

Debido a que es una cuestión común decidí empaquetar los dos scripts en un paquete Debian que pueden descargar del siguiente en enlace:

Descarga el paquete ppakeysupdate

Eso es todo deja un comentario y que disfrutes la automatización… olvidate de las engorrosas pero importantes GPG Keys.

JUNE 07 2009

gnome-open: abre lo que quieras, como se debe

Recién instale la Release Candidate de Ubuntu Netbook Remix 9.04 Jaunty Jackalope, reemplazando al Linux4One (Conejo con cachos mata Garza)… pese a mis pronósticos funciono bien… luego de instalarla 2 veces… en fin la cuestión fue que Firefox no me detectaba con que abrir o hacer con los archivos (a.k.a. enlaces file://) y aparecía el dialogo “Abrir con”, sí le asignaba nautilus, abría todo con nautilus y así con los demás sosguares… y me daba mamera asociar en Firefox cada aplicación por mime-type… la solución fue… fam fam fam… bueno ustedes ya saben… ¿no leyeron el título?… perezosos ¬¬… bueno:

gnome-open

El diccionario lo define como una criatura de leyenda parecido a un hombre viejo y pequeño que vive en las profundidades de la tierra y guarda un tesoro… además de ser de ideologías liberales y pastafarrista…

En fin este pedazo de aplicación es el gateway para abrir archivos con su aplicación designada, solo debemos seleccionar o encontrar:

/usr/bin/gnome-open y elegir abrir siempre con esta aplicación o somtin laik tad…

Bonus: Abrir archivos desde la terminal con su respectiva aplicación

Sip, podemos usar:

$ gnome-open archivo.ext

para abrir el archivo con su aplicación asociada… ¿sorprendente no?… nah!

Blog Disclaimer: si estaba muerto y no de parranda… la verdá es que este semestre esta pésimo y demanda mucho tiempo… agregado a varias decepciones… además de un corte inspiracional de escritura (osea que no me daban ganas de hacer ná)… mataron este bló agradezco a mis dos lectores fieles y tercos :D

APRIL 20 2009