占用内存 | 绘制速度 | 支持像素操作 | 支持旋转缩放 | 支持透明度 | |
---|---|---|---|---|---|
Bitmap | 大 | 慢 | 支持 | 支持 | 支持 |
Drawable | 小 | 快 | 不支持 | 支持 | 支持 |
Bitmap含义:位图,文件格式一般为bmp
Drawable含义:Android下的图形对象,可以装载png、gif、jpg、bmp等格式的图像
Bitmap获取对象及获取属性:
Bitmap bmp = BitmapFactory.decodeResource(getResource(), R.drawable.icon);
h = bmp.getHeight();
w = bmp.getWidth();
Drawable获取对象及获取属性:
Drawable d = getResouce().getDrawable(R.drawable.icon);
h = d.getIntrinsicHeight();
w = d.getIntrinsicWidth();
注意:
1.Drawable有一个常用的子类BitmapDrawable用于两者间的转换
2.Drawable的内存占用和绘制效率优于Bitmap
3.Bitmap是Drawable的实体对象之一
4.Drawable其实是一个抽象类
Bitmap转Drawable常见的两种方法:
第一种:
Drawable d = new BItmapDrawable(bmp)Drawable d = new BItmapDrawable(bmp);
第二种:
BitmapDrawable d = new BitmapDrawable(getResource, bmp);
Drawable转Bitmap常见的两种方法:
第一种:
BitmapDrawable bd = new BitmapDrawable(d);
Bitmap bmp = bd.getBitmap();
第二种:
public static Bitmap drawableToBitmap(Drawable drawable){
int w = drawable.getIntrinsicWidth():
int h = drawable.getIntrinsicHeight();
Bitmap.config config = drawable.getOpacity() != PixelFormat.OPAQUE ?
Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;
Bitmap bmp = Bitmap.createBitmap(w, h, config);
Canvas canvas = new Canvas(bmp);
drawable.setBounds(0,0,w,h);
drawable.draw(convas);
return bmp;
}