使用和管理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切换动画。
上一篇: 跳转activity的动画实现
下一篇: python判断语句