如何为 ImageView 设置最小可缩放值?
how do I set a minimum scalable value for a ImageView?
假设我的可绘制文件夹中有一张分辨率为 400x400 的图像 'A',我将 ImageView 源设置为 A,此 ImageView 位于线性布局或卡片布局中。
我希望图像根据设备进行缩放,对于 4 英寸设备,我希望它是 120dp X 120dp,但我希望它根据显示器的尺寸缩放到更大的像素
首先,您需要获取设备的分辨率,如下所示:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
然后根据宽高,可以通过一定的语句设置ImageView.SetWidth(...)/Height/ScaleType
通过使用约束布局并将图像宽度和高度设置为 0dp 使其根据图像源大小进行缩放来解决此问题。
在 ImageView centerInside 中使用 ScaleType。
或
您可以通过保持 Aspect Ratio
.Aspect Ratio
.
根据屏幕尺寸制作新的 Bitmap
假设您的图片尺寸为 400x300(宽x高)
而您的预期 ImageView
大小是 200x400
并且你想根据 ImageView
的宽度来适应它然后你将使用下面的公式计算新的 Height
和 Width
并调整新的 Bitmap
.[= 的大小21=]
Aspect Ratio = Height / Width (if we taken new Width)
Aspect Ratio = Width / Height (If we take new Height)
AR= 300/400 = 0.75
New Height = NewWidth * AR;
NewHeight = 200 * 0.75;
NewHeight = 150 ;
因此您可以通过采用上述高度和宽度来调整位图的大小。
Online Image Aspect Ratio Calculator
使用以下方法调整位图大小:
public static Bitmap scaleBitmap(Bitmap bitmap, int wantedWidth, int wantedHeight) {
Bitmap output = Bitmap.createBitmap(wantedWidth, wantedHeight, Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Matrix m = new Matrix();
m.setScale((float) wantedWidth / bitmap.getWidth(), (float) wantedHeight / bitmap.getHeight());
canvas.drawBitmap(bitmap, m, new Paint());
return output;
}
假设我的可绘制文件夹中有一张分辨率为 400x400 的图像 'A',我将 ImageView 源设置为 A,此 ImageView 位于线性布局或卡片布局中。
我希望图像根据设备进行缩放,对于 4 英寸设备,我希望它是 120dp X 120dp,但我希望它根据显示器的尺寸缩放到更大的像素
首先,您需要获取设备的分辨率,如下所示:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
然后根据宽高,可以通过一定的语句设置ImageView.SetWidth(...)/Height/ScaleType
通过使用约束布局并将图像宽度和高度设置为 0dp 使其根据图像源大小进行缩放来解决此问题。
在 ImageView centerInside 中使用 ScaleType。
或
您可以通过保持 Aspect Ratio
.Aspect Ratio
.
Bitmap
假设您的图片尺寸为 400x300(宽x高)
而您的预期 ImageView
大小是 200x400
并且你想根据 ImageView
的宽度来适应它然后你将使用下面的公式计算新的 Height
和 Width
并调整新的 Bitmap
.[= 的大小21=]
Aspect Ratio = Height / Width (if we taken new Width)
Aspect Ratio = Width / Height (If we take new Height)
AR= 300/400 = 0.75
New Height = NewWidth * AR;
NewHeight = 200 * 0.75;
NewHeight = 150 ;
因此您可以通过采用上述高度和宽度来调整位图的大小。
Online Image Aspect Ratio Calculator
使用以下方法调整位图大小:
public static Bitmap scaleBitmap(Bitmap bitmap, int wantedWidth, int wantedHeight) {
Bitmap output = Bitmap.createBitmap(wantedWidth, wantedHeight, Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Matrix m = new Matrix();
m.setScale((float) wantedWidth / bitmap.getWidth(), (float) wantedHeight / bitmap.getHeight());
canvas.drawBitmap(bitmap, m, new Paint());
return output;
}