2012-01-13 68 views
1

我想在我的应用程序中使用附加的九个修补程序图像作为视图的背景(该图像来自android-15 sdk资源)。如图所示,图像在图像左侧有两个垂直点,图像上方有两个水平点,图像下面有一条水平线。这些图像中的点/线显示在我的应用程序中。Android:围绕九个补丁图像的点和线?

我将文件从sdk文件夹复制到资源目录中,并将可绘制资源设置为我的视图的背景。使用此图像作为视图的背景的正确方法是什么,使点/线不显示?

enter image description here

+0

这是一个** 9 **补丁图像,重命名为_filename.9.png_,然后再试一次! – 2012-01-13 12:49:43

+0

+1。我有一个类似的问题得到了这个职位的回答。 – Jeroen 2013-03-22 16:47:49

回答

2

线条和圆点是什么使这个NinePatch。左侧和顶部的点定义了可以拉伸的区域,而另外两条线定义了在NinePatch内绘制东西的边界框。

如果您将这样的图像设置为背景 - 那些线条将不会显示。要自己创建这些图像,可以使用android sdk中的draw9patch工具(http://developer.android.com/guide/developing/tools/draw9patch.html)。

要记住的一件事是,NinePatch图片的文件类型必须是,例如:image.9.png。否则,这些线将被绘制。

+0

谢谢,点/线显示,因为当我重命名文件,我删除了0.9。 – ab11 2012-01-13 13:52:57

0

你使用位于你的工具文件夹中的draw9patch应用程序?这个应用程序可以用来简单地创建一个九个补丁图像。

+0

不,这9个补丁映像包含在sdk中。我将它复制到我的应用程序的资源文件夹中以用于我的应用程序。我编辑了我的问题,以澄清 – ab11 2012-01-13 12:39:17

3

通过可伸缩的补丁,您基本上可以告诉Android您想要重复的图像中哪些行和像素列。当您拉伸标准图像时,有两种可能性:一种是按比例缩放,但由于插值仍然失去锐度;二,它不成比例地缩小,不仅失去了锐度,而且失去了它的形状。不成比例的缩放的下面是一个例子:

enter image description here

所以黑线的目的,它告诉Android的图像中的哪个区域是安全的重复。顶角定义了它可以拉伸的列,而左角定义了可以拉伸的行。底部和右侧角落只是定义了实际的内容区域(例如允许按钮放置文本的位置),您可以预留额外的空间来填充框架。在下面的图片中,您可以看到框架外侧的两个黑色像素定义了图像上的行,而顶部的一个定义了一个列。

enter image description here

及以下,这显示了一个9修补伸出到各种尺寸的结果。如果它被放大到更宽,定义的可伸缩列左侧和右侧的图像的一半将与新大小的左侧和右侧对齐,并重复定义的列以填充其间的空间。定义的行也会发生同样的情况;如果你使用倍数(我不相信你可以使用2个以上的拉伸行/列),它只是用它们均匀地填充空间;在这种情况下,我用它来保持梯度均匀分割中间。

enter image description here