这里以ActivityA跳转到ActivityB为例,总结三种Activity的跳转动画设置方法:
1、startActivity后加一句:overridePendingTransition(int enterAnim, int exitAnim)
2、使用startActivity(intent,bundle)方法,或ActivityCompat的静态方法startActivity(Context context,Intent intent,Bundle options),第三个参数里可以设置动画。
第三个参数设置动画使用ActivityOptionsCompat,如下图,它有个静态方法makeCustomAnimation,此方法获取ActivityOptionsCompat对象的同时可以把Activity的跳转动画参数传入,得到ActivityOptionsCompat对象后,通过toBundle()方法将其转为bundle即可。
具体使用:
这种方法在阿里路由设置页面跳转动画时也有用到:
阿里路由页面跳转设置动画:
顺便说一下,以上两种方法设置的是ActivityA进入ActivityB的动画,如果要设置ActivityB回退到ActivityA的动画,需重写ActivityB的finish方法:
3、使用主题,这种方式可以设置app内所有使用此主题的Activity的跳转动画
这样,ActivityA跳转到ActivityB、ActivityB回退到ActivityA就无需再代码设置动画了,但是这种方法只对android 21以下的手机可行。
ActivityA跳转到ActivityB、ActivityB回退到ActivityA的相关动画文件:
最后看下效果: