关于bitmap,为何android会有bitmap

一直纠结的问题终于解决了,就是bitmap这个玩意 android

以前在android中,大量的使用图片,不只可使用Imageview来显示,能够作button,window的背景.,你只要放在xml中进行操做,直接利用R.drawable.fiel  就能够引用了,可是你能够想一想,若是是访问网络获取的图片,或者字节,你怎么接受呢,他不会返回一张image,网络的传输是经过流的,因此这个时候就用到了Bitmap. 数组

Bitmap和BitmmapFactory 网络

Bitmap表明一张位图,能够进行编辑了,操做了,修改了等,通常咱们就利用BitmapFactory来操做得出bitmap 工具

想实例出来一个bitmap有一个静态的就是BitmapFactory 他是一个工具类,提供了各类方法来建立Bitmap有下面四种方法 spa

BitmapFactory.decodeByteArray(byte[] data,int offset,int length)从指定字节数组的offset位置开始,将长度为length的字节,转化成一个Bitmap code

BitmapFactory.decodeFile(String pathName)这个就不用说了吧,从pathName指定的文件中进行解析建立Bitmap对象 xml

BitmapFactory.decodeFileDescriptor(FileDescriptor fd)用于从FileDescriptor对应的文件中解析建立Bitmap对象 对象

BitmapFactory.decodeResource(Resource res,int id)这个至关简单,用于根据指定的ID从指定的资源中解析,建立Bitmap对象 图片

BitmapFactory.decodeSream(InputSream is)用于从指定的输出流中解析 ip

通常状况下,咱们只要图片放在drawable目录下就能够了,而后经过获取ID,直接就自动封装成一个Drawable对象,可是,想一下,手机的内存比较小,你懂的,若是你不断的去解析建立一个Bitmap对象,可能因为Bitmap前面建立的尚未回收,致使内存不足,会出现异常,常见的outofmemory,这就是所谓的内存溢出(之前我还不知道,感受好深奥,呵呵).因此咱们要即便的去回收他,android中提供了两个方法,

boolean isRecycled()返回该bitmap对象是否已经被回收

void recycle(); 强制一个Bitmap对象当即回收本身.

举例 好比我有一个ImageView控件 ImageView image=(ImageView)findViewById(R.id.image)

BitmapDrawable bit=(BitmapDrawable)image.getDrawable();

if(bit !=null && bit.getBitmap.isRecycled()){

bit.getBitmap.recycle();

}

在补充一下Bitamp是一个位图,而BitmapDrawable就是封装了一个Bitmap,因此要得到Bitmap,能够直接getBitmap();

相关文章
相关标签/搜索