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 秒が経過すると、予想どおり、アニメーションが開始され、ビューの移動が開始されます。ただし、その1秒前にビューをまったく描画したくありません! . どうすればこれを達成できますか?

前もって感謝します。

アップデート

次のように、startActivity 呼び出し (以下の *R.anim.animation_coming_in*) の直後に上記の XML を呼び出しています。

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>

または、この一連のアニメーションをコードで実装することもできます。そうすることで、 を使用しHandlerて遅延後にアニメーションを開始できるため、アニメーションが開始するまでビューが非表示になります。

于 2012-10-10T02:01:47.653 に答える