九贴片与矢量图形

时间:2014-05-15 06:00:33

标签: android vector nine-patch

我正在学习Android UI并且不清楚为什么人们使用九个补丁,当你可以使用矢量图形时,因为它们是可扩展的,没有任何像素降级。我是Android的初学者,所以我希望我在这里没有遗漏任何东西,但似乎更容易构建矢量图形并使用它们。您不需要特殊的编辑器来构建它们。

任何人都能解释使用9-patch over vector的优势吗? (不要只解释九补丁的优点,因为这已经在StackO上完成了,而是向量没有的优势)。因为看起来Android推荐九补丁。感谢。

5 个答案:

答案 0 :(得分:16)

在矢量图形中,当我们将它设置为任何背景时,所有边都是缩放或拉伸,而在9-patch中,我们可以定义哪些边可以缩放或拉伸,因此在运行时只有我们将其设置为在9-patch中缩放的那些边尺度工具。

来自this

  - >使用9补丁图像的优点是,当使用它作为背景时,图像不会在不同的屏幕尺寸中拉伸和松散比例。中心的“补丁”将保持原样,“边框”补丁将被拉伸以适应屏幕/视图大小。

假设你有这个形象。

enter image description here

和一个填充父宽度的按钮。如果你将这个图像设置为按钮背景,它将完全缩放,你的图像变得模糊(平均t将扩展到按钮宽度),它看起来不会很好。所以你定义的9路径工具可以在线缩放图像的某些部分,如果宽度是填充父级则。不要缩放整个图像。假设我们在t之后设置(在图像中)。缩放整个区域,因此不会变得模糊。所以这将使你的按钮变好。你明白了我的意思.. :)

将图像9补丁并设置为按钮背景后。你的按钮看起来像这样。

enter image description here

而不是t(在图像中)。整个区域扩展并填充按钮宽度。

答案 1 :(得分:4)

想象一个带圆角的按钮。你如何扩展它?如果你只是水平缩放它,你将有椭圆角,这将是丑陋的。

这就是9补丁的用途。

答案 2 :(得分:3)

我讨厌9个补丁。在做我的作品时我很注意。我甚至不使用photoshop。我和插画家一起去。 我在导出我的艺术品时做的一切正常,我曾经用疯狂的放大来做我的9个补丁,也许在photoshop中检查错误的像素......  ** 悲伤的小号 **当放在视图上时,如果我使用了一些微妙的圆角,如6px或10px,并且中风在mdpi看起来很糟糕。

所以我通过嫁给两个来解决我的问题。我编写了自己的9patch,它使用了矢量。 :)

一切看起来都被小耶稣所感动。完美的角落,笔画,最重要的是,你可以使用一个资产来获得所有的屏幕尺寸,密度,当然,没有更透明的边框,邪恶的错误,因为9patch不会向内伸展,等等。

我也使用矢量图标。虽然有时会出现各种影响的问题,但如果您阅读有关如何避免它们的内容,这些影响很小并且很容易避免。

祝大家好运!

The same image, 9patched, kind of "offsets" the black outline of the buttons. so the strokes get misaligned.

这是一个非常基本的例子。

你可以做任何你喜欢的事情。由于svg对应用程序的性能影响,首次运行时[或当用户更改外观选项时,我希望将新生成的位图保存为png,如果可能的话。

你不会再得到两个世界中最好的"比这个。

答案 3 :(得分:1)

你可以定义9个补丁图像上的内容,这意味着(例如)文本将始终放在该特定区域,我想你不能在矢量图像中这样做。 Android内置支持9路径,但对于矢量,您必须使用库。

答案 4 :(得分:1)

9-patch渲染易于实现且高效。如果您的图像可以通过拉伸水平或垂直线(例如按钮或矩形图标)进行缩放,则使用9补丁。如果您有一些图标不能很好地扩展,那么创建不同分辨率的多个版本并使用Android的资源管理来处理它。这两种方法都比矢量图形更容易,更有效。

如果您要渲染大图像或场景,并且您不想占用位图的大量空间,那就是当您开始考虑矢量图形时。