将资源/文件分隔到不同的apk以进行换肤

时间:2012-01-19 11:04:55

标签: android file-io themes

我想让我的应用程序有几个皮肤。我的主要目的不是让用户改变皮肤,而是让我为每个顾客定制皮肤。

通过使用样式和主题,我可以将蒙皮信息与布局分开。它的作用就像一个魅力,但需要将所有皮肤及其所有资源(包括重量级位图)包含在应用程序中,这似乎浪费了更多皮肤创建的宝贵空间。

有一种方法可以制作一个自动构建(ant)脚本并让它决定要包含哪些内容,但由于某些其他原因,它不是首选。

我在市场上看到过几个使用独立主题文件的应用程序(可单独下载和安装),所以我猜测可以将这些信息移动到单独的APK中。

我到目前为止,让我的应用程序和皮肤提供程序apk具有相同的UserID,以便彼此有更多的免费访问权限,但仍然不知道如何获取资源。

内容提供商可能是一个解决方案,但是需要将布局信息从XML转移回代码并且有一些带有一些性能问题的加号层,而这些问题并不适用于主要的视觉效果。

此问题的最佳做法是什么?

一个更重要的信息:我必须使用API​​级别7(2.1),因此仅适用于更高级别API的解决方案超出范围。

1 个答案:

答案 0 :(得分:1)

    private static Resources getThemeResources(String themePackage, Context context) throws NameNotFoundException {
    try {
        return [context.getPackageManager().getResourcesForApplication(themePackage);][1]
    } catch (Exception e) {
        return null;
    }
}

这将为您提供指定apk的资源。 themePackage应该是您尝试访问的主题的完整包。 context是调用者的上下文,即应用程序的上下文。