问题描述:在Android开发中,有时候我们希望图像能够根据屏幕大小自动缩放或反映选项设置,但实际情况却没有发生。
解决方法:
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
// 加载图像,并设置缩放比例
public Bitmap decodeSampledBitmapFromResource(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);
// 根据目标宽高计算缩放比例
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// 配置BitmapFactory.Options对象,并加载图像
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
// 计算缩放比例
public 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 halfHeight = height / 2;
final int halfWidth = width / 2;
while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
以上是解决Android图像不会自动缩放或反映选项设置的几种常见方法。根据具体情况,选择合适的方法来解决问题。
上一篇:Android图像背景圆角化