如何允许第三方应用在Android上为我的应用设置主题?

时间:2011-05-26 04:47:50

标签: android user-interface themes skins

我在市场上的许多应用程序中都看到过这种功能,例如ADWLauncher。您安装了一个应用程序,然后您可以下载仅用于主题第一个应用程序的应用程序。我真的很喜欢在我制作的应用程序中这样做,但我不知道该怎么做。

最简单的解决方案是简单地将所有可能的主题包含到主应用程序中,然后根据其他应用程序的安装“解锁”它们。这是一个非首选的解决方案,因为添加更多主题将使应用程序更大,从而导致浪费空间。这也阻止了第三方提出自己的主题。

另一个解决方案是主题应用程序中的资源和类由vanilla app加载,但我不知道如何实现。

还有另一种方法可以实现吗?建议的机制是什么?任何意见都将不胜感激。

以前曾提出类似的问题,但没有回应:

https://stackoverflow.com/questions/3772440/android-how-to-allow-third-party-developers-to-skin-my-app

https://stackoverflow.com/questions/3771923/android-possible-for-one-app-to-provide-styles-themes-for-another-app

3 个答案:

答案 0 :(得分:0)

我也很好奇。我现在最好的猜测是确保你的所有UI控件都是可绘制的,而不仅仅是股票旋转器/滑块/等。在UI中使用drawable来显示图形,当你发布apk时,这些资源不仅应该是其他人可见但可变。再说一次,我不是百分百肯定,所以不要引用我那个哈哈。

答案 1 :(得分:0)

我一直在寻找一个如何做到这一点的例子,但据我所知,没有办法在软件包之间共享资源和代码。我能找到的最佳解决方案是让一个软件包通过ContentProvider为其他软件包提供资源。

答案 2 :(得分:0)

您可以使用此代码段

获取其他应用程序的资源
context.getPackageManager().getResourcesForApplication(String appPackageName);