2012-01-20 13 views

Respuesta

49

Un mapa de bits es una representación de una imagen de mapa de bits (algo así como java.awt.Image). Un Drawable es una abstracción de "algo que se puede dibujar". Podría ser un mapa de bits (envuelto como BitmapDrawable), pero también podría ser un color sólido, una colección de otros objetos extraíbles o cualquier cantidad de otras estructuras.

La mayor parte de la estructura de la interfaz de usuario de Android le gusta trabajar con objetos Drawable, no con objetos de mapa de bits. Una Vista puede aceptar cualquier Drawable como fondo. Un ImageView puede mostrar un Drawable en primer plano. Las imágenes almacenadas como recursos se cargan como objetos Drawable.

+3

si un mapa de bits arrastra un mapa de bits, ¿qué ocurriría si llamamos a recycle() en el mapa de bits dentro de ella? también, ¿qué hace recycle() para API11 y superior? –

+0

@androiddeveloper - No estoy seguro, pero no será nada bueno. Una vez que un mapa de bits está envuelto por un mapa de bits, el drawable "posee" el mapa de bits y se supone que administra su vida útil. Si llama a 'recycle()', está interfiriendo con esa relación. En el mejor de los casos, el dibujable no dibujará nada; lo más probable es que se produzca algún tipo de excepción más adelante. De acuerdo con [los documentos] (http://developer.android.com/reference/android/graphics/Bitmap.html#recycle%28%29), 'recycle()' con API11 + hace lo mismo que siempre: le permite liberar los píxeles nativos tan pronto como sepa que ha terminado con ellos. –

+0

dicen que libera la memoria nativa del mapa de bits, pero sabemos que a partir de API 11, todo lo relacionado con el mapa de bits (incluidos sus datos sin formato) está dentro del montón, por lo que reciclar parece una cosa extraña de hacer ... –

28

Drawable es algo que se puede dibujar. P.ej. diseño, imagen vectorial (línea, círculo), la fuente, la imagen y así sucesivamente

mapa de bits - es tipo específico de dibujable que es imagen, como: PNG, JPEG o por lo

+7

A [Mapa de bits] (http://developer.android.com/reference/android/graphics/Bitmap.html) ('android.graphics.Bitmap') no es una subclase de [Drawable] (http: // developer. android.com/reference/android/graphics/drawable/Drawable.html) ('android.graphics.drawable.Drawable'). –

+0

Claro, es mi culpa. Quise decir BitmapDrawable – barmaley

+0

Parece tener un buen punto – neferpitou

10

Disponibles Recursos

Un recurso Drawable es un concepto general para un gráfico que puede dibujarse en la pantalla y que puede recuperar con API como getDrawable(int) o aplicar a otro recurso XML con atributos como android:drawable y android:icon. Hay varios tipos diferentes de dibujables:

  • mapa de bits de archivos, un archivo gráfico de mapa de bits, (.png, .jpg o .gif), crea un BitmapDrawable.

  • Nueve-Patch File, PNG Un archivo con las regiones extensibles para permitir el cambio de tamaño de imagen basada en el contenido (.9.png), crea un NinePatchDrawable.

  • Lista de capas, A Drawable que maneja una gran variedad de otros Drawable s. Estos se dibujan en orden de matriz, por lo que el elemento con el índice más grande se dibuja en la parte superior, crea un LayerDrawable.

  • Lista Estado, XML Un archivo que hace referencia a diferentes gráficos de mapas de bits para diferentes estados (por ejemplo, para utilizar una imagen diferente cuando se pulsa un botón), crea un StateListDrawable.

  • Lista Nivel, XML Un archivo que define un Drawable que gestiona una serie de alternativas Drawable s, cada uno asignado un valor numérico máximo, crea una LevelListDrawable.

  • Transición Disponibles, XML Un archivo que define un Drawable que pueden fundido cruzado entre dos Drawable recursos, crea una TransitionDrawable.

  • Inset Disponibles, Un archivo XML que define un Drawable que la inserta otro Drawable por una distancia especificada. Esto es útil cuando un View necesita un fondo Drawble que sea más pequeño que los límites reales de la vista.

  • Clip Disponibles, XML Un archivo que define un Drawable que se sujeta otra Drawable basado en el valor actual nivel este Drawable 's, crea una ClipDrawable.

  • Escala Disponibles, XML Un archivo que define un Drawable que cambia el tamaño de otro Drawable basado en su valor actual nivel, crea una ScaleDrawable.

  • Forma Disponibles, XML Un archivo que define una forma geométrica, incluyendo colores y degradados, crea una ShapeDrawable.

Véase también el documento de Recursos de Animación de cómo crear un AnimationDrawable.

Nota: Un recurso de color también se puede usar como Ddrawable en XML. Por ejemplo, al crear un StateListDrawable, puede hacer referencia a un recurso de color para el atributo android:drawable (android:drawable="@color/green").

Bitmap

Una imagen de mapa de bits. Android admite archivos de mapa de bits en tres formatos: .png (preferido), .jpg (aceptable), .gif (desaconsejado).

Puede hacer referencia directamente a un archivo de mapa de bits, usando el nombre de archivo como el ID del recurso o creando un ID de recurso de alias en XML.

Nota: Los archivos de mapas de bits se pueden optimizar automáticamente con la compresión de imágenes sin pérdida mediante la herramienta aapt durante el proceso de compilación. Por ejemplo, un PNG de color verdadero que no requiere más de 256 colores se puede convertir a un PNG de 8 bits con una paleta de colores. Esto dará como resultado una imagen de igual calidad pero que requiere menos memoria. Tenga en cuenta que los archivos binarios de imágenes colocados en este directorio pueden cambiar durante la compilación. Si planea leer una imagen como un flujo de bits para convertirla en un mapa de bits, coloque sus imágenes en la carpeta res/raw/ en su lugar, donde no se optimizarán.

Cuestiones relacionadas