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