動的アンドロイドでトゥイーンアニメーションの継続時間/速度を調整する方法
質問
レッツ・言う私は、Androidアプリを持っており、そのアプリで私が「L」字状にボールのグラフィックをアニメーション化します。これは私が(下に書かれた)アニメーションxmlファイルを作成し、その中でボールのグラフィックを持つビューに適用トゥイーンアニメーションを定義するために私を必要とする。
<translate>
Ydelta = 20;
offset = 0;
duration = 100;
</translate>
<translate>
Xdelta = 20;
offset = 100;
duration = 100;
</translate>
今、私が動的にそう時間をかけて、Lのアニメーションがより速く、より速く、より速く行くことを、このアニメーションの速度を制御したいと言うことができます。どのように私は動的にこの全体のアニメーションの速度を制御することができますか?私はmyAnimation.setDuration($ VAR)を試してみましたが、これは唯一のアニメーションの最初の部分で動作するようです。 0よりも大きいオフセットを有しているアニメーションの任意の部分は、その期間はsetDuration()メソッドによって調整していません。
のんの誰もが、私は一様に、マルチSETPアニメーションを拡張できる方法を知っていますか?の
おかげ
PS - Iは、2部のアニメーションを作成し、独立して各部分をスケーリングまたはコードを使用して、アニメーションを生成するようにこれを解決周り方法がある知っているが、より簡単な解決策がある場合は、その後、好ましいであろうと
。解決
私は自分自身でこれを解決してきました。アニメーション全体を拡大縮小するには、プログラムでアニメーションを作成する必要がある、とあなたがsetDuration();
を使用してアニメーションの再生時間を設定するとき、あなたはそれを代わりにXMLでハードコーディングの変数を渡します。
今、私は私のアニメーションを呼び出すたびに、私は、アニメーションの再生時間のmAnimDuration
それを渡した後、オンザフライで新しい時間スケールアニメーションを作成します。あなたはアニメーションの最初の部分の期間に設定されているアニメーションの第二部のオフセットことがわかります。
ここに私のコードからの例です。
AnimationSet rootSet = new AnimationSet(true); TranslateAnimation transX = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, 0,0,0,0); transX.setStartOffset(0); transX.setDuration(mAnimDuration/2); rootSet.addAnimation(transX); TranslateAnimation transX2 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, 0,0,0,0); transX2.setStartOffset(mAnimDuration/2); transX2.setDuration(mAnimDuration/2); rootSet.addAnimation(transX2);