0

我试图在 1 秒后开始动画。我在我的 XML 文件中使用了属性“android:startOffset”,但它并没有完全按照我的预期工作。在我设置的偏移量通过之前,我期望视图甚至不会在其初始位置(即属性“ fromXDelta ”和“ fromYDelta ”中设置的位置)绘制。这是我的 XML:

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

  <translate
      android:duration="2000"
      android:startOffset="1000"
      android:fromXDelta="-70%p"
      android:fromYDelta="0%p"
      android:interpolator="@android:anim/linear_interpolator"
      android:toXDelta="+0%p"
      android:toYDelta="0%p" />

</set>

如果我尝试使用上面的动画移动我的视图,视图会立即绘制在屏幕的 -70% 位置。然后一秒钟过去了,然后,正如预期的那样,动画开始并开始移动视图。但是,我不希望在那 1 秒之前绘制视图!. 我怎样才能做到这一点?

先感谢您。

更新

我在 startActivity 调用之后调用上面的 XML(下面的 *R.anim.animation_coming_in*),如下所示:

startActivity(new Intent(this, ThankYouActivity.class)); 
overridePendingTransition(R.anim.animation_coming_in, R.anim.animation_coming_out);
4

1 回答 1

0

您可以尝试使用一对alpha持续时间很短的动画,以便在需要之前隐藏视图。像这样的东西:

<set ...>
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="0.0"
        android:duration="1"
        android:startOffset="0" />
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="1"
        android:startOffset="1000" />
    <translate
        ...
    />
</set>

或者,您可以在代码中实现这组动画。这样做将使您能够使用 aHandler在延迟后启动动画,以便在动画开始之前隐藏视图。

于 2012-10-10T02:01:47.653 回答