Developing Frogtek

El blog del Departamento de Tecnología

Botones en Android mediante programación

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.

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.

3 Comentarios

  1. Oh! Los míticos shapes! Recuerdo cuando con Android 1.5 no estaban documentados en la documentación oficial y tenías que adivinar que atributos valían para cada shape. Luego ya salío el “missing manual” (http://idunnolol.com/android/drawables.html). Ahora mismo ya está documentado oficialmente al completo (http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape).

    Lo bueno de aplicarlos como backgrounds es que obviamente aplica a cualquier View, no sólo Buttons, es bastante potente y limpio… aunque con los shapes siempre me quedó la sensación, no sé si por la falta de doc. o por cómo están montadas, de que eran un poco “ingobernables” 🙂

    Yo tampoco recuerdo haber aplicado sombras, y según la doc. no serían atributos soportados por estos Drawables.

  2. Hola,
    He leido tu artículo y me parece muy interesante e incluso lo he probado, pero no consigo que el botón de la sensación de botón, es decir, no se hunde al hacer click sobre el. ¿Tiene que ser así?

    Gracias,…

  3. Javier Martínez

    21 noviembre, 2011 at 15:39

    Para conseguir la animación, nosotros nos hemos creado un xml en la carpeta anim(animaciones) de este tipo:

    < ?xml version="1.0" encoding="utf-8"?>

    Después hacemos un AnimationUtils.loadAnimation en el Button

Deja un comentario

Tu dirección de correo electrónico no será publicada.

*