Android动画为什么延迟了持续时间

时间:2015-04-14 19:46:51

标签: android animation android-animation duration

我在xml中有一个简单的翻译动画

anim.xml

<Translate
    xmlns:...
    android:fromYDelta="100%p"
    android:toYDelta="0%p"
    android:duration="1500" />

我用它从屏幕底部向上滑动布局:

    View layoutStatus = activity.findViewById(R.id.layoutSettingsStatus);
    layoutStatus.setVisibility(View.VISIBLE);
    Animation a = AnimationUtils.loadAnimation(context, R.anim.slide_up);
    layoutStatus.startAnimation(a);

但是在执行此代码之后它才开始直到1500ms(或可能更长)。当我将动画持续时间从1500更改为5000时,它在执行代码后5秒内不会执行。持续时间属性正常工作,翻译需要与开始时间一样长。

它像android:duration也适用于android:startOffset,为什么会这样?

1 个答案:

答案 0 :(得分:0)

从你的网页摘要中我不知道为什么会发生这种情况,我需要更多代码。但请查看此课程ViewPropertyAnimator,它可以让您的生活和代码在将来更轻松。在您的案例中使用它的示例:

layoutStatus.animate().translationY(toY).setDuration(1500);
// toY is float and takes coordinates on the screen

您只需要一行代码即可获得所需的全部内容。 该类还包含所有可用的方法,如setStartDelay(),setInterpolator(),setListener()等... TranslateAnimation和ViewPropertyAnimation / ObjectAnimation之间存在一些差异,我解释了here