Content Transition
深入理解Content Transition
深入理解共享元素变换(Shared Element Transition)
之前有了解过transition,可以设定activity的转换动画。但是总觉得有点奇怪。因为官方api定制的activity转换动画用来设置到transition上的就只有3个,slide,explode,fade,并且这些动画是分别(并且分开)作用到子view上的。
Android Transition
后来了解到,这个东西实际上叫content transition,也就是说,在应用之前,会遍历所有子view,然后分开设置transition。正如上面链接里面看到的。
如果要设置当前viewgroup应用transition的时候作为一个整体进行,可以在layout里面设置这么一个属性
android:transitionGroup="true"
那么,在应用的时候就不会遍历寻找子view,而是对整个viewgroup应用transition。
注意,
有一个问题。如果存在actionbar,那么依然会和主要界面分离开,分别引用transition。如果用toolbar替换之,那么就不会分离了。
但是,最上面的statusbar,也就是显示点亮,信号,通知的那一条,也会分开引用transition。需要在transition中设置exclude才能屏蔽之。
slide.excludeTarget(android.R.id.statusBarBackground,true);
像这样。
activity transition
还有一个比较古老的解决办法。
Android 2.0 里面增加了一个方法
void overridePendingTransition (int enterAnim, int exitAnim)
看名字就知道,设置的是进入和退出动画,用指定的资源文件填充了默认情况下的动画效果。
注意一点,这个方法必须紧跟在startActivity()
或者finish()
方法后面调用,才有效果。
而这里面设置的两个anim,就是用xml文件定义的animation。
Android实现Activity界面切换添加动画特效的方法
在style里面设定:
Android 设置 Activity 切换动画