您的位置:首页 > 移动开发 > Android开发

Android BitmapFactory.Options 对图片进行缩放以符合ImageView大小

2018-02-10 16:20 585 查看
首先 图片的选取
icon应该是png
view pager、recycler view中的图应该是jpg

其次让图片的尺寸缩放成ImageView的尺寸,实现资源的节约
1.BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources(), resId, options);

这样做会仅仅加载图片的宽高到内存中
2.
int inSampleSize = 1;

int width = options.outWidth;
int height = options.outHeight;

if (width > wantWidth || height > wantHeight) {
int halfWidth = width / 2;
int halfHeight = height / 2;
while (halfWidth / inSampleSize >= wantWidth && halfHeight / inSampleSize >= wantHeight) {
inSampleSize *= 2;
}
}宽高就被保存在了options.outWidth;options.outHeight;里。我们再根据image view的宽高计算出缩放比例
3.
options.inSampleSize = inSampleSize;
options.inJustDecodeBounds = false;
缩放比例赋给inSampleSize
然后inJustDecodeBounds代表实际加载
这样一来 就会加载出一个 缩放后的bitmap到内存中

方法如下 
public class BitmapUtils {
public static Bitmap getGoodBitmap(Context context, int resId, int wantWidth, int wantHeight) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources(), resId, options);

int inSampleSize = 1;

int width = options.outWidth;
int height = options.outHeight;

if (width > wantWidth || height > wantHeight) {
int halfWidth = width / 2;
int halfHeight = height / 2;
while (halfWidth / inSampleSize >= wantWidth && halfHeight / inSampleSize >= wantHeight) {
inSampleSize *= 2;
}
}

options.inSampleSize = inSampleSize;
options.inJustDecodeBounds = false;

return BitmapFactory.decodeResource(context.getResources(),resId,options);
}
}

注意 你传入的参数,应该是你经过测绘出的get width、get height,这样获取出来的才是px(像素)。布局文件中指定的是dp,在不同的手机上会进行不同的换算,不能作为参考的标准。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐