2011-12-09 13 views
0

私はテストプロジェクトとしてアンドロイドのためのこれらのタップナンバーゲームの1つを作ったと私はそれの約20ボタンでgridviewを作った。これらのボタンの1つが押されると、アニメーションが開始されます。これは最初の数回は正常に動作しますが、遅くなり、吃音を開始します。androidのフレームアニメーションgridviewのボタンの

私はそれがアニメーションressourceと何かを持っていると仮定します。私は同時に複数回使用しますが、問題の解決方法はわかりません。 アニメーションの終了時にグリッドビューからボタンを削除したいのですが、AnimationDrawableクラスをラップして、アニメーションの最後に呼び出されるHandlerを設定できるようにしました。事前に

public void animate() {  
    setBackgroundResource(R.drawable.myanimation); 
    final AnimationDrawable anim = (AnimationDrawable) getBackground(); 
    final BetterAnimationDrawable better = new BetterAnimationDrawable(anim); 
    better.setEndHandler(new EndHandler()); 
    better.start();  
} 

おかげ

UPDATE:
@warpzit:あなたの答えをありがとう。 earchクリックのハンドラではなく、各ボタンのハンドラです。 onclickメソッドはボタンを無効にして(一度しか押さない)、animate()を呼び出します。

@Override 
    public View getView(final int position, final View convertView, final ViewGroup parent) {   
     final MySpecialButton sb = new MySpecialButton(getApplicationContext()); 
     sb.setOnClickListener(new SpecialButtonClickListener()); 
     return nv;    
    } 

と述べたハンドラが(その実際にボタンを削除するが、背景描画可能に変更、そのために残念ではない)のようになります。実際に私が投稿することができ、はるかないコード、次のようになりますgetViewメソッドGridViewのアダプタをtheresの:

private class MySpecialHandler extends Handler { 

    public MySpecialHandler() { 
    } 

    @Override 
    public void handleMessage(final Message msg) { 
     super.handleMessage(msg); 

     final Bitmap bitmapMask = BitmapFactory.decodeResource(getResources(), R.drawable.aspecialmask); 
     final BitmapDrawable d = new BitmapDrawable(bitmapMask);    
     d.setColorFilter([someColor], Mode.MULTIPLY);   
     setBackgroundDrawable(d);           
    }  

}; 

答えて

0

クリックごとに新しいハンドラを作成しますか?それは傷ついてはいかがですか...各ボタンや他の何かをもっとスマートにする方法は他にもあります(他にも多くのコードを表示する必要があります)。

関連する問題