如何为ImageView设置最小可伸缩值?

时间:2019-02-07 13:19:34

标签: android android-studio imageview android-imageview scale

假设我的可绘制文件夹中有一个图像“ A”,其分辨率为400x400,我将ImageView源设置为A,该ImageView位于线性布局或卡片布局中。

我想根据设备缩放图像,我想说4英寸设备的分辨率为120dp X 120dp,但是我想根据显示器的尺寸将其缩放为更大的像素

enter image description here

3 个答案:

答案 0 :(得分:0)

首先,您需要获取设备的分辨率,如下所示:

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;

然后,根据宽度和高度,您可以使用某些语句来设置ImageView.SetWidth(...)/ Height / ScaleType。

答案 1 :(得分:0)

通过使用约束布局并将图像的宽度和高度设置为0dp(使其根据图像源大小缩放)来解决此问题。

答案 2 :(得分:0)

在ImageView centerInside中使用ScaleType。

您可以通过维护Bitmap来根据屏幕尺寸新建Aspect Ratio

假设您的图片尺寸为400x300(WxH)

您期望的ImageView大小为200x400

您要根据ImageView的宽度进行调整,然后使用以下公式计算新的HeightWidth并调整新的Bitmap的大小。

  

纵横比=高度/宽度(如果我们采用新的宽度)

     

纵横比=宽度/高度(如果采用新高度)

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;
}