如何在主题改变时制作圆形显示效果? (就像在 Telegram 或 VK 中一样)

How to make circular reveal effect when theme changed? (Like in Telegram or VK)

我在我的应用程序中使用 DayNight 主题。我有一个改变主题的按钮。在 VK 和 Telegram 应用程序中,有一个漂亮的显示动画,可以在不重新启动 activity 或类似的东西的情况下更改主题。

我曾尝试以不同的方式用 reveal animation implementation 做到这一点,但在某些情况下用 AppCompatDelegate.setDefaultNightMode(...) 它不起作用或效果不佳。所有显示动画的示例都是针对 ActivityA -> ActivityB,但我只需要更新主题而不启动任何 activity。

还有一件事:AppCompatDelegate.setDefaultNightMode 重新创建了我的 activity,所以我需要自定义主题更改实施吗?

主要问题:如何制作主题变化的动画?

示例:

Telegram (From Dark to Light)

Telegram (From Light to Dark)

VK (From Light to Dark)

VK (From Dark to Light)

由于 telegram 是一个开源应用程序,您可以找到代码 -> 第 3154 行:github。 似乎它将布局转换为位图并将其与现有的 imageView 一起使用来制作圆形显示动画