我正在学习Android UI并且不清楚为什么人们使用九个补丁,当你可以使用矢量图形时,因为它们是可扩展的,没有任何像素降级。我是Android的初学者,所以我希望我在这里没有遗漏任何东西,但似乎更容易构建矢量图形并使用它们。您不需要特殊的编辑器来构建它们。
任何人都能解释使用9-patch over vector的优势吗? (不要只解释九补丁的优点,因为这已经在StackO上完成了,而是向量没有的优势)。因为看起来Android推荐九补丁。感谢。
答案 0 :(得分:16)
在矢量图形中,当我们将它设置为任何背景时,所有边都是缩放或拉伸,而在9-patch中,我们可以定义哪些边可以缩放或拉伸,因此在运行时只有我们将其设置为在9-patch中缩放的那些边尺度工具。
来自this的- >使用9补丁图像的优点是,当使用它作为背景时,图像不会在不同的屏幕尺寸中拉伸和松散比例。中心的“补丁”将保持原样,“边框”补丁将被拉伸以适应屏幕/视图大小。
假设你有这个形象。
和一个填充父宽度的按钮。如果你将这个图像设置为按钮背景,它将完全缩放,你的图像变得模糊(平均t将扩展到按钮宽度),它看起来不会很好。所以你定义的9路径工具可以在线缩放图像的某些部分,如果宽度是填充父级则。不要缩放整个图像。假设我们在t之后设置(在图像中)。缩放整个区域,因此不会变得模糊。所以这将使你的按钮变好。你明白了我的意思.. :)
将图像9补丁并设置为按钮背景后。你的按钮看起来像这样。
而不是t(在图像中)。整个区域扩展并填充按钮宽度。
答案 1 :(得分:4)
想象一个带圆角的按钮。你如何扩展它?如果你只是水平缩放它,你将有椭圆角,这将是丑陋的。
这就是9补丁的用途。
答案 2 :(得分:3)
我讨厌9个补丁。在做我的作品时我很注意。我甚至不使用photoshop。我和插画家一起去。 我在导出我的艺术品时做的一切正常,我曾经用疯狂的放大来做我的9个补丁,也许在photoshop中检查错误的像素...... ** 悲伤的小号 **当放在视图上时,如果我使用了一些微妙的圆角,如6px或10px,并且中风在mdpi看起来很糟糕。
所以我通过嫁给两个来解决我的问题。我编写了自己的9patch,它使用了矢量。 :)
一切看起来都被小耶稣所感动。完美的角落,笔画,最重要的是,你可以使用一个资产来获得所有的屏幕尺寸,密度,当然,没有更透明的边框,邪恶的错误,因为9patch不会向内伸展,等等。
我也使用矢量图标。虽然有时会出现各种影响的问题,但如果您阅读有关如何避免它们的内容,这些影响很小并且很容易避免。
祝大家好运!
这是一个非常基本的例子。
你可以做任何你喜欢的事情。由于svg对应用程序的性能影响,首次运行时[或当用户更改外观选项时,我希望将新生成的位图保存为png,如果可能的话。
你不会再得到两个世界中最好的"比这个。
答案 3 :(得分:1)
你可以定义9个补丁图像上的内容,这意味着(例如)文本将始终放在该特定区域,我想你不能在矢量图像中这样做。 Android内置支持9路径,但对于矢量,您必须使用库。
答案 4 :(得分:1)
9-patch渲染易于实现且高效。如果您的图像可以通过拉伸水平或垂直线(例如按钮或矩形图标)进行缩放,则使用9补丁。如果您有一些图标不能很好地扩展,那么创建不同分辨率的多个版本并使用Android的资源管理来处理它。这两种方法都比矢量图形更容易,更有效。
如果您要渲染大图像或场景,并且您不想占用位图的大量空间,那就是当您开始考虑矢量图形时。