如何在 Android ImageView 中缩放高度但截断图像的末尾?

How to scale the height but cut off the end of an image in Android ImageView?

这更像是一个概念性的 Android 问题

假设我有这张静态图片,我想将其加载到 ImageView -

假设图像为 600px x 200px。(宽度 x 高度)

假设我的图像视图是 300 像素 x 200 像素(宽 x 高)

我只想按高度缩放并切掉图像的左端,以便图像适合图像视图。另外,如果不需要削减(已经适合),我不想削减任何一部分。

所以最后 ImageView(如果它是 300 像素 x 200 像素)将容纳这张图片

(基本上 F 不会失真)

我看过 Scale To Fit,但 none 的比例类型似乎可以实现这种自定义效果。有谁知道我会怎么做?就我而言,我不想保持原始纵横比。

您应该裁剪位图,使其始终适合您的 ImageView。如果你想裁剪右下角,你可以做类似的事情:

if (needsCropping()) {
    int startWidth = originalImage.getWidth() - 300;
    int startHeight = originalImage.getHeight() - 200;


    Bitmap croppedBitmap = Bitmap.createBitmap(originalImage, startWidth, startHeight, width, height);

    // TODO set imageview
}

FIT_END 会这样做: 计算将保持原始 src 纵横比的比例,但也将确保 src 完全适合 dst。至少有一个轴(X 或 Y)将完全适合。 END 将结果与 dst 的右边缘和下边缘对齐。

您可以使用 ScaleType.CENTER_CROP 但这不会以任何方式重新缩放图像。

这些的任何组合都是不可能的,因为你必须有自己的缩放方法(子类化 ImageView)。

或者,简单的方法是将 .9PNG 作为图像的来源,它适合任何 space 而不会扭曲。