2

カスタムビューがありますDialDialAnimationこのビューには、のネストされたクラスとして記述されたカスタムアニメーションがありDialます。Activity以下は、一連のアニメーションをインスタンス化Dialして実行しようとする私のコードです。コードを実行すると、アニメーションの1つだけが画面に表示されます。ここで何が欠けていますか?

Dial dial = (Dial) findViewById(R.id.dial);
DialAnimation anim1 = dial.new DialAnimation(0, 90, 3000);
DialAnimation anim2 = dial.new DialAnimation(180, 360, 3000);
anim2.setStartOffset(3500);

AnimationSet set = new AnimationSet(false);
set.addAnimation(anim1);
set.addAnimation(anim2);
dial.startAnimation(set);
4

3 に答える 3

5

これを行う1つの方法は、最初のアニメーションにAnimationListenerを設定し、onAnimationEnd()をオーバーライドして、シーケンス内の次のアニメーションを開始するようにすることです。これは次のようになります。

animation1Listener = new Animation.AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                 dial.startAnimation(animation2)
            }
}

animation1.setAnimationListener(animation1Listener);
dial.startAnimation(animation1);
于 2010-12-31T03:39:03.717 に答える
0

doinbackground()メソッドでアニメーションリストナーを試してください。これにより、アニメーションが順番に更新されます。または、アプリケーションで単純なスレッドを使用できます。

于 2010-12-31T05:02:22.187 に答える
-1

各アニメーションに.setDuration(3500)メソッドを追加し、期間の時間と2番目のアニメーションの.setStartOffset(3500)メソッドの時間が一致することを確認します。

于 2013-04-23T08:15:05.687 に答える