1. Bitmap位图解码
Android设备系统资源是有限的,会给单独的应用分配大概16MB的内存。如果Bitmap资源太大,会造成内存溢出。
示例:让一个很大的图片,以一个比例缩小后显示在一个ImageView中。
1. 在Activity中,点击按钮显示图片
Android设备系统资源是有限的,会给单独的应用分配大概16MB的内存。如果Bitmap资源太大,会造成内存溢出。
示例:让一个很大的图片,以一个比例缩小后显示在一个ImageView中。
1. 在Activity中,点击按钮显示图片
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Bitmap bm = BitmapTools.decodeBitmap(getResources(),
R.drawable.a, 50, 50);
imageView.setImageBitmap(bm);
}
});
2. 定义一个Bitmap工具类
public class BitmapTools {
public BitmapTools() {
}
/**@param resources 资源文件
* @param resId 解码位图的id
* @param reqWith 指定输出位图的宽度
* @param reqHeight 指定输出位图的高度
*/
public static Bitmap decodeBitmap(Resources resources, int resId,
int reqWith, int reqHeight) {
// 对位图进行解码的参数设置
BitmapFactory.Options options = new BitmapFactory.Options();
// 在对位图进行解码的过程中,避免申请内存空间
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(resources, resId, options);
// 对图片进行一定比例的压缩处理
options.inSampleSize = calculateInSimpleSize(options, reqWith,reqHeight);
options.inJustDecodeBounds = false;// 真正输出位图
return BitmapFactory.decodeResource(resources, resId, options);
}
public static int calculateInSimpleSize(BitmapFactory.Options options,
int reqWith, int reqHeight) {
// 获得图片的原始宽高
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
int inSimpleSize = 1;// 压缩比例
if (imageHeight > reqHeight || im