我想放大图像以占据 ImageView 的整个大小。这与使用 scaleType=fit_center
略有不同,因为 fit_center如果图像纵横比与 ImageView 的纵横比不完全匹配,则会在图像周围留下 strip 。相反,我希望图像居中并按比例放大以完全填充封闭 View ,并切掉任何多余的部分。
我可以通过在 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()
因为 View 还没有布局,没有大小)
最佳答案
您可以使用 android:scaleType="centerCrop"
。
保持纵横比并根据需要缩放图像。
更多信息请点击以下链接
http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType
关于android - 放大图像以填充 Android 中的整个 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669764/