知乎安卓客户端夜间模式切换动画是如何实现的?

切换动画十分漂亮
关注者
154
被浏览
11268

3 个回答

泻药

@赵天一 同学过度分析了。没那么复杂,也没有第一阶段第二阶段。
知乎 Android 客户端的夜间模式是用 Android 本身的 Theme 实现的。动画的实现就是在 setTheme(...) 之前截图,然后在 setTheme(...) 之后把之前截好的图 Alpha 渐隐掉就好了。

就是这么简单
从来没用过这个,所以我专门去试了试。
先上两个对比图,让不了解的同学直观的看一下这两个模式的区别。
主要变化是这么几点:
正常模式是白底黑字,夜间模式黑底白字,ActionBar本来是蓝色,变成了黑色。
实现这个切换并不难,最简单的办法就是用代码直接修改ActionBar的颜色以及文字颜色。至于黑底直接修改这个Activity中一个底层Layout背景色就OK。
可是,这只是一种实现方法,我并不能确定。
我录了一段视频,截张图给大家看……
慢放了10倍,截到这张黑变白的图
两个模式切换的过程中,文字和背景发生了变化,但是头像和左侧的赞同并没有改变,也就是说,并不是使用了ImageView做遮罩,而是直接改变了Layout背景和文字的颜色。
而且其变化过程如下:
白色字→灰色字→黑色字
黑色背景→灰色背景→白色背景
而且在某一时刻,背景和字是同一颜色:
所以颜色变化动画应该是两部分,第一阶段变化到灰色,然后开启第二阶段,变化至最终色。

问题中觉得动画漂亮,大概也是因为这个分段变化比线性变化更加和谐吧。

…………………………………………………………………………………………………………
事实证明,还是我想太多了……_(:з」∠)_正确答案请看朱向东同学的答案~
为什么?