Bitmap是安卓开发中和图片相关的最常见的一个类。无论是图片的处理,加载,以及自定义控件,都和Bitmap息息相关。
Bitmap的使用并不是很困难,但是在使用过程中及其容易导致OOM,这也是让开发者最烦心的事之一。合理有效的使用Bitmap,避免OOM,很有必要。
1,通过BitmapFactory创建Bitmap
通过这种方式创建Bitmap,大概有四种小的方式:
- 通过资源文件进行创建,比较常见
- 通过数组进行创建,这里的数组指的是字节数组
- 通过I/O流进行创建
- 通过文件路径进行创建
这四种方式涉及到的方法比较多,在这里我们讲一些比较典型的方法。
decodeResource(Resources res, int id)
直接通过资源文件进行创建,第一个参数是Resources ,如果是在Activity中使用,直接getResources()就可以得到该参数。第二个参数是资源Id。
例如:
bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.picture);
decodeResource(Resources res, int id, Options opts)
和上面的方法相比,多了一个Options 参数。这个参数非常重要,可以根据所需要的尺寸高效加载图片,是防止OOM的有效解决办法。后面会专门讨论OOM。
BitmapFactory.Options options=new BitmapFact