android – 更改应用主题而无需重新创建活动

android – 更改应用主题而无需重新创建活动,第1张

概述我有一个自定义主题,Theme.AppCompat.DayNight.NoActionBar作为父,具有白天和夜晚模式的资源. 在文档中,提供了一种更改主题的方法,除非重新创建当前活动,否则主题将仅在下次启动活动时更改. 另一方面,Twitter和Pocket更改主题而不重新创建用户所处的活动. 我怎样才能实现这一目标? Twitter and Pocket on the other hand c 我有一个自定义主题,theme.AppCompat.DayNight.NoActionbar作为父,具有白天和夜晚模式的资源.

在文档中,提供了一种更改主题的方法,除非重新创建当前活动,否则主题将仅在下次启动活动时更改.

另一方面,Twitter和Pocket更改主题而不重新创建用户所处的活动.

我怎样才能实现这一目标?

解决方法

Twitter and Pocket on the other hand change the themes without recreating the activity the user is on.

你怎么知道的?如果您正确处理已保存状态并提供看起来不像更改窗口的动画,则可以使活动娱乐看起来足够好.事实上,你可以让它看起来很好,你甚至不会意识到重建的活动.

运行adb shell dumpsys活动在Twitter中切换夜间模式之前和之后提供以下输出:

ResumedActivity: ActivityRecord{40c4156 u0 com.twitter.androID/com.twitter.app.main.MainActivity t11398}ResumedActivity: ActivityRecord{adca640 u0 com.twitter.androID/com.twitter.app.main.MainActivity t11399}

请注意,活动哈希代码已更改 – 活动确实已重新创建.这适用于最近版本的Twitter和2016年11月9日发布的Twitter 6.22.1.

改变主题是一项非常重要的任务.您必须遍历整个视图层次结构并更改所有背景颜色,文本颜色,涟漪(祝您好运),并且您必须确保将来对getResources().get *的任何调用都将返回正确的资源.

另一方面,您可以调用Activity.recreate()并让系统执行已编程的 *** 作.

之后,您可以调用Activity.overrIDePendingTransition(…),其中包含一些不会更改窗口大小和位置的动画.有更多方法可以设置窗口过渡的动画.

总结

以上是内存溢出为你收集整理的android – 更改应用主题而无需重新创建活动全部内容,希望文章能够帮你解决android – 更改应用主题而无需重新创建活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存