動的アンドロイドでトゥイーンアニメーションの継続時間/速度を調整する方法

StackOverflow https://stackoverflow.com/questions/3619663

質問

レッツ・言う私は、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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top