ImageView有4個API來指定圖像。
- setImageDrawable(可繪製可繪製的)
- setImageBitmap(位圖BM)
- setImageResource(INT渣油)
- setImageURI(URI URI)
這裏setImageDrawable
是原始函數其他API依賴上。其他3個只是幫你編寫更少代碼的方法。
setImageURI
,setImageBitmap
都在UI線程上運行。我會說setImageBitmap
比第一個快一點。 setImageURI
實際上取決於Uri資源來自哪裏(例如,uri可能指向一個甚至不存儲在電話中的遠程文件)。
setImageURI
()不能更好地用作UI線程上的讀取和解碼,這會導致延遲打嗝。
最好使用下列內容: -
setImageDrawable(android.graphics.drawable.Drawable)
或setImageBitmap(android.graphics.Bitmap)
和BitmapFactory
代替。
您還可以從uri
在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);
返回bitmap
和也使用它在某個時候裝載imageview的大位會導致內存不足exception..so你應該有效地加載位圖..
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));
看到那些鏈接也..爲了更好的理解
Strange out of memory issue while loading an image to a Bitmap object
Android開發者文檔:https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
感謝有用的提示! –
如何知道reqWidth和reqHeight的值是什麼,以免圖像看起來模糊? –