1.网上也有很多防止重复点击的,但是大都是利用点击的时间差,并不支持多个控件同时操作;
2.本方法是通过开启子线程来控制按钮是否可以点击,在实际的开发中并不是每个按钮都要加重复点击,
只有有些情景时才进行使用;
3.工具类如下:
/**
* @Description: 防止重复点击
* @author 作者 :likun
* @date 创建时间:2016/7/20 14:00
*/
public class NoDoubleClickUtils {
//多长时间内不可点击
private static final int DELAY=3000;
public static void noDoubleClick(final Activity context, final int v){
context.findViewById(v).setClickable(false);
new Thread() {
@Override
public void run() {
SystemClock.sleep(DELAY);
context.runOnUiThread(new Runnable() {
@Override
public void run() {
context.findViewById(v).setClickable(true);
}
});
}
}.start();
}
}
4.代码中使用:
public class MainActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.rtn_double_click1).setOnClickListener(this);
findViewById(R.id.rtn_double_click2).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rtn_double_click1:
Toast.makeText(this, "点击1", Toast.LENGTH_SHORT).show();
NoDoubleClickUtils.noDoubleClick(this,R.id.rtn_double_click1);
break;
case R.id.rtn_double_click2:
Toast.makeText(this, "点击2", Toast.LENGTH_SHORT).show();
NoDoubleClickUtils.noDoubleClick(this,R.id.rtn_double_click2);
break;
}
}
}