使用和管理Android中Activity的切换动画(一)
2015-06-24 09:56
561 查看
在Android2.0之后,当程序在Activity之间进行切换时,是可以添加切换动画的。其实添加Activity切换动画只是很简单的调用一个api函数:overridePendingTransition(int
enterAnim, int outAnim),两个参数分别指向两个定义动画的xml文件资源,下面先用一段简单的代码说明该函数的使用方法。
假设有两个Activity,分别为A和B。
当在A中启动B时,可以使用如下方式添加动画:
首先在xml中定义两个动画,放在R.anim文件夹目录下:
right_left_out.xml:
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代码
<?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的切换过程产生动画下过,如下代码片段演示:
Java代码
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代码
<?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代码
<?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>
代码片段:
Java代码
B.this.finish();
overridePendingTransition(R.anim.left_right_in, R.anim.left_right.out);
如果希望在用户按返回键是从B退回到A时也能够有动画效果,则需要在B中截取按钮事件,并手动结束当前Activity。代码片段如下:
Java代码
@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切换动画。
enterAnim, int outAnim),两个参数分别指向两个定义动画的xml文件资源,下面先用一段简单的代码说明该函数的使用方法。
假设有两个Activity,分别为A和B。
当在A中启动B时,可以使用如下方式添加动画:
首先在xml中定义两个动画,放在R.anim文件夹目录下:
right_left_out.xml:
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代码
<?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的切换过程产生动画下过,如下代码片段演示:
Java代码
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代码
<?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代码
<?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>
代码片段:
Java代码
B.this.finish();
overridePendingTransition(R.anim.left_right_in, R.anim.left_right.out);
如果希望在用户按返回键是从B退回到A时也能够有动画效果,则需要在B中截取按钮事件,并手动结束当前Activity。代码片段如下:
Java代码
@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切换动画。
相关文章推荐
- android简单的点击刷新
- 关于android缩放bitmap,BitmapFactory.Options.inSampleSize的优化算法
- 九鼎创展s5p4418开发板Android4.4-如何配置内核
- 使用和管理Android中Activity的切换动画(二)
- 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
- Android中自定义view出错NoSuchMethodException
- Android笔记-ListView总结
- Android jni 高斯模糊效果
- Android中实现远程输入
- android开发 获取logcat日志并记录(方便离线调试)
- Android五天乐(第二天)Activity跳转与数据传输,Fragment
- Android listview保持滚动位置4种解决方案
- 关于电视机中DTV码流对android的Timer的影响
- Android系统开发必备知识
- AndroidManifest.xml——data
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- 九鼎创展s5p4418开发板Android4.4-将uboot,内核源码包放到android根目录编译
- AndroidStudio快捷键
- Android中BassBoost和Virtualizer的使用
- 九鼎创展s5p4418开发板Android4.4-更改uboot开机LOGO