android - 放大图像以填充 Android 中的整个 ImageView

标签 android android-layout android-imageview

我想放大图像以占据 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/

相关文章:

android - 如何动态设置位于工具栏内的 TextView 中的值(Android)

安卓 : How to detect the image orientation (portrait or landscape) picked from gallery while setting on an imageview?

android - Android 中的压缩 ETC 纹理更新 - glCompressedTexSubImage2D

java - Android Sqlite 选择查询值是否为零或 0

android - 如何从我的自定义 View 中访问 layout_height?

android - 拖动时跳转 ImageView。 getX() 和 getY() 值在跳跃

java - Android 图像上的文字

android - distance To() 返回的距离不是米!

Android ListView 不会滚动

Android 通过结合两种样式使按钮无边框不起作用