Activity 转场动画
Activity转场动画是是通过overridePendingTransition(int enterAnim, int exitAnim)
实现的。
这个方法是API Level 5 加入的。
这个方法在startActivity(Intent)
or finish()
之后被调用,指定接下来的这个转场动画。
方法的第一个参数:enterAnim
,是新的Activity
的进入动画的resource ID;第二个参数exitAnim
,是旧的Activity
(当前的Activity)离开动画的resource ID。
所以这两个参数的对象是两个Activity
。如果上面两个参数没有动画要设置,则用0作为参数。
如果是单纯的只指定一个进入或者离开动画的话,用0作为没有动画的参数可能有问题,这时候需要单独写一个keep
动画,例子如下:
|
|
Fragment 转场动画
- 标准的转场动画
可以给Fragment指定标准的转场动画,通过setTransition(int transit)
方法。
该方法可传入的三个参数是:
TRANSIT_NONE
(没有动画)
TRANSIT_FRAGMENT_OPEN
(打开动画)
TRANSIT_FRAGMENT_CLOSE
(关闭动画)
TRANSIT_FRAGMENT_FADE
(淡入淡出动画)
- 自定义动画
自定义转场动画是通过setCustomAnimations()
方法,因为Fragment
添加时可以指定加入到Back Stack
中,所以转场动画有添加、移除、从Back stack
中pop
出来,还有进入四种情况。
注意setCustomAnimations()
方法必须在add
、remove
、replace
调用之前被设置,否则不起作用。此外,不管是自定义动画还是标准动画对于hide
,show
都会起作用。
自定义动画氛围两种情况,一种是不使用V4包的情况下动画是属性动画,使用V4包的时候动画是普通的View动画。
自定义动画有两个方法,分别是
setCustomAnimations(int enter, int exit, int popEnter, int popExit)
setCustomAnimations(int enter, int exit)
enter
-Fragment
打开的动画,主要是对于新加进来的Fragment
执行动画。
exit
-Fragment
退出动画,主要是对于关闭Fragment
执行动画。需要注意的是当调用replace
的时候,前一个Fragment
也会执行退出动画。
popEnter
-当调用addToBackStack()
方法后,当前的Fragment
退出返回上一个Fragment
,上一个Fragment
就是popEnter
,这时候它就会执行这个动画。这个动画对于新创建的Fragment
无效。
popExit
-当前Fragment
在back stack
中,并且出栈的时候会执行popExit
动画。
对于使用属性动画的Fragment,动画资源需要放到res/animator
目录下。使用View动画的,动画资源直接放到res/anim
下就可以。
事例
- 使用自定义动画
|
|
- 使用标准动画
|
|