繁体   English   中英

GridView中按钮的android框架动画

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM