Appcelerator Titanium - 不要将图像拉伸到ImageView尺寸

时间:2016-02-08 17:16:33

标签: appcelerator appcelerator-titanium appcelerator-alloy

我的图片大小为1024x1024,我希望将它作为ImageView对象的背景。我将ImageView高度和宽度设置为设备的大小并加载图像 - 图像显示整个图像被挤压到给定的尺寸。

我希望看到的不是整个图像 - 我希望它可以缩放以显示它居中,并且图像的部分不适合屏幕显示。我的最终结果应该是设置高度和宽度,无论是一次性的都会溢出和隐藏。

如何设置图像不拉伸?

2 个答案:

答案 0 :(得分:3)

你要找的是剪裁的图像。使用视图与剪切打开和ImageView的组合可以最好地实现这种效果。

例如,我们将使用较大的image和下面的代码。

$ bc <<< "obase=16; 008"
8

请注意,我们已在父视图上启用剪辑,并使用它来定义我们希望在屏幕上呈现的所有内容的实际宽度。然后将ImageView与要渲染的图像的实际宽度/高度一起使用。因为我们没有设置top,left,right,bottom属性,所以ImageView会将其自身呈现在父视图中心,并隐藏其溢出。

这提供了所需的效果,如下图所示。

enter image description here

答案 1 :(得分:1)

我认为你的意思是ImageView的图像属性,而不是backgroundImage。如果您使用普通视图并设置backgroundImage,它将被拉伸。来自文档:

  

为此视图指定width或height属性将进行缩放   保持纵横比的图像,最大尺寸   不超过其父视图。

如果你想让图像居中,你可以将它放在View中,并将宽度/高度设置为最大值(或计算纵横比并相应地设置两个值),它将居中周围的View

XML

<Alloy>

    <Window >
        <ImageView id="img"/>
    </Window>

</Alloy>

JS

$.img.image = "/images/1.jpg";
$.img.width = 200;
$.index.open();

图像原始尺寸:1080x720。在应用程序内显示:200px宽度未拉伸且位于窗口中间(Android,Ti 5.1.2,设备上的TiShadow)