我想将一张图片缩放到整个ImageView的大小。这与使用scaleType=fit_center
略有不同,因为fit_center会在图像的宽高比与ImageView的宽高比不完全匹配时留下黑边。相反,我希望图像被居中并按比例放大以完全填充包围视图,并且任何超出范围的部分都被裁剪掉。
我能够通过在onCreate()期间计算自定义图像矩阵来实现此目的:
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()
,因为视图尚未被布局并且没有大小)