欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

安卓activity切换动画

程序员文章站 2022-05-05 14:23:02
...

方式一:overridePendingTransition (int enterAnim, int exitAnim)

从Android2.0开始在Activity增加了一个方法overridePendingTransition (int enterAnim, int exitAnim)其中:enterAnim 定义Activity进入屏幕时的动画,exitAnim 定义Activity退出屏幕时的动画.

在res/anim/建2个xml文件,一个用来表示activity进入时的动画,还有一个表示activity退出时的动画.注意overridePendingTransition方法的调用时机必须放在startActivity()和finish()方法之后.

示例1.向右滑动切换效果

1.1 从第二个activity从右侧进入动画right_in.xml

<?xml version = "1.0" encoding = "utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000">
    <translate android:fromXDelta="100%p" android:toXDelta="0%p"
        android:interpolator="@android:anim/accelerate_interpolator"/>
</set>
1.2 第一个activity从屏幕中间向左退出时动画.left_out.xml
<?xml version = "1.0" encoding = "utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000">
    <translate android:fromXDelta="0%p" android:toXDelta="-100%p"
        android:interpolator="@android:anim/accelerate_interpolator"/>
</set>

1.3java代码使用

overridePendingTransition(R.anim.right_in,R.anim.left_out)


方式二:在主题中修改activity切换动画

在清单文件中配置theme属性,自定义一个样式就可以了

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

res/values/styles.xml定义一个样式继承Animation.Activity,然后分别定义4个item,item四个属性的意思大概是这样的,假设有2个activity,分别叫做A,B.A页面启动B页面时,A会在页面消失,B会在页面呈现,这时候A会执行android:activityOpenExitAnimation动画效果

而B会执行android:activityOpenEnterAnimation.这是打开新页面的操作.如果从B页面开始返回到A页面,这时候B页面会消失在屏幕上,而A页面会重新进入到页面上去,这时候对于B来说执行的是退出操作,所以会走android:activityCloseExitAnimation这个动画,对于A来说是从原来的关闭状态重新进入屏幕,所以走的是android:activityCloseEnterAnimation动画效果

   <style name="AnimationActivity" mce_bogus="1" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item>
        <item name="android:activityOpenExitAnimation">@anim/push_left_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item>
        <item name="android:activityCloseExitAnimation">@anim/push_right_out</item>
    </style>

          定义完以上样式后,请在res/anim/目录下分别定义4个动画切换的文件.这里可以根据自己的喜好进行自定义.定义完成之后,在AndroidMenifest.xml清单文件修改原来的主题样式.修改

 android:theme="@style/AnimationActivity"