Android Activity切换动画

效果

Screenrecorder-2017-07-30-04-48-04-614~1.gif

overridePendingTransition(int enterAnim, int outAnim)

//参数一是下一个Activity的进入动画,参数二是当前Activity的退出动画

overridePendingTransition(int enterAnim, int outAnim)

进入动画

   activity.overridePendingTransition(R.anim.move_left_in, R.anim.move_left_out);

R.anim.move_left_in

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="300"
        android:fromXDelta="100%p"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0"/>

</set>

R.anim.move_left_out

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="300"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-100%p"
        android:toYDelta="0"/>

</set>

跳转的时候 A->B

A 执行 移除动画 R.anim.move_left_out

B 执行 进入动画 R.anim.move_left_in

也就是 先执行R.anim.move_left_out 再执行 R.anim.move_left_in

跳转 B finish 到 A

B 执行 移除动画 R.anim.move_right_out

A 执行 进入动画 R.anim.move_right_in

R.anim.move_right_in

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="300"
        android:fromXDelta="-100%p"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0"/>

</set>

R.anim.move_right_out

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="300"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100%p"
        android:toYDelta="0"/>

</set>

  • 移动的距离也要有考虑,两个互相搭配会形成一种左右切换的效果

问题:

  • android:duration="300" 动画时间要一致不然会导致 切换的时候黑屏和动画不生效
  • 执行退出动画的时候需要重写 finish()方法 再添加 activity.overridePendingTransition(R.anim.move_left_in, R.anim.move_left_out);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容