ImageView verfügt über 4 APIs zur Angabe des Bilds.
- setImageDrawable (Drawable ziehbar)
- setImageBitmap (Bitmap bm)
- setImageResource (int RESID)
- setImageURI (URI uri)
hier setImageDrawable
ist die primitive Funktion andere APIs verlassen auf. Die anderen 3 sind nur Hilfsmethoden, die Sie weniger Code schreiben lassen.
setImageURI
, setImageBitmap
werden beide im UI-Thread ausgeführt. Ich würde sagen, setImageBitmap
ist etwas schneller als die erste. setImageURI
hängt wirklich davon ab, wo die Uri-Ressource herkommt (z. B. könnte die URI auf eine entfernte Datei verweisen, die nicht einmal auf dem Telefon gespeichert ist).
setImageURI
() ist nicht besser, als Lesen und Decodieren auf dem UI-Thread zu verwenden, was einen Latenz-Schluckauf verursachen kann.
Besser folgendes zu verwenden: -
setImageDrawable(android.graphics.drawable.Drawable)
oder setImageBitmap(android.graphics.Bitmap)
und BitmapFactory
statt.
können Sie auch bitmap
von uri
zurückzukehren und verwenden Sie es in imageview
Uri imageUri = intent.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
Imageview my_img_view = (Imageview) findViewById (R.id.my_img_view);
my_img_view.setImageBitmap(bitmap);
auch irgendwann große Bitmap auf Imageview Laden kann der Speicher verursachen exception..so Sie Bitmap effizient laden sollte ..
public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
mImageView.setImageBitmap(
decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 100));
siehe diese Link auch ..zum besseren Verständnis
Strange out of memory issue while loading an image to a Bitmap object
Android Entwickler-Dokumentation: https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Dank für die nützlichen Tipps! –
Woher weiß ich, was der Wert für reqWidth und reqHeight ist, damit das Bild nicht verschwommen aussieht? –