android - Android 上的可下载主题

标签 android resources themes

我目前正在研究在我的应用程序中添加对可下载皮肤/主题的支持的可能性。 由于无法在运行时更改 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);

在与这种“远程”加载相关的其他方法中。然而,这些都不起作用

似乎从另一个包加载资源只适用于“直接”资源,如可绘制对象或字符串。 我的理论是样式和主题与引用一起工作,因此系统无法在当前上下文中应用这些引用。

问题是:可以用这种方法还是类似的方法来做到这一点?

在此之后,还有另一种方法......完全绕过 Android 资源管理器并以编程方式管理所有内容。 我在这里主要关心的是性能,所以有人知道在 Android 应用程序上预编译资源做了什么样的优化吗?还是在运行时?

最佳答案

我即将开始一个具有类似功能的项目。我一直在尝试以编程方式更改颜色和可绘制对象,尽管它很麻烦,但效果很好。

我无法真正评论性能,因为我的研究应用程序很小。我成功地使用了布局背景、按钮状态和带有状态的微调器/ ListView 背景。对以编程方式设置背景和大型 ListView 的任何体验感兴趣!

关于android - Android 上的可下载主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21602498/

相关文章:

android - Android中如何绑定(bind)React Native的图片资源?

kubernetes - Powerlevel9k 中自定义提示元素的动态背景颜色

android - 防止相机保存文件,直到我在 Titanium SDK 中完成所有处理

android:layout_marginRight 属性不适用于 RelativeLayout

android - 在列表已经更新和绘制后,如何为单个项目(条目)设置动画?

java - 背压时 Intent 未清除, "on create"中的项目不断堆叠。安卓

java - 在小程序中加载属性文件

android - 避免本地化资源开销

css - CSS变量的优点和缺点是什么?

css - 在附加文件中覆盖 CSS?