ImageView android:scaleType、放大、垂直居中、左对齐?

ImageView android:scaleType、放大、垂直居中、左对齐?,android,Android,我有一个固定大小的imageview: layout_width="100dip" layout_height="50dip" 但是我想放在那里的位图可以是可变的宽度/高度。我想缩放位图(保持纵横比)以适应100度、50度的空间。放大后,我想垂直居中,左对齐 预定义的imageview-android:scaleType标志是否为我们提供了这些功能 如果不是,唯一的方法是自己手动修改位图(创建一个100度、50度的画布,然后在放大后将位图放置在画布中我想要的位置) 谢谢您不需要创建画布,您可以

我有一个固定大小的imageview:

layout_width="100dip"
layout_height="50dip"
但是我想放在那里的位图可以是可变的宽度/高度。我想缩放位图(保持纵横比)以适应100度、50度的空间。放大后,我想垂直居中,左对齐

预定义的imageview-android:scaleType标志是否为我们提供了这些功能

如果不是,唯一的方法是自己手动修改位图(创建一个100度、50度的画布,然后在放大后将位图放置在画布中我想要的位置)


谢谢

您不需要创建画布,您可以使用imageview的setImageMatrix方法。像这样:

final Bitmap bitmap = ...;//your bitmap
final int bitmapWidth = bitmap.getWidth();
final int bitmapHeight = bitmap.getHeight();
final float scaleRatio = Math.min(100f/bitmapWidth,50f/bitmapHeight);
final float deltaX = (100 - bitmapWidth * scaleRatio)/2;
final float deltaY = (50 - bitmapHeight * scaleRatio)/2;
final Matrix matrix = new Matrix();
matrix.postScale(scaleRatio,scaleRatio);
matrix.postTranslate(deltaX,deltaY);
imageView.setImageBitmap(bitmap);
imageView.setImageMatrix(matrix);

您不需要创建画布,可以改用imageview的setImageMatrix方法。像这样:

final Bitmap bitmap = ...;//your bitmap
final int bitmapWidth = bitmap.getWidth();
final int bitmapHeight = bitmap.getHeight();
final float scaleRatio = Math.min(100f/bitmapWidth,50f/bitmapHeight);
final float deltaX = (100 - bitmapWidth * scaleRatio)/2;
final float deltaY = (50 - bitmapHeight * scaleRatio)/2;
final Matrix matrix = new Matrix();
matrix.postScale(scaleRatio,scaleRatio);
matrix.postTranslate(deltaX,deltaY);
imageView.setImageBitmap(bitmap);
imageView.setImageMatrix(matrix);