ImageView android:scaleType,向上扩展,中心垂直,左对齐?

时间:2011-11-16 22:39:01

标签: android

我有一个固定大小的imageview:

layout_width="100dip"
layout_height="50dip"

但我要放在那里的位图可以是一个可变的宽度/高度。我想缩放位图(保持宽高比)以适应100dip,50dip空间。放大后,我想垂直居中,然后左对齐。

是否有任何预定义的imageview android:scaleType标志为我们做了什么?

如果没有,这是自己手动修改位图的唯一方法(在100dip,50dip dip尺寸下创建画布,然后在缩放后将位图放在画布中我想要的位置)?

由于

1 个答案:

答案 0 :(得分:1)

您不需要创建画布,您可以使用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);