直接上代码:
public class LoadSimpleBitmap {
//reqwidth图片预设宽度,reqHeight图片预设高度
public static Bitmap loadsimplebitmap(Resources res, int resId,
int reqWidth, int reqHeight){
// 第一次解析将inJustDecodeBounds设置为true,来获取图片大小
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// 调用上面定义的方法计算inSampleSize值
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// 使用获取到的inSampleSize值再次解析图片
options.inJustDecodeBounds = false;
Bitmap decodeResource = BitmapFactory.decodeResource(res, resId, options);
return decodeResource;
}
public static int calculateInSampleSize(BitmapFactory.Options options,
int reqWidth, int reqHeight) {
// 源图片的高度和宽度
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
// 计算出实际宽高和目标宽高的比率
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// 选择宽和高中最小的比率作为inSampleSize的值,这样可以保证最终图片的宽和高
// 一定都会大于等于目标的宽和高。
inSampleSize=Math.min(heightRatio, widthRatio);
}
return inSampleSize;
}
/**加载资源图片
* @param imageView 控件
* @param res 资源
* @param resId 资源id
*/
public static void setbitmap(ImageView imageView,Resources res, int resId){
ImageSize imageSize = ImageSizeUtil.getImageViewSize(imageView);
int width = imageSize.width;
int height = imageSize.height;
imageView.setImageBitmap(loadsimplebitmap(res,resId,width,height));
}
/**加载本地图片
* @param imageView 控件
* @param path 路径
*/
public static void setbitmap(ImageView imageView,String path){
imageView.setImageBitmap(getpathbitmap(imageView,path));
}
public static Bitmap getpathbitmap(ImageView imageView,String path){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
ImageSize imageSize = ImageSizeUtil.getImageViewSize(imageView);
int width = imageSize.width;
int height = imageSize.height;
options.inSampleSize = ImageSizeUtil.caculateInSampleSize(options,
width, height);
// 使用获得到的InSampleSize再次解析图片
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
return bitmap;
}
}
调用也就一句话:
LoadSimpleBitmap.setbitmap(loadimage_iv_image, this.getResources(), R.drawable.ic_danche);