当应用程序支持多种语言或主题时,切换语言或主题通常需要重新启动 Activity 以重新加载配置。虽然 recreate 是一种常用的重建 Activity 方法,但它不支持像在 Activity 之间切换时那样使用过渡动画。特别是在切换 浅色/深色 主题时,由于缺乏过渡动画而显得很生硬。为了提升改善这一点,只能自己实现过渡动画以提供更流畅的用户体验。
参考文章:Change Theme Dynamically with Circular Reveal Animation on Android 实现
大致实现步骤: 大致分为以下几步:
- 将Activity设置为全屏
- 在Activity原有的布局顶部添加一个隐藏的ImageView
- 修改主题后保存状态并重建activity
- activity重启后通过保存的状态执行动画
实现效果: