Programación Android, Recursos XML III (Shape)

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0

android_resources

Esta será la tercera y última entrada sobre la definición de recursos XML. Como dijimos en la segunda parte, en esta ocasión vamos a definir el shape para el botón, e indicaremos cómo acceder a los recursos desde el código Java.

En primer lugar, definamos un shape para el botón. Para eso lo primero es crear un nuevo archivo XML, que se llame buttonshape.xml. Al crearlo no vamos a utilizar el tipo de recurso “value”, sino que le indicaremos que es un “Drawable”, y en las opciones que nos aparecerán en la parte inferior, definiremos que es un Shape:

Crear shape en proyecto android
Crear shape en proyecto android

Etiquetas del Shape

 En él definiremos nuestro shape, pero antes de nada vamos a aclarar qué etiquetas podemos incluir en nuestro shape, y qué efecto hacen:

  • Corners: Nos sirve para dar una forma redondeada a las esquinas del objeto sobre el que se aplique el Shape. En el atributo android:radius, principal atributo de la etiqueta, definiremos el ángulo que queremos aplicar sobre el corner. También tiene otros atributos, como android:topLeftRadius, android:topRightRadius, android:bottomLeftRadius y android:bottomRightRadius.
  • Gradient: Con esta etiqueta podremos definir un efecto degradado, de un color a otro, sobre el objeto en el que apliquemos el shape. Este degradado puede ser lineal, pudiendo definir el punto inicial y el final, o circular. Para definir el tipo de Gradient que queremos utilizar lo haremos a través del atributo android:type
  • Padding: El padding es un margen que se aplica internamente al control, al establecerlo se crea una zona de relleno con el ancho indicado en esta propiedad.
  • Size: Aquí indicaremos las dimensiones que tendrá nuestro shape, en en los atributos android:width android:height.
  • Solid: Aquí indicaremos un color sólido para rellenar nuestro shape.
  • Stroke: En esta etiqueta definimos un borde para nuestro shape, que consiste en una línea, que también puede ser discontinua. En las etiquetas .

Para que queden más claros estos conceptos, vamos a crear nuestro shape. Cuando hemos creado nuestro buttonshape.xml se ha creado con el siguiente contenido:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

</shape>

Vamos a definir todas las etiquetas del shape, para que quede más claro el efecto que crea cada una en nuestro botón:

    <corners android:radius="80dp" />

    <gradient
        android:centerColor="#000000"
        android:endColor="#33B5E5"
        android:gradientRadius="150"
        android:startColor="#FFFFFF"
        android:type="radial" />

    <padding
        android:bottom="3dp"
        android:left="3dp"
        android:right="3dp"
        android:top="3dp" />

    <size
        android:height="100dp"
        android:width="250dp" />

    <stroke
        android:dashGap="7dp"
        android:dashWidth="15dp"
        android:width="5dp"
        android:color="#777777" />

Una vez definido nuestro shape, tenemos que aplicarlo sobre nuestro botón, para eso utilizaremos su propiedad android:background:

android:background="@drawable/buttonshape"

Y el resultado sería el siguiente:

Resultado final del Layout
Resultado final del Layout

Por último sólo nos falta ver cómo acceder a los diversos recursos que hemos definido en nuestro proyecto desde el código de nuestra aplicación. Esto puede ser útil, por ejemplo, si necesitamos cambiar el texto de uno de nuestros controles en función del estado de la aplicación o lanzar un cuadro de texto que hemos diseñado en nuestro código, manteniendo la localización, cambiar el background de un control en tiempo de ejecución, etc.

Para acceder a los recursos desde nuestro código se hace de una forma muy sencilla, basta con escribir el método getResources() en nuestra activity, lo que nos da todos los recursos que están definidos para nuestra aplicación. A partir de estos recursos, podremos obtener los distintos tipos de recursos que tenemos definidos, ya sea un Drawable, un String, un Color

Veamos algunos ejemplos, basándolos en recursos que ya tiene el proyecto que hemos creado:

// Obtenemos todos los recursos de nuestra aplicación.
Resources resources = getResources();

// Sacamos el string que da nombre a nuestra aplicación.
String texto = resources.getString(R.string.app_name);

// Obtenemos el shape definido en nuestra aplicación.
Drawable drawable = resources.getDrawable(R.drawable.buttonshape);

// Obtenemos la referencia al color definido en nuestra aplicación.
int color = resources.getColor(R.color.btnStyleColor);

// Obtenemos el margen que definimos en nuestra aplicación.
float dimension = resources.getDimension(R.dimen.btn_margin_top);

Descargas

Puedes ver el resultado del ejemplo en tu móvil descargando nuestra aplicación desde Google Play.

Puedes acceder a nuestro repositorio para bajar el proyecto aquí.

Share if you like...Share on Facebook0Tweet about this on TwitterShare on Google+0Share on LinkedIn0
The following two tabs change content below.
Reborn as IT Developer. Desarrollador Android y fundador de Proyecto Simio. "En realidad, yo no puedo enseñar nada a nadie, sólo puedo hacerles pensar." - Sócrates.

Deja un comentario