gridview中按钮的android帧动画
我为android制作了一个点击数字游戏作为测试项目,为此我制作了一个gridview,里面有大约20个按钮。当按下其中一个按钮时,动画开始。这在最初几次运行正常,但随后会变慢并开始口吃 我假设它与动画资源有关,因为我在同一时间多次使用它,但我不知道如何解决这个问题。 因为我想在动画结束时从gridview中删除按钮,所以我包装了AnimationDrawable类,以便能够设置在动画结束时调用的处理程序gridview中按钮的android帧动画,android,animation,gridview,button,resources,Android,Animation,Gridview,Button,Resources,我为android制作了一个点击数字游戏作为测试项目,为此我制作了一个gridview,里面有大约20个按钮。当按下其中一个按钮时,动画开始。这在最初几次运行正常,但随后会变慢并开始口吃 我假设它与动画资源有关,因为我在同一时间多次使用它,但我不知道如何解决这个问题。 因为我想在动画结束时从gridview中删除按钮,所以我包装了AnimationDrawable类,以便能够设置在动画结束时调用的处理程序 public void animate() { setBackgroun
public void animate() {
setBackgroundResource(R.drawable.myanimation);
final AnimationDrawable anim = (AnimationDrawable) getBackground();
final BetterAnimationDrawable better = new BetterAnimationDrawable(anim);
better.setEndHandler(new EndHandler());
better.start();
}
提前谢谢
更新:@沃普兹特:谢谢你的回答。它不是earch click的处理程序,而是每个按钮的处理程序。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);
}
};