Busqué en Google pero no pude encontrar ningún artículo para describir la diferencia entre Bitmap y Drawable en Android.¿Cuál es la diferencia entre Bitmap y Drawable en Android?
Respuesta
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.
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? –
@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. –
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 ... –
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
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'). –
Claro, es mi culpa. Quise decir BitmapDrawable – barmaley
Parece tener un buen punto – neferpitou
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 unNinePatchDrawable
.Lista de capas, A
Drawable
que maneja una gran variedad de otrosDrawable
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 unLayerDrawable
.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 unStateListDrawable
.Lista Nivel,
XML
Un archivo que define unDrawable
que gestiona una serie de alternativasDrawable
s, cada uno asignado un valor numérico máximo, crea unaLevelListDrawable
.Transición Disponibles,
XML
Un archivo que define unDrawable
que pueden fundido cruzado entre dosDrawable
recursos, crea unaTransitionDrawable
.Inset Disponibles, Un archivo
XML
que define unDrawable
que la inserta otroDrawable
por una distancia especificada. Esto es útil cuando unView
necesita un fondoDrawble
que sea más pequeño que los límites reales de la vista.Clip Disponibles,
XML
Un archivo que define unDrawable
que se sujeta otraDrawable
basado en el valor actual nivel esteDrawable
's, crea unaClipDrawable
.Escala Disponibles,
XML
Un archivo que define unDrawable
que cambia el tamaño de otroDrawable
basado en su valor actual nivel, crea unaScaleDrawable
.Forma Disponibles,
XML
Un archivo que define una forma geométrica, incluyendo colores y degradados, crea unaShapeDrawable
.
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.
- 1. Bitmap vs ImageView vs Drawable
- 2. Diferencia entre dibujable y drawable-mdpi
- 3. XML drawable Bitmap tileMode error?
- 4. Cuál es la diferencia entre android: layout_width y android: width
- 5. ¿cuál es la diferencia entre sendStickyBroadcast y sendBroadcast en Android
- 6. ¿Cuál es la diferencia entre getDir y getFilesDir en Android?
- 7. ¿Cuál es la diferencia entre + = y = +?
- 8. ¿cuál es la diferencia entre:.! y: r !?
- 9. ¿Cuál es la diferencia entre ".equals" y "=="?
- 10. Cuál es la diferencia entre $ y jQuery
- 11. Cuál es la diferencia entre = y: =
- 12. Cuál es la diferencia entre $ (...) y `...`
- 13. ¿Cuál es la diferencia entre dict() y {}?
- 14. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 15. ¿Cuál es la diferencia entre {0} y ""?
- 16. ¿Cuál es la diferencia entre .ToString (+) y ""
- 17. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 18. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 19. ¿Cuál es la diferencia entre " " y ""?
- 20. Bitmap recycle() en java Android
- 21. ¿Cuál es la diferencia entre "? Android:" y "@android:" en un archivo xml de diseño de Android?
- 22. ¿Cuál es la diferencia entre android.text.format.DateFormat y java.text.DateFormat
- 23. ¿Cuál es la diferencia entre los archivos apklib y jar?
- 24. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 25. ¿cuál es la diferencia entre CONTENT_FILTER_URI y CONTENT_URI?
- 26. ¿Cuál es la diferencia entre setWebViewClient y setWebChromeClient?
- 27. ¿Cuál es la diferencia entre Activity.runOnUiThread (acción ejecutable) y Handler.post()?
- 28. Drawable-hdpi, Drawable-mdpi, Drawable-ldpi Android
- 29. ¿cuál es la diferencia entre/system/app y/data/app?
- 30. ¿Cuál es la diferencia entre fill_parent y wrap_content?
Esta solución debería ser capaz de responder a sus preguntas: [solución] (http://stackoverflow.com/a/5877202/813207) – Jrom