主要观点总结
本文介绍了一个在Android应用中切换主题时,使用过渡动画重建Activity的方法。包括前言、效果、步骤和代码实现。
关键观点总结
关键观点1: 前言
介绍了切换主题时遇到的问题,以及动态改变主题的常见方法。
关键观点2: 效果
展示了Demo实现的效果。
关键观点3: 步骤
详细描述了实现的步骤,包括设置Activity为全屏显示,添加隐藏的ImageView,修改主题后保存状态并重建activity等。
关键观点4: 代码实现
提供了相关的代码实现,包括BaseActivity、MainActivity、AppGlobals、RecreateTransition等类的代码。
文章预览
1 前言 当应用程序支持多种语言或主题时,切换语言或主题通常需要重新启动 Activity 以重新加载配置。虽然 recreate 是一种常用的重建 Activity 方法,但它不支持像在 Activity 之间切换时那样使用过渡动画。特别是在切换 浅色/深色 主题时,由于缺乏过渡动画而显得很生硬。为了提升改善这一点,只能自己实现过渡动画以提供更流畅的用户体验。 一开始,我考虑在保存状态时使用 onSaveInstanceState 将 activity.window.decorView 绘制成位图并保存到 outState 中。然后在 onCreate 中读取该位图,并通过 WindowManager 在整个屏幕上显示一个铺满的 ImageView,将位图显示在 ImageView 上并执行动画。然而,我尝试后发现 WindowManager 的显示会比 Activity 晚一些,导致出现了闪屏的情况。 在我继续思考的过程中,偶然发现了一篇博客: Change Theme Dynamically with Circular Reveal Animation o
………………………………