Android_防止快速点击

重写OnClickListener

public abstract class DebouncingOnClickListener implements View.OnClickListener {
private static boolean enabled = true;

private static final Runnable ENABLE_AGAIN = new Runnable() {
    @Override
    public void run() {
        enabled = true;
    }
};

@Override
public final void onClick(View v) {
    if (enabled) {
        enabled = false;
        v.post(ENABLE_AGAIN);
        doClick(v);
    }
}

public abstract void doClick(View v);
}

模拟点击

txt = (TextView) findViewById(R.id.txt);
    
    /*txt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            startActivity(new Intent(MainActivity.this, SecondActivity.class));
        }
    });*/
    txt.setOnClickListener(new DebouncingOnClickListener() {
        
        @Override
        public void doClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent(MainActivity.this, SecondActivity.class));
        }
    });
    for (int i = 0; i < 3; i++) {
        txt.performClick();
    }

使用系统自带的OnClickListener会打开三次SecondActivity,使用DebouncingOnClickListener 则只会打开一次。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,356评论 25 709
  • 作为Android的四大组件之一,活动最先走进我们的视野,其重要性不言而喻,今天就抽出时间来专门对Android活...
    loser先生阅读 1,249评论 0 0
  • Day1: 在代码中通过R.string.hello_world可以获得该字符串的引用; 在XML中通过@stri...
    冰凝雪国阅读 1,574评论 0 5
  • 44/100 100天写作计划第44篇 之前写的随笔,重新整理过,适合今天淡淡忧伤的心情。 西塘的殇,前无人等待...
    页彦夕阅读 551评论 0 4
  • 纠结了一路,自从坐上车的那一刻,到底要不要给你打电话?各种的思想斗争激烈地冲击着本就迷糊的大脑。我想,你还在忙着...
    一路有我阅读 240评论 0 1

友情链接更多精彩内容