我目前正在调查在我的应用程序中添加对可下载皮肤/主题的支持的可能性。 由于res文件夹无法在运行时更改,我正在寻找替代方案,并已得出一些结论。
我尝试使用主应用程序访问资源的2个应用程序来自辅助应用程序(具有不同的样式/布局/主题以及匹配的名称),方法如下:
Resources res = getPackageManager().getResourcesForApplication("org.example.foo");
res.getIdentifier("AnotherTheme", "style", "org.example.foo");
或
Context externalContext = createPackageContext("org.example.foo", Context.CONTEXT_IGNORE_SECURITY);
Theme externalTheme = externalContext.getTheme();
getTheme().setTo(externalTheme);
与此类“远程”加载相关的其他方法。但是这一切都没有效果。
似乎从另一个包加载资源仅适用于“直接”资源,如drawable或字符串。 我的理论是样式和主题使用引用,因此系统无法在当前上下文中应用这些引用。
问题是:这可以通过这种方法或类似方法来完成吗?
在此之后,还有另一种方法......完全绕过Android资源管理器并以编程方式管理所有内容。 我主要关注的是性能,所以有人知道在Android应用程序上预编译资源的优化程度是多少?还是在运行时?
答案 0 :(得分:0)
我即将开始一个类似功能的项目。我一直在玩编程方式改变颜色和绘图,虽然它是一个小提琴,它运作良好。
我无法对性能发表评论,因为我的研究应用很少。我成功地使用布局背景,按钮状态和状态的微调器/列表视图背景。对编程设置背景和大型列表视图的任何体验感兴趣!