2011-12-09 25 views
0

我已經做了這些作爲測試項目的水龍頭數字遊戲之一,爲此我做了約20個按鈕的gridview。當按下其中一個按鈕時,開始動畫。前幾次運行良好,但速度變慢,開始口吃。android框架在gridview中的按鈕動畫

我認爲它與動畫資源有關,因爲我在同一時間多次使用它,但我不知道如何解決問題。 因爲我想在動畫結束時從gridview中刪除按鈕,所以我包裝了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()。其實那裏有沒有更多的代碼,我可以張貼時,GridView適配器getView看起來是這樣的:

@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;    
    } 

和提到的處理程序是這樣的(它實際上不刪除按鈕,但改變背景抽拉,遺憾的是) :

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

您爲每次點擊製作一個新的處理程序?那會受到傷害......如何爲每個按鈕或其他更聰明的東西製作1個(需要看到更多的代碼來與其他建議)。