- 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 | 小 | 是 | 是 | 快 |
本文详细介绍了Drawable与Bitmap之间的转换方式与使用场景,强调了Drawable在内存占用和绘制速度上的优势。通过实例展示了如何使用setImageDrawable、setImageBitmap等方法,并探讨了两者在不同操作下的性能差异。
1050

被折叠的 条评论
为什么被折叠?



