Bitmap 和 Drawable 的区别及转换

定义

Drawable

A Drawable is a general abstraction for “something that can be drawn.”
在谷歌官方文档中的定义是: Drawable 是任何可以绘画对象的一个抽象

Bitmap

位图文件(Bitmap),扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。 ——百度百科

区别

从上面的定义中,我们明显可以看出来,Drawable 的作用范围明显要大很多,Drawable 包括了 Bitmap,它还包括了 Shape,Layer 等。

两者在 Android 中的使用

绝大多数的 Android UI Framework 中使用的是 Drawable,而不是 Bitmap,View 控件能使用任何的 Drawable 作为背景。比如说 ImageView 有 setImageDrawable() 和 setImageBitmap() 两个方法,但是当你调用 setImageBitmap() 时,程序内部将会把 Bitmap 包裹进 BitmapDrawable 中,下面是代码

public void setImageBitmap(Bitmap bm) {
    setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}

Bitmap 2 Drawable

Drawable d = new BitmapDrawable(getResources(), bitmap);

Drawable 2 Bitmap

Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_resource);

你可能感兴趣的:(Android)