2011-11-16 72 views
1

我有一个imageview的,这将有一个固定的大小:ImageView android:scaleType,放大,垂直居中,左对齐?

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

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

做任何预定义的imageview android:scaleType标志为我们做?

如果没有,是否只有这样才能手动修改位图(在100dip上创建画布,然后将位图放置到画布上的位置,然后将其放大到我想要的位置)?

感谢

回答

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