【问题标题】:9patch for a lot of resources without losing quality9patch 大量资源而不损失质量
【发布时间】:2012-07-13 06:02:17
【问题描述】:

我的设计师在 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 的线也会被缩放,并且不会再测量 1 px。

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

【问题讨论】:

  • 这是一个很好的问题 - 一个 Photoshop 插件会很棒,但不存在 afaik...

标签: android nine-patch adobe-illustrator


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 就像我说的,我有 20 - 25 个按钮,需要 9 个补丁,用于每种状态和每种密度类型。这是一个大项目,设计可能会有所发展,所以我需要比这种方法更快的东西。关于 1 px 线的东西,他在矢量中工作。
  • 如果您在同一个应用中有 20-25 种样式的按钮,除非您正在执行某种用户确定的主题,否则您可能需要重新考虑...
  • 嗯,按钮 + 其他需要 9 个补丁的组件。是的,应用程序中有两种类型的用户,主题有所不同。以及大约 80 项活动
  • 仍然看起来很高——我会想象每个用户最多有 3 种样式的按钮,否则我不知道你如何在你的应用程序中保持统一的感觉,但这就是你而不是我。祝你好运!希望你能找到一个合理的程序来完成它。
【解决方案2】:

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

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

希望这会有所帮助...

【讨论】:

  • 谢谢,我有时也用这个。但是对于像系统按钮这样更复杂的图像,我们需要在每个密度文件夹中提供 9-patch,而它会显得模糊。
【解决方案3】:

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

我的解决方案:

1. 在 draw9patch 中表现出色

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

【讨论】:

  • 我已经使用 draw9patch 工具制作了大量的 9-patch,我认为我们不会花费数小时来学习如何使用它,它非常简单,但我们会花费数小时来实际使用它。 ..尝试其他答案中给出的工具之一,您会看到。此外,“draw9patch 图像应该很棒,因为你真的只需要做一次,它们适用于所有密度,因为它们会相应地拉伸。”是错的。 9-patch 并不能解决密度“问题”,如果您不在每个密度文件夹中提供 9-patch,您的 9-patch 将被缩放,您会得到伪影或模糊图像。
【解决方案4】:

这是一个不错的九补丁编辑器,为我节省了大量时间:download jar linksome description。最大的特点是“复制粘贴”功能,可以非常快地为不同状态的图像提供相同的可拉伸区域。

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

【讨论】:

  • 我不知道这个软,我觉得它很棒。但是 better9-patch-tool 也具有所有这些功能,以及允许我处理一个图像并将其影响到图像文件夹的批处理功能。除此之外,我更喜欢你工具的 GUI。
  • 是的,我买了 better9patch-tool,但根本不喜欢它... GUI 很糟糕,我讨厌这些线条是连续的,而不是逐个像素的(因此不可能有一个通常需要的像素可拉伸区域)。这个更好看
【解决方案5】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2021-11-29
    • 2013-10-18
    相关资源
    最近更新 更多