【发布时间】:2015-03-04 02:23:04
【问题描述】:
我的目标是 API 级别 14+,所以我在我的应用中使用 Activity.recreate() 进行主题切换。效果很好,只是黑屏会闪烁大约 0.5 秒。
我曾经认为这里不可能提供更好的体验,直到我看到一个材料设计的应用程序,它通过淡入淡出成功地切换了它的主题。但是很不幸,我前段时间从手机上卸载了它,所以我记不起它的名字了。
我尝试过 Activity.overridePendingTransition(),它不起作用,我相信原因是 recreate() 调用很像配置更改,因此机制不同于完成和启动一个全新的活动。
(在试图找到那个应用程序时,我遇到了另一个神奇的主题切换应用程序,即使没有调用 recreate()。嗯......有人知道这个技巧是怎么做到的吗?)
Theme switching on the fly GIF
Who said themes were immutable? Changing the primary and accent colors on…
编辑:
我发现上面的 GIF 有点分散了原始问题的注意力,所以我把它变成了一个链接。
我最初的问题是,是否有任何方法可以通过适当的过渡来更改(切换)主题?
通过蛮力更改屏幕上的所有内容不是切换应用程序的主题;虽然看起来是这样,但它会导致很多问题。
很遗憾发现上面的 GIF 可能只是一个 hacky 蛮力攻击,但仍然感谢 @Emanuel Moecklin 指出这一点。
但我还是希望能有一个“(真正的)用过渡切换主题”的解决方案,或者有人告诉我 Activity.recreate() 不能动画,没有其他方法可以更好地切换主题。
【问题讨论】:
标签: android android-activity themes android-resources