Android:正在编译要在可绘制文件夹之外使用的9补丁文件?

问题描述 投票:5回答:2

我需要从drawable文件夹外部加载9补丁文件。这样一来,我的应用程序便可以从服务器下载新皮肤。我发现制作.apk时会编译存储在drawable文件夹中的9补丁图像。从资产文件夹读取的完全相同的文件没有9修补程序块。因此,制作.apk的行为是在可绘制文件夹中而不是在Assets目录中编译源9补丁文件。

我如何自己编译一个9补丁文件,以便可以将其安装在资产目录中?是否有一个(批处理)工具可以将源代码转换为带有9个补丁的块的编译版本?我真的非常希望不必使用Eclipse / Ant来构建.apk,然后尽可能地将其拆开以提取编译的9补丁文件。

目前,我只是想能够从资产目录中读取(例如,每个皮肤都有一个子目录),以保持简单。下一步是编译源映像,以添加到9修补程序块中。之后,我会担心会即时下载到/ data文件夹-如果我无法编译9-patch文件,那么增加服务器端的工作量毫无意义。

我需要从drawable文件夹外部加载9补丁文件。这样一来,我的应用程序便可以从服务器下载新皮肤。我发现存储了9张补丁的图像...

android compiler-construction nine-patch
2个回答
10
投票

没有简单的方法可以执行此afaik。 9-patch编译是由aapt完成的,而且非常简单:它会丢弃黑色边框,并将其内容编码到PNG块中。编写一个执行类似操作的工具对您来说是微不足道的。请注意,您甚至不需要使用相同的格式。如果您查看文档中的各种NinePatch API,您会看到可以提交自己的“块”(对拉伸区域和填充进行编码。)此处解释了chunk byte []数组的结构:


0
投票

这是一种适用于我的情况的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.