美文网首页
activity切换动画

activity切换动画

作者: 无语_ae67 | 来源:发表于2018-06-29 09:14 被阅读0次

API 21(5.0)后系统内置了Activity之间的切换动画

Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);
//设置动画
overridePendingTransition(R.anim.enter_anim,R.anim.exit_anim);

使用内置Activity之间切换动画代码步骤

Activity之间的切换期间,对于某个Activity来说,无非就是“进入”和“退出”两种情景下的动画。而“进入”分为“第一次进入Activity”和“返回当前Activity”这两种情况。另外系统还提供了一种动画,即共享元素,这是让两个Activity中的View有个过渡切换的效果。执行动画的状态如下所示:

enter:用于决定第一次打开当前Activity时的动画
exit : 用于决定退出当前Activity时的动画
reenter: 用于决定如果当前Activity已经打开过,并且再次打开该Activity时的动画
shared elements:用于决定在两个Activity之间切换时,指定两个Activity中对应的View的过渡效果

1.首先在setContentView()之前执行,用于告诉Window页面切换需要使用动画

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

2.接下来就是加载切换动画
其中R.transition.explode就是要执行的动画,是在res/transition目录下的xml文件,我们使用的是系统内置的Explode效果动画,关于怎么去写explode.xml,我们接下来小节去讲解。

  Transition explode = TransitionInflater.from(this).inflateTransition(R.transition.explode);1

3.告诉Window,当前的Activity在什么情况下使用上面的动画
上面我们创建好了切换动画,接下来就是要告诉当前窗口,在什么情况下去使用动画效果啦,你可以根据你的需求在不同的切换情景中选择不同的效果:

//退出时使用
getWindow().setExitTransition(explode);
//第一次进入时使用
getWindow().setEnterTransition(explode);
//再次进入时使用
getWindow().setReenterTransition(explode); 

当然了,你也可以不使用代码的方式,直接在你使用的主题

<item name="android:windowExitTransition">@transition/explode</item>
<item name="android:windowEnterAnimation">@transition/explode</item>
<item name="android:windowReenterTransition">@transition/explode</item>123

4.调用startActivity
跟我们之前使用的startActivity(Intent intent);不同,这里多了一个参数Bundle,我们是先通过makeSceneTransitionAnimation函数创建一个ActivityOptions对象,再将其转为Bundle对象:

startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this).toBundle());1

整体使用步骤就是以上这些,是不是很简单?接下来我们去学习如何使用内置动画~

相关文章

网友评论

      本文标题:activity切换动画

      本文链接:https://www.haomeiwen.com/subject/eopoyftx.html