图片很耗内存,同时了也是极其重要的一个模块。各种各样的色彩,让app更加酷炫。
主要涉及到的类
BitmapFactory
BitmapFactory.Options
加载图片的方式
BitmapFactory的一系列decode函数。通常,不直接加载图片,而是获取图片的大致信息。比如高度,宽度,图片类型,然后根据实际情况,获取缩放后的图片(试想,磁盘中的图片很大,直接加载图片,只会造成OOM (^-^))
获取图像大略信息,主要是要设置 BitmapFactory.Options.inJustDecodeBounds = true
BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(getResources(), R.id.myimage, options); int imageHeight = options.outHeight; int imageWidth = options.outWidth; String imageType = options.outMimeType;
int BitmapFactory.Options.outHeight 图片的实际高度
int BitmapFactory.Options.outWidth 图片的实际宽度
int BitmapFactory.Options.inSample 缩放的系数,比如 inSample=2时,内存图片的高度和宽度都是实际图片的一半。
获取到图片的大略信息之后,可以计算Options.inSample的值,然后就是直接加载图像了。
Android3.0及其后版本,可以复用已经申请的图片内存。
主要需要设置
Bitmap BitmapFactory.Options.inBitmap 这是将被复用的图片。