专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
今天看啥  ›  专栏  ›  鸿洋

Android打造丝滑的Activity recreate重建(主题切换)过渡动画

鸿洋  · 公众号  · android  · 2024-07-09 08:35
    

主要观点总结

本文介绍了一个在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 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览