假设我的可绘制文件夹中有一个图像“ A”,其分辨率为400x400,我将ImageView源设置为A,该ImageView位于线性布局或卡片布局中。
我想根据设备缩放图像,我想说4英寸设备的分辨率为120dp X 120dp,但是我想根据显示器的尺寸将其缩放为更大的像素
答案 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
的宽度进行调整,然后使用以下公式计算新的Height
和Width
并调整新的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;
}