我收藏的Android开发文章

Activity跳转动画效果(精简)

2020-08-10  本文已影响0人  大白520

通过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); //可以设置无默认动画

上一篇下一篇

猜你喜欢

热点阅读