- Drawable和Bitmap之間可以互相轉換,Drawable佔用內存遠小於Bitmap。
- setImageDrawable使用資源文件;setImageBitmap使用bitmap圖片,該圖片可能是讀取本地相冊,或者從資源文件轉換而來。
- setImageResource()和setImageBitmap()
//setImageResource()
public void setImageResource (int resId)//佔用UI thread;
// setImageBitmap()
ImageView iv;
String fileName = "/data/data/com.test/aa.png";
Bitmap bm = BitmapFactory.decodeFile(fileName);
iv.setImageBitmap(bm); //佔用內存
// setImageBitmap()
Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
imageView.setImageBitmap(image);
// Bitmap轉換成Drawable
Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
BitmapDrawable bitmapDrawable = new BitmapDrawable(image);
imageView.setImageDrawable(bitmapDrawable);
// 結論:Bitmap是Drawable . Drawable不一定是Bitmap
小結
Bitmap: 簡單化的Drawable, PNG 或JPEG圖像.
Drawable在內存佔用和繪製速度這兩個非常關鍵的點上勝過Bitmap
對比項 | 佔用內存 | 支持縮放 | 支持旋轉 | 繪製速度 |
---|---|---|---|---|
Bitmap | 大 | 是 | 是 | 慢 |
Drawable | 小 | 是 | 是 | 快 |