[英]android frame animation of buttons in gridview
我已经将这些抽头号码游戏之一用于android作为测试项目,为此,我制作了带有约20个按钮的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();
}
提前致谢
更新:
@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);
}
};
您为每次点击创建新的处理程序? 那就太痛了……每个按钮只做1个,或者其他更聪明的事情(需要查看更多代码以及其他建议)怎么样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.