studio from ejemplo convertir android imageview android-bitmap

from - Android-ImageView: setImageBitmap VS setImageDrawable



imageview android studio set image (5)

Ambos métodos son válidos y logran el mismo resultado. En el primer método, ajusta su mapa de bits alrededor de un objeto dibujable que es una abstracción de todo lo que se puede dibujar en una Vista.

Lo especial de Drawables es que te permiten realizar todo tipo de operaciones en el objeto gráfico que envuelven (escalado, traducción, opacidad, etc.).

Un mapa de bits es un tipo de dibujable, puede obtener más información acerca de los dibujables aquí: http://developer.android.com/guide/topics/resources/drawable-resource.html

En el segundo método, accede directamente a los bits del mapa de bits sin operaciones relacionadas dibujables y simplemente dibuja el mapa de bits tal como está en su vista.

Espero que esto ayude, aplausos, Max.

¿Cuál es la diferencia entre setImageBitmap y setImageDrawable ?

Tengo una imagen que me gustaría establecer dinámicamente desde el archivo. El tutorial que seguí dice que convierta mi Bitmap en un BitmapDrawable luego lo configure usando setImageDrawable . Me he dado cuenta de que configurar el Bitmap directamente con setImageBitmap también funciona, pero no noto ninguna diferencia.

Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); BitmapDrawable bitmapDrawable = new BitmapDrawable(image); imageView.setImageDrawable(bitmapDrawable);

O

Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); imageView.setImageBitmap(image);


En realidad, puede ver la diferencia, si a veces usa null como argumento:

imageView.setImageDrawable(null); Drawable d = imageView.getDrawable(); // d == null imageView.setImageBitmap(null); Drawable d = imageView.getDrawable(); // d == some BitmapDrawable, != null

así que si está comprobando la existencia de un drawable en ImageView , tenga cuidado.


public void setImageBitmap(Bitmap bm) { // if this is used frequently, may handle bitmaps explicitly // to reduce the intermediate drawable object setImageDrawable(new BitmapDrawable(mContext.getResources(), bm)); }

tal vez la diferencia es el mContext.getResources (), de mContext.getResources () puede obtener la densidad del divice, por lo que la pantalla en sceen es diferente


No hay diferencia entre los dos conjuntos internos que setImageBitmap llama a setImageDrawable .

El siguiente código se toma de ImageView.java de AOSP

public void setImageBitmap(Bitmap bm) { // if this is used frequently, may handle bitmaps explicitly // to reduce the intermediate drawable object setImageDrawable(new BitmapDrawable(mContext.getResources(), bm)); }


Acabo de escribir un artículo para esto. Desea poder responder su pregunta.

https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw

ImageView tiene 4 API para especificar la imagen. ¿Cuál usar? ¿Cuál es la diferencia?

  1. setImageDrawable (Drawable Drawable)
  2. setImageBitmap (Bitmap bm)
  3. setImageResource (int resId)
  4. setImageURI (uri de URI)

ImageView , por su nombre, se usa para mostrar una imagen. Pero, ¿qué es una imagen? Un Bitmap es una imagen, no es difícil de entender y usamos setImageBitmap para ese propósito. Sin embargo, internamente, ImageView tiene un Drawable pero no un Bitmap y para eso es setImageDrawable . Cuando llama a setImageBitmap , internamente, primero el mapa de bits se BitmapDrawable a BitmapDrawable , que IS-A Drawable , y luego llamará a setImageDrawable .

Aquí está el código.

public void setImageBitmap(Bitmap bm) { setImageDrawable(new BitmapDrawable(mContext.getResources(), bm)); }

Entonces, ¿qué pasa con la API 3 y 4?

Ya debe saber que hay muchos modos de crear un mapa de bits: desde una ruta de archivo, desde una secuencia de entrada, desde el Uri o desde el archivo de recursos.

BitmapFactory.decodeFile(String pathName) BitmapFactory.decodeStream(Inputstream) BitmapFactory.decodeResource(Resource res, int id) BitmapFactory.decodeByteArray(byte[] data)

Consciente de esto, es fácil de entender setImageResource / setImageUri es lo mismo que setImageBitmap .

En resumen, setImageDrawable es la función primitiva de la que dependen otras API. Los otros 3 son solo métodos auxiliares que te hacen escribir menos código.

Además, es muy importante tener en cuenta que ImageView realmente tiene un Drawable , que no necesariamente es un BitmapDrawable ! Puede establecer cualquier Drawable a la vista de Imagen.

Además de configurar Drawable través de la API de Java, también podría usar la atribución de XML para establecer el origen Drawable para ImageView . Vea el ejemplo a continuación. Tenga en cuenta que la forma puede ser un archivo de imagen (.png, .jpg, .bmp) o un archivo xml.