El pasado jueves 7 de abril, la troupe de Frogtek acudimos en comandita al taller organizado por el GTUG Zaragoza e impartido por Francho Joven. La convocatoria fue un éxito y salimos todos muy contentos con lo aprendido y orgullosos de la aplicación que desarrollamos y subimos al market de Android.

Una de las lecciones que vimos fue la de asignar formas (o shapes) creadas mediante programación a elementos como botones. Y yo pensé: ¿por qué no podemos hacer eso mismo con los botones de nuestra aplicación?

Como ejemplo, pongamos que tenemos que añadir un botón de "regresar" típico, que al ser pulsado, vuelva a la pantalla anterior.

button_back

Lo primero es conseguir un Button con fondo rojo. Para ello, creamos un layout con un shape (en un fichero shape_red_background.xml) dentro de la carpeta layouts, que nos definirá un tipo de fondo que podremos aplicar a elementos rojos de nuestra aplicación. Le incluiremos un degradado para que quede más molón.



	
	
	
	

Después, queremos asignarle este fondo a nuestro botón, pero como queremos hacerlo reutilizable, vamos a definirlo en un estilo. Para ello, nos creamos un archivo style.xml dentro de nuestra carpeta values (el nombre es lo de menos, lo importante es que esté en values) y añadimos lo siguiente:




Notad que el parámetro android:drawableLeft es para que aparezca una flechica a la izquierda de este botón. Y ahora solo queda añadir este botón a nuestro layout. Para ello basta con:

Bastante limpio, ¿no? Y lo mejor de todo es que si mañana nos piden el mismo botón, pero en color verde, como hemos utilizado herencia de estilos, con hacer un nuevo shape de color verde y crear su style es suficiente:


Pensad ahora la cantidad de espacio que podemos ahorrarnos en nuestras aplicaciones si sustituimos los archivos de imagen por formas creadas mediante programación...

EDIT: de momento, lo único que no he conseguido es darle sombra mediante programación. Existen parámetros shadow_color en Android, pero solo funcionan para elementos de tipo texto.