page.title=Trabajar con interfaces dibujables @jd:body
Las siguientes capacidades para las interfaces dibujables te ayudan a implementar Material Design en tus aplicaciones:
Esta lección te muestra cómo usar estas características en tu aplicación.
Con Android 5.0 (API nivel 21) y superior, puedes cambiar el matiz de los mapas de bits y nueve parches definidos como
máscaras alfa. Puedes cambiar el matiz con recursos de colores o atributos de temas que se resuelven a
recursos de colores (por ejemplo, ?android:attr/colorPrimary). Generalmente, puedes crear estos recursos
solo una vez y agregarles color automáticamente para que coincidan con tu tema.
Puedes aplicar un matiz a los objetos {@link android.graphics.drawable.BitmapDrawable} o {@link
android.graphics.drawable.NinePatchDrawable} con el método {@code setTint()}. También puedes
establecer el color de matiz y el modo en tus diseños con los atributos android:tint y
android:tintMode.
La Biblioteca de soporte de Android r21 y superiores incluye la clase {@link android.support.v7.graphics.Palette}, que te permite extraer colores prominentes de una imagen. Esta clase extrae los siguientes colores prominentes:
Para extraer estos colores, pasa un objeto {@link android.graphics.Bitmap} al método estático {@link android.support.v7.graphics.Palette#generate Palette.generate()} en el subproceso en segundo plano en donde cargas tus imágenes. Si no puedes usar dicho subproceso, llama al método {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} y proporciona un gestor de eventos en su lugar.
Puedes recuperar los colores prominentes de la imagen mediante los métodos de obtención en la clase
Palette, como Palette.getVibrantColor.
Para usar la clase {@link android.support.v7.graphics.Palette} en tu proyecto, agrega la siguiente Dependencia Gradle al módulo de tu aplicación:
dependencies {
...
compile 'com.android.support:palette-v7:21.0.0'
}
Para más información, consulta la referencia de la API para la clase {@link android.support.v7.graphics.Palette}.
Gráficos en vector de Android
En Android 5.0 (API nivel 21) y superiores, puedes definir las interfaces dibujables en vector, que escalan sin
perder definición. Solo necesitas un archivo de recurso para una imagen en vector, en oposición a un archivo de recurso para
la densidad de cada pantalla en el caso de imágenes de mapa de bits. Para crear una imagen en vector, defines los detalles
de la forma dentro de un elemento XML <vector>.
El siguiente ejemplo define una imagen en vector con la forma de un corazón:
<!-- res/drawable/heart.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
<!-- intrinsic size of the drawable -->
android:height="256dp"
android:width="256dp"
<!-- size of the virtual canvas -->
android:viewportWidth="32"
android:viewportHeight="32">
<!-- draw a path -->
<path android:fillColor="#8fff"
android:pathData="M20.5,9.5
c-1.955,0,-3.83,1.268,-4.5,3
c-0.67,-1.732,-2.547,-3,-4.5,-3
C8.957,9.5,7,11.432,7,14
c0,3.53,3.793,6.257,9,11.5
c5.207,-5.242,9,-7.97,9,-11.5
C25,11.432,23.043,9.5,20.5,9.5z" />
</vector>
Las imágenes en vector están representadas en Android como objetos {@link android.graphics.drawable.VectorDrawable}.
Para más información sobre la sintaxis pathData, consulta la referencia de ruta de acceso SVG. Para más información
sobre la animación de las propiedades de las interfaces dibujables en vector, consulta
Animación de interfaces dibujables en vector.