Bitmap:
首先,我们来看一下Android官方文档对Bitmap的描述。
我们发现了Bitmap是直接继承了Object基类,并且实现了Parceable接口,即Bitmap类已经实现了序列化,还有我们发现Bitmap是final类,这样Bitmap就不能被其它类继承。
Bitmap代表了一张位图,也就不难理解为什么Bitmap是final类了,否则允许我们可以继承Bitmap,那将极易产生各种隐患。
下面是一些Bitmap提供的静态方法。
方法名称 | 说明 |
---|---|
createBitmap(Bitmap source, int x, int y, int width, int height) | 从原位图soure指定坐标点(x,y),从中取出一张宽为width,高为height的图片,并创建成Bitmap对象 |
createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter) | 对原位图src进行缩放,缩放成宽为dstWidth,高为dstHeight的新位图 |
createBitmap(int width, int height, Bitmap.config config) | 创建一个宽为width,高为height的新位图 |
createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) | 从原位图soure指定坐标点(x,y),从中取出一张宽为width,高为height的图片,并创建成Bitmap对象。并按Matrix指定的规则进行交换 |
BitmapFactory:
BitmapFactory是一个从不同数据源中解析,创建Bitmap的工具类。
一些BitmapFactory的静态方法如下。
方法名称 | 方法说明 |
---|---|
decodeByteArray(byte[] date, int offset, int length) | 将从offset位置开始,将长度为length的字节解析为Bitmap |
decodeFile(String pathName) | 从pathName指定的文件中解析,创建Bitmap对象 |
decodeFileDescriptor(FileDescriptor fdd) | 用于从FileDescriptor对应的文件中解析,创建Bitmap对象 |
decodeResource(Resource res, int id) | 用于更具指定的资源ID从指定的资源中解析和创建Bitmap对象 |
decodeStream(inputStream is) | 用于从指定输入流中解析,创建Bitmap的对象 |
考虑到图片一般都比较大,而相对的手机的内存大小相对较小,但是现在的S6,小米顶配等已经上了4G运存。但是我不知道手机的运存的大小和电脑的运存大小有什么区别,有知道的大神还希望不吝赐教。说远了,如果系统创建了大量的Bitmap对象,可能引发OOM(Out Of Memory)错误。于是,Android提供了下面两个方法。
Bitmap判断是否已经回收: boolean isRecycled();
Bitmap强制回收:void recycle();
All in all:
平时用Bitmap的时间不多,但是还是希望通过学习,总结平时所学的知识,多写一些相关的博文,毕竟,今年年后,能这样自由学习的时间不多了。