在Android中缩放图像以填充整个ImageView

我想缩放一个图像,占据整个ImageView的大小。 这与使用scaleType=fit_center差别scaleType=fit_center因为如果图像纵横比与ImageView纵横比不完全匹配, fit_center会在图像周围留下条带。 相反,我希望图像能够居中放大并完全填充封闭的视图,并将任何多余的部分切掉。

我能够通过在onCreate()期间计算自己的自定义图像matrix来实现这一点:

  final Display display = getWindowManager().getDefaultDisplay(); final float screenWidth = display.getWidth(); final float screenHeight = display.getHeight(); final float imageWidth = splashView.getDrawable().getIntrinsicWidth(); final float imageHeight = splashView.getDrawable().getIntrinsicHeight(); final Matrix splashMatrix = new Matrix(); final float scale = Math.max(screenHeight/imageHeight,screenWidth/imageWidth); splashMatrix.postScale( scale, scale ); splashView.setImageMatrix(splashMatrix); 

这工作正常,但似乎必须有一个更容易。 有谁知道在ImageView中放大图像的方法,同时保留图像的纵横比并完全填充ImageView?

(注意:在我的情况下,我的ImageView占用了全屏幕,所以我使用getWindowManager().getDisplay()来查找所需的图像大小。不能使用splashView.getWidth() / getHeight()因为视图hasn还没有布置,没有一个大小)

你可以使用android:scaleType="centerCrop" 。 保持宽高比并按照您的需要缩放图像。

欲了解更多信息,请通过下面的链接

http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType