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

使用和管理Android中Activity的切换动画(一)

程序员文章站 2022-05-03 08:24:11
...

在Android2.0之后,当程序在Activity之间进行切换时,是可以添加切换动画的。其实添加Activity切换动画只是很简单的调用一个api函数:overridePendingTransition(int enterAnim, int outAnim),两个参数分别指向两个定义动画的xml文件资源,下面先用一段简单的代码说明该函数的使用方法。

 

假设有两个Activity,分别为A和B。

当在A中启动B时,可以使用如下方式添加动画:

首先在xml中定义两个动画,放在R.anim文件夹目录下:

right_left_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="400"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toXDelta="-100%p"
        android:toYDelta="0" />
</set>

 

right_left_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="400"
        android:fromXDelta="100%p"
        android:fromYDelta="0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toXDelta="0"
        android:toYDelta="0" />
</set>

 

然后在A中启动B时,就可以利用这两个动画定义文件让A和B的切换过程产生动画下过,如下代码片段演示:

Intent intent = new Intent(A.this, B.class);
A.this.startActivity(intent);

//参数一是下一个Activity的进入动画,参数二是当前Activity的退出动画
overridePendingTransition(R.anim.right_left_in, R.anim.right_left_out);

 

在B中返回A时,可以使用如下动画:

left_right_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="400"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toXDelta="100%p"
        android:toYDelta="0" />
</set>

 

left_right_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="400"
        android:fromXDelta="-100%p"
        android:fromYDelta="0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toXDelta="0"
        android:toYDelta="0" />
</set>

 

代码片段:

B.this.finish();
overridePendingTransition(R.anim.left_right_in, R.anim.left_right.out);

 如果希望在用户按返回键是从B退回到A时也能够有动画效果,则需要在B中截取按钮事件,并手动结束当前Activity。代码片段如下:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
	if (keyCode == KeyEvent.KEYCODE_BACK)
	{
		B.this.finish();
                overridePendingTransition(R.anim.left_right_in, R.anim.left_right_out);
	        return true;
	}
	return super.onKeyUp(keyCode, event);
}

 

以上只是简单的介绍了一下Activity动画怎么使用的,我相信大部分人都会用,本来就是一个api的事情。在下一篇文章中,我讲介绍另一种方式添加Activity切换动画:通过设置主题的形式设置Activity切换动画。