使用Android L动画在活动之间切换

时间:2014-11-09 21:52:46

标签: android android-layout android-animation material-design

如何使用某些Android L动画在活动之间切换?我只能找到有关defining custom animations的信息。

我在Android开发者文档中的“收件箱”和“设置”活动之间找不到任何有关以下动画的文档。

Gmail animation

我已从Gmail中提取了动画文件,但在使用以下内容时,活动仅上下滑动,并且没有Z移动(深度)。

activity.overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top);

您可以找到使用的动画文件here

1 个答案:

答案 0 :(得分:16)

Gmail似乎使用Animation类来创建动画,因此我必须创建自己的版本。

swap_in_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:startOffset="200"
    android:zAdjustment="top">

    <alpha
        android:duration="150"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

    <translate
        android:duration="200"
        android:fromYDelta="100.0%p"
        android:toYDelta="0.0" />

</set>

swap_out_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:zAdjustment="bottom">

    <scale
        android:duration="200"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="0.9"
        android:toYScale="0.9" />

    <alpha
        android:duration="200"
        android:fromAlpha="1.0"
        android:toAlpha="0.5" />

    <translate
        android:duration="400"
        android:fromYDelta="0.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="100"
        android:toYDelta="20.0%p" />

</set>

使用它的代码;

 overridePendingTransition(R.anim.swap_in_bottom, R.anim.swap_out_bottom);

这是我的自定义动画的外观(在设备上更加流畅);