我在市场上的许多应用程序中都看到了这种功能,比如ADWLauncher。你安装了一个应用程序,然后你可以下载只用于主题化第一个应用程序的应用程序。我真的很想在我制作的应用程序中做到这一点,但我不知道如何做到。
最简单的解决方案是将所有可能的主题都包含在主应用程序中,然后根据其他应用程序的安装情况"解锁"它们。这不是一个首选的解决方案,因为添加更多的主题会使应用程序变得更大,从而浪费空间。这也阻止了第三方提出自己的主题。
另一个解决方案是由香草应用程序加载主题应用程序中的资源和类,但我不知道如何实现这一点。
有没有其他方法可以做到这一点?建议的机制是什么?任何意见都将不胜感激。
类似的问题以前也被问过,但没有得到回应:
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
我对此也很好奇。不过,我目前最好的猜测是确保你的所有UI控件都是可绘制的,而不仅仅是股票微调器/滑块等。使用可绘制的控件来绘制UI中的图形,当你发布你的apk时,这些资源不仅应该可见,而且应该可由他人更改。再说一遍,我不是100%确定,所以不要引用我的话。
我一直在寻找如何做到这一点的示例,但据我所知,没有在包之间共享资源和代码的方法。我能找到的最好的解决方案是一个包通过ContentProvider为其他包提供资源。
您可以使用以下代码片段获取其他应用程序的资源
context.getPackageManager().getResourcesForApplication(String appPackageName);