自適應控制元件寬高大小載入bitmap圖片的友好方式
阿新 • • 發佈:2018-12-14
自動計算BitmapFactory.Options 的inSampleSize 引數。程式碼如下:
public static Bitmap decodeSampledBitmapFromResource(Resources res,int resId, int reqWidth,int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res,resId,options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options,reqWidth,reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res,resId,options); } public static int calculateInSampleSize( BitmapFactory.Options options,int reqWidth,int reqHeight) { // Raw height and width of image final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int halfHeight = height / 2; final int halfWidth = width / 2; // Calculate the largest inSampleSize value that is a power of 2 and keeps both // height and width larger than the requested height and width. while ((halfHeight / inSampleSize) => reqHeight && (halfWidth / inSampleSize) => reqWidth) { inSampleSize *= 2; } } return inSampleSize; }