关于 Android 开发中 transitionName 设置的一些思考

发布于 2022-04-18  48 次阅读


最近在搞安卓 App UI 的开发,于是不可避免的接触到了Activity Animation这个十分加逼格的玩意,但是网上关于这方面的中文教程几乎清一色的半桶水+互抄,所以我这个半桶水一看,心想:

我日,都这么说啊,那就这么写准没错

于是就照着文章磕磕绊绊开始写窗口过渡动画了,最后结果呢也还真实现了,说明这些文章里的代码是“能用”的。

但是在 Google Apiandroidx.core.app.ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElement, sharedElementName)中,为什么只需要提供一个当前窗口的sharedElement,下一个窗口的组件就不用呢?那自然是因为下一个窗口还没创建,哪来的实例化View对象嘛。那再接着想,这个sharedElementName是不是用来暂时指代下一个窗口的实例化View对象的呢?如果是这样的话,那在本窗口设置transitionName有意义吗?这个Api的意思看着好像是将本窗口的sharedElement通过动画过渡到下个窗口的sharedElementName啊?如果还需在本窗口设置transitionName的话,那提供sharedElement的意义又是什么呢?

于是抱着试一试的心态,把本窗口的transitionName都给删了,发现真的不影响动画!

所以结论:transitionName只需要在下一个窗口中设置,因为下一个窗口暂未实例化,需要一个用来标定目标的东西,这个参数就是干这个的,在本窗口设置并没有任何意义。

但是在Google的开发者文档里面,居然也是说需要两边都设置,这...难道我的猜想错了,那提供sharedElement的意义是什么嘛?

file

关于本篇博客的相关代码,可以前往WankkoRee / EnableWebViewDebugging - commit[fd32399]: "fix: 重大改版中,修正了不必要的过渡名称设置(网上的水货文章害人不浅.jpg)"


The End