通过overridePendingTransition
实现
一、准备动画文件
1、layout_down_up.xml
从下向上动画
2、layout_up_down.xml
从上向下动画
3、layout_center.xml
初始位置
layout_down_up.xml 从下向上打开
activity
的动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
//位置从 Y=100% 用250毫秒时间 移动到 Y=0(从下往上移动250毫秒动画)
<translate android:fromYDelta="100%" android:toYDelta="0" android:duration="250" />
</set>
layout_up_down.xml 从上向下关闭
activity
的动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
//(从上往下移动250毫秒动画)
<translate android:fromYDelta="0" android:toYDelta="100%" android:duration="250" />
</set>
layout_center.xml 在0坐标不移动
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="0" android:toYDelta="0" />
</set>
ps:可以实现缩放移动透明等等多种联合特效,这里只用从下往上来举例
二、开始使用
1、在Activity
中的onCreate
方法设置打开动画
@Override
protected void onCreate(Bundle savedInstanceState) {
//activity打开时动画写在 super.onCreate(savedInstanceState); 前面,因为overridePendingTransition需要在onCreate之前设置
//或者也可以写在startActivity下面,这里不推荐所以略过
overridePendingTransition(R.anim.layout_down_up,R.anim.layout_center);
super.onCreate(savedInstanceState);
}
2、在Activity
中的finish
方法设置关闭动画
@Override
public void finish() {
super.finish();
//activity关闭的动画写在super.finish();下面
overridePendingTransition(R.anim.layout_center,R.anim.layout_up_down);
}
ps:
overridePendingTransition有两个参数
1、要显示的activity的动画
2、要消失的activity的动画
ps:overridePendingTransition(0, 0); //可以设置无默认动画