9

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

到目前为止,我一直在使用 SDK 中的 draw9patch 软件来生成 9patches。它仍然有效,但说真的,我希望有更好的方法。如果在我的项目中我有 20 个按钮,具有 3 或 4 个状态,以及 3 种密度类型,我无法想象这个解决方案需要多少小时。

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

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

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

那么有没有一种解决方案可以制作 9 个补丁,而不损失图像质量,并且不需要花费 10 个小时呢?

4

5 回答 5

2

My solution is to spend a ton of hours learning draw9patch, and then it won't take hours to make the buttons. I did this myself, and suffered, but draw9patch is a really simple way to do it, and each image (for buttons) takes me no more than 15 seconds. draw9patch images should are great because you really only have to do them once, and they will work with all densities, as they will stretch accordingly. If you have text in your images then you have another problem. This is frowned upon because you lose the ability to translate your application with a simple stings.xml

My solution:

1. Get awesome at draw9patch

2. Don't use image's with text. draw9patch can be used to center the text of a button correctly and this will increase the ability of your app to be used in different languages. Something that can easily boost your download/sales. This is important, because even if you give your app the ability to target one more language (let's say... Spanish) then it really makes that target audience happy.

于 2012-07-23T22:09:36.600 回答
2

这是一个很好的九补丁编辑器,它为我节省了大量时间:下载 jar 链接一些描述。最大的特点是“复制粘贴”功能,可以非常快速地为不同状态的图像提供相同的可拉伸区域。

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

于 2012-07-24T06:55:51.557 回答
0

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

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

希望这可以帮助...

于 2012-07-18T01:12:08.077 回答
0

那么有没有一种解决方案可以制作 9 个补丁,而不损失图像质量,并且不需要花费 10 个小时呢?

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

步骤#2:draw9patch用于为一种密度的一张图像获取正确的规则

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

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

于 2012-07-24T13:38:50.037 回答
0

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

完成此操作后,您可以快速绘制拉伸线和填充线。如果您要为 100 张图像执行此操作,这会有点痛苦,但每个项目只需执行一次。我无法想象有很多项目需要这么多 9 个补丁才能花费这么多时间......

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

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

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

于 2012-07-17T08:55:47.517 回答