我有一个固定大小的imageview:
layout_width="100dip"
layout_height="50dip"
但我要放在那里的位图可以是一个可变的宽度/高度。我想缩放位图(保持宽高比)以适应100dip,50dip空间。放大后,我想垂直居中,然后左对齐。
是否有任何预定义的imageview android:scaleType标志为我们做了什么?
如果没有,这是自己手动修改位图的唯一方法(在100dip,50dip dip尺寸下创建画布,然后在缩放后将位图放在画布中我想要的位置)?
由于
答案 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);