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

时间:2015-08-04 18:18:14

标签: android image imageview scale android-screen

这是一个概念性的Android问题

假设我要将此静态图像加载到ImageView中 - enter image description here

假设图像是600px×200px。(宽度高度)

说我的图像视图我尝试将其装入300 px×200px(宽度高度)

我只想按高度缩放并剪切图像的左端,以使图像适合图像视图。此外,如果不需要进行切割(已经适合),我也不想将其切断。

所以最终ImageView(如果它是300像素×200像素)会保留这个图像

enter image description here (基本上F所以不会被扭曲)

我看了Scale To Fit但是没有任何比例类型似乎达到了这种自定义效果。有谁知道我会怎么做?在我的情况下,我不想保持原始的宽高比。

2 个答案:

答案 0 :(得分:1)

您应裁剪位图,使其始终适合您的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
}

答案 1 :(得分:0)

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

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

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

或者,简单的方法是将.9PNG作为图像的来源,它可以适应任何空间而不会失真。