Android开发 之 activity跳转动画(补间动画跳转)

来源:互联网 发布:韩庚 王凯 知乎 编辑:程序博客网 时间:2024/06/05 14:33

activity跳转动画(补间动画跳转)

先了解一些基本概念:
activity的显示是包括状态栏的,他们这件事并列关系,当你把状态栏隐藏的时候,activity布局会上移。所以activity动画并不影响状态栏。
activity的动画效果可以在两个地方设置:主题属性中;activity打开或者关闭的时候通过代码设置。
主题中:
 <item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>
这个属性设置了一个系统定义的切换动画,也是默认的。当然也可以自己定义动画,例如:
<style name="AppTheme2" parent="Theme.AppCompat.Light.NoActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowAnimationStyle">@style/activityanimation</item>    </style>    <style name="activityanimation" >        <!--<item name="android:activityOpenEnterAnimation">@anim/activity_in</item>-->        <!--<item name="android:activityOpenExitAnimation">@anim/activity_out</item>-->        <!--<item name="android:activityCloseEnterAnimation">@anim/activity_in</item>-->        <!--<item name="android:activityCloseExitAnimation">@anim/activity_out</item>-->        <item name="android:windowEnterAnimation">@anim/activity_in</item>        <item name="android:windowExitAnimation">@anim/activity_out</item>    </style>
在activityanimation中有两种方式,其实这两中都是可以实现效果的。有一个进入动画和退出动画,是指当前要挡开的activity动画,和当前要退出的activity动画,这点要注意。所以当你给你一个activiy设置这些动画的时候,你会发现退出的时候是没有效果的。就是因为这里设置的退出动画时上一个场景要退出的activity动画。其实这里很复杂的,又是系统会判断上一个activity要不要执行这个退出动画的,当你要打开的activity设置了半透明模式的时候,上一个就不执行动画了。

为了解决这个问题需要在代码中去设置退出动画效果。在start和finish的后面加上下面代码:
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
第一个参数动画就是要打开进入的activity动画,第二个就是要退出的activity动画,当然两个参数都是设置为0就是不执行任何动画,包括系统默认的动画效果。




原创粉丝点击