怎么设置Android Activity的动画

Android Activity动画属性简介

在Android当中 设置activity的动画 需要复写 android:windowAnimationStyle这个属性

我们自定义一个动画样式来继承 @android:style/Animation(Base style for animations.  This style specifies no animations)

这个样式是Android操作系统提供的 没用动画的样式 我们定义其中的4个属性还设置我们想要的效果

 

android:activityOpenEnterAnimation 一个activity创建进入的效果。

android:activityOpenExitAnimation    一个activity还没有finish()下退出效果, 比如有俩个activity A与B 首先启动A 然后再启动B 那么A还没有finish()  这时A的退出效果。

android:activityCloseEnterAnimation 表示上一个activity返回进入效果 比如有俩个activity A与B  B在最上面,B退出(finish)后 A重新进入的效果。

android:activityCloseExitAnimation    表示的是activity finish()之后的效果 比如有俩个activity A与B B退出后会被finish() 那么B的退出效果在这定义。

 

下面写一个activity左右滑动的效果。

    <style name="AppTheme" parent="@android:style/Theme">     
        <item name="android:windowAnimationStyle">@style/activityAnimation</item>
    </style>
    <style name="activityAnimation" parent="@android:style/Animation">
        <item name="android:activityOpenEnterAnimation">@anim/slide_right_in</item>
        <item name="android:activityOpenExitAnimation">@anim/slide_left_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/slide_left_in</item>
        <item name="android:activityCloseExitAnimation">@anim/slide_right_out</item>
    </style>

 slide_left_in.xml

<set
  xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="300" android:fromXDelta="-100.0%p" android:toXDelta="0.0" />
</set>

slide_left_out.xml

<set
  xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="300" android:fromXDelta="0.0" android:toXDelta="-100.0%p" />
</set>

slide_right_in.xml

<set
  xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="300" android:fromXDelta="100.0%p" android:toXDelta="0.0" />
</set>

slide_right_out.xml

<set
  xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:duration="300" android:fromXDelta="0.0" android:toXDelta="100.0%p" />
</set>

 

上面是通写配置文件的方式来定义activity的动画效果,我们还可以通过代码的方式来指定动画效果。

overridePendingTransition(int enterAnim, int exitAnim)

all immediately after one of the flavors of startActivity(Intent) or finish() to specify an explicit transition animation to perform next.

这个方法可以放在startActivity(intent)和finish()方法的后面。

 

(A启动B A不动 B从下面滑入)

第一个参数是进入activity的动画,第二个参数是当前activity退出时的动画。

Intent intent = new Intent(NavigationDemo.this, AnimationActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.hold);

slide_in_from_bottom.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="100%p"
    android:toYDelta="0" />

hold.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromXDelta="0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="0" />

 

(A与B B退出时从下面滑出) 

第一个参数指定A进入时的效果,为0表示没有动画, 第二个参数表示当前B退出时的动画。

@Override
    public void finish() {
        super.finish();
        overridePendingTransition(0, R.anim.slide_out_to_bottom);
    }
}

slide_out_to_bottom.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="0"
    android:toYDelta="100%p" />
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值