9patch可以获得大量资源而不会降低质量

时间:2012-07-13 11:27:00

标签: android nine-patch adobe-illustrator

我的设计师在Illustrator上工作,并使用脚本导出mdpi,hdpi和xhdpi(以及iOS res)的所有资源。对于按钮和可伸缩图像,我正在寻找生成9个补丁的最佳解决方案。

到目前为止,我在SDK中使用draw9patch soft来生成9个补丁。它仍然有效,但严重的是,我希望有更好的方法。如果在我的项目中我有20个按钮,有3个或4个状态,并且有3种密度类型,我无法想象这个解决方案需要的时间。

解决方案是使用Asset Studio工具,但我不想提供我的xhdpi文件,并且为其他密度文件夹获取生成不佳的图像。我的目标是为每个密度获得像素完美的9个补丁。

我们还尝试将SVG文件用于可伸缩图像,但似乎Asset Studio不接受它们。

如果我的设计师试图直接在Illustrator中制作9patch,他就不能使用脚本导出,因为1 px线也会缩放,不再测量1px。

那么是否有一个解决方案可以制作9个补丁,而不会丢失图像质量,而且不用花费10个小时就可以了?

5 个答案:

答案 0 :(得分:2)

我的解决方案是花费大量时间学习draw9patch,然后制作按钮不需要花费数小时。我自己做了这个,并且受了影响,但是draw9patch是一个非常简单的方法,每个图像(按钮)花了我不超过15秒。 draw9patch图像应该很棒,因为你真的只需要做一次,它们将适用于所有密度,因为它们会相应地延伸。如果您的图像中有文字,那么您还有其他问题。这是不赞成的,因为你失去了使用简单的stings.xml翻译你的应用程序的能力

我的解决方案:

1。在draw9patch

获取真棒

2. 不要将图片与文字一起使用。 draw9patch可用于正确居中按钮文本,这将提高您的应用程序在不同语言中使用的能力。可以轻松提升下载/销售量的东西。这很重要,因为即使你让你的应用程序能够再定位一种语言(比方说......西班牙语),那么它确实让目标受众感到高兴。

答案 1 :(得分:2)

这是一个很好的九补丁编辑器,为我节省了大量时间:download jar linksome description。最大的特色是“复制 - 粘贴”功能,允许为不同状态下的图像提供相同的可伸缩区域。

我不认为有一些编辑器允许使用不同图像尺寸的作品,因为不同的屏幕尺寸可能会有显着差异。

答案 2 :(得分:0)

我通过在图像编辑器(Photoshop / Paint .NET)中打开每个图像9,然后在两个维度上将画布大小增加2来压缩我的9补丁生成。

完成此操作后,您可以快速绘制拉伸和填充线。如果你正在为100个图像做这件事,那会有点痛苦,但每个项目只需要做一次。我无法想象很多项目会有 许多9个补丁,因为它花了那么多时间......

如果您真的想简化过程,可以从9patch中删除填充指示符,并使用style属性将其添加到视图中...

  

如果我的设计师试图直接在Illustrator中制作9patch,他就不能使用脚本导出,因为1 px线也会缩放,不再测量1px。

这条线让我担心 - 你不应该将mdpi图像放大到hdpi,它们不会有任何意义。如果只有mdpi图像可用,它将使用它并在运行时自动缩放。

答案 3 :(得分:0)

我主要使用9个补丁来绘制按钮和其他视图的背景。其中大多数是单色背景,有一些2像素分隔符,其中一些是带分隔符的渐变。我将它们放在res \ drawable-nodpi文件夹中,这是一个特殊的文件夹,指示android不对其内容执行任何缩放。

到目前为止,我的预期结果完全没有问题。我的2个像素分隔符是从ldpi到hdpi分辨率的几个设备中的2个真实设备像素(不是密度像素),这就是我想要的。

希望这会有所帮助......

答案 4 :(得分:0)

  

那么是否有一个解决方案可以制作9个补丁,而不会丢失图像质量,而且不用花费10个小时就可以了?

步骤#1:编写一个脚本,从一个PNG获取9个补丁信息,并将其应用到另一个PNG,使用任意数量的PNG读取库,用于您喜欢的桌面编程语言

步骤2:使用draw9patch为一个密度的一个图像获取正确的规则

步骤3:使用脚本将这些规则应用于相同密度的状态的其他变体

步骤#4:对其他密度重复步骤2和3