Crear dibujable desde mapa de bits
TODAS,
Como se sugiere aquí necesito hacer un dibujable fuera de mi mapa de bits. Pero cuando traté de usar:
- Obtenga el ancho y la altura del mapa de bits sin cargar en la memoria
- Error de error de mapa de bits inmutable
- Android: tamaño de mapa de bits supera 32 bits en DialogFragment
- Crear imagen desde la vista / pantalla en Android
- BitmapFactory.Options.inBitmap causa desgarro al cambiar mapa de imagen de ImageView a menudo
Drawable d = new Drawable( my_bmp);
Muestra que este constructor está obsoleto en favor de:
Drawable(Bitmap bmp, int resourceId)
¿Cómo puedo hacer un drawable fuera del mapa de bits?
Gracias.
- Encuentra la posición de un mapa de bits en la vista de imagen de Android cuando la vista de contenedor se escala centerInside
- Cómo hacer que una imagen encaje en un marco circular en android
- GetDrawingCache () devuelve null
- ¿Cómo subir varios archivos de imagen en el servidor?
- Pasar Bitmap a otra actividad termina en RunTimeException
- Android: ancho máximo permitido y altura del mapa de bits
- Google maps api v2 fuera de error de memoria
- Error de OutOfMemory aunque la memoria libre está disponible
Puedes usar
Drawable d = new BitmapDrawable(getResources(), my_bmp);
A Drawable que envuelve un mapa de bits y puede ser mosaico, estirado o alineado. Puede crear un BitmapDrawable desde una ruta de acceso de archivo, un flujo de entrada, a través de inflación de XML o desde un objeto Bitmap.
BitmapDrawable(Resources res, Bitmap bitmap)
Crea dibujable desde un mapa de bits, estableciendo la densidad de destino inicial en función de las métricas de visualización de los recursos.
También mirar a los constructores públicos @
http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
Intenta cargar Bitmap
como Bitmap Drawable
Crear ImgDrawableFromFile(Resources res, String file_name)
como a continuación
Drawable d = null; public Drawable ImgDrawableFromFile(Resources res, String file_name) { myBitmap = null; File imgFile = new File( "/data/data/yourpkgname/app_my_sub_dir/images/" + file_name); if (imgFile.exists()) { myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); if (myBitmap != null) { d = new BitmapDrawable(res, myBitmap); return d; } else { return null; } } return null; }
Ahora se llama esta función como
img.setBackgroundDrawable(ImgDrawableFromFile(getResources(), "1.jpg")); // pass your saved file name as second argument
Puede utilizar la clase BitmapDrawable para obtener una Drawable de un mapa de bits
Referencia de mapa de bits
BitmapDrawable(Bitmap bitmap)
ha quedado deprecated
puedes usar
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
fuente
Un poco tarde para la fiesta, pero veo un claro malentendido. Las respuestas proporcionadas son efectivamente correctas:
Drawable d = new BitmapDrawable(getResources(),bitmap);
En este caso, getResources()
es un método disponible en el Context
o la Activity
y sólo se utiliza para averiguar la densidad de la pantalla y ajustar el Drawable en consecuencia.
Así que Igor, incluso si está cargando la imagen desde la nube, todavía puede llamar a getResources ().
Codificación feliz
Si Mauro Banze llegaba tarde a la fiesta, entonces realmente no sé lo que estoy haciendo aquí. Pero para los que vienen aquí desesperadamente buscando una solución, esto es lo que hice:
Me tropecé un poco el mismo problema al traer un proyecto de JavaFX a Android. Quería reutilizar la mayoría de mis clases de "datos" que sólo gestionan y proporcionan mis datos y no tienen ningún efecto en la interfaz de usuario.
Basta contar historias, aquí vamos:
Problema:
- En algún momento necesitamos un
Drawable
para salir Bitmap en la pantalla. - Queremos descargar (desde la nube, Internet o donde sea) este mapa de bits y guardarlo para uso posterior como
Drawable
- No podemos hacerlo en una clase sin
Context
o sinActivity
, ya que necesitamos losResources
.
Entonces, ¿por qué no lo guardamos como un Bitmap
hasta que lo necesitamos para dibujarlo (lo que sin duda ocurrirá en una clase de Context
o de Activity
).
He creado una clase llamada BitmapImage
. Se parece a esto:
public class BitmapImage { private final Bitmap bitmap; public BitmapImage (Bitmap bitmap) { this.bitmap = bitmap; } public Bitmap getBitmap() { return bitmap; } public Drawable getDrawable(Resources res) { return new BitmapDrawable(res,getBitmap()); }
Esta clase muy simple "guarda" el mapa de bits. Por lo tanto, en lugar de trabajar con un Drawable
trabajas con BitmapImage
hasta que necesites desesperadamente el Drawable
.
En ese momento, deberías estar en tu Activity
o Context
y allí puedes llamar Drawable foo = anyBitmapImage.getDrawable(getResource())
.
- Cómo Picasso realmente Cache las imágenes
- R no se puede resolver – Android, sin importar android.R; declaración