活动动画无法正常工作

时间:2014-09-01 16:43:12

标签: android android-layout android-animation

已编辑:当活动打开下一个活动时,在push_down_in.xml和push_down_out.xml中,仅动画最后一个翻译动画。第一个翻译标签没有动画。我想让动画像两个不同的一半。前半部分必须非常快,另一部分应该很慢。使用默认插值器我没有得到我想要的确切输出。如果有人有这个想法,请帮助我。代码是

pushing_down_out.xml

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

    <set android:ordering="sequentially" >
        <set>
            <translate
                android:duration="1000"
                android:fromYDelta="0"
                android:toYDelta="65%" />
        </set>
        <set>
            <translate
                android:duration="1500"
                android:fromYDelta="65%"
                android:toYDelta="100%p" />
        </set>
    </set>

</set>

pushing_down_in.xml

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

    <set android:ordering="sequentially" >
        <set>
            <translate
                android:duration="500"
                android:fromYDelta="-100%p"
                android:toYDelta="-35%" />
        </set>
        <set>
            <translate
                android:duration="1000"
                android:fromYDelta="-65%p"
                android:toYDelta="0" />
        </set>
    </set>

</set>

主要活动

Intent i=new Intent(getApplicationContext(),Activity2.class);
startActivity(i);
overridePendingTransition(R.anim.push_down_out,R.anim.push_down_in);

提前致谢

1 个答案:

答案 0 :(得分:0)

我不是100%肯定,但如果您使用android:ordering,我认为ViewAnimations会被忽略。 由于您只是尝试制作随时间变慢的动画,因此您也可以使用interpolator。请参阅以下代码:

pushing_down_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:duration="2500"
        android:fromYDelta="0"
        android:toYDelta="100%" />
</set>

pushing_down_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:duration="1500"
        android:fromYDelta="-100%p"
        android:toYDelta="0%" />
</set>

所以我基本上只是将你的翻译动画合并为一个并应用了插补器。插补器负责&#34;制作&#34;动画一开始很快,随着时间的推移逐渐减慢。

遵循所有可用的插值器:

@android:anim/accelerate_decelerate_interpolator
@android:anim/accelerate_interpolator
@android:anim/anticipate_interpolator
@android:anim/anticipate_overshoot_interpolator
@android:anim/bounce_interpolator
@android:anim/cycle_interpolator
@android:anim/decelerate_interpolator
@android:anim/linear_interpolator
@android:anim/overshoot_interpolator

您可以在Docs (click)

中详细了解它们

编辑 - 自定义插值器

也可以自定义插补器的速度。只需在res/anim文件夹中创建一个新的* .xml文件,然后添加以下行:

<accelerateDecelerateInterpolator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:factor="2" />

有趣的一行是android:factor 您也可以使用自己的公式创建自己的插值器。您可以阅读更多相关信息here (click)