1 定义各一个handler
public class ButtonHandle extends Handler { //间隔时间,如果项目觉得3秒长,可以自己修改 public final int timeClick = 3000; public final int SHOW = 1; //默认是可以点击的 public boolean isCanClick = true; @Override public void handleMessage(Message msg) { switch (msg.what) { case SHOW: showAgain(); break; } } private void showAgain() { isCanClick = false; this.postDelayed(new Runnable() { @Override public void run() { isCanClick = true; } }, timeClick); } }
2 随便写一个button
@SuppressLint("AppCompatCustomView") public class ClickButton extends Button { ButtonHandle buttonHandle ; //初始化handler private void initHandler() { if (buttonHandle == null) { buttonHandle = new ButtonHandle(); } } public ClickButton(Context context) { super(context); initHandler(); } public ClickButton(Context context, AttributeSet attrs) { super(context, attrs); initHandler(); } public ClickButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initHandler(); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public ClickButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initHandler(); } public boolean canClick(){ if (buttonHandle.isCanClick){ //这个1为了防止冲突,自己写一个好了 buttonHandle.obtainMessage(1).sendToTarget(); } return buttonHandle.isCanClick; } }
3 布局
<com.xxxx.xxxxx.ui.ClickButton android:id="@+id/notcontinuitybutton" android:layout_width="match_parent" android:layout_height="@dimen/y80" android:textSize="16dp" android:text="不能连续点击的butoon" />
4 引用,查找ID
ClickButton notcontinuitybutton = findById(R.id.notcontinuitybutton);
notcontinuitybutton.setOnClickListener(this);
5 使用6 打完收工case R.id.notcontinuitybutton: if( notcontinuitybutton.canClick()){ Toast.makeText(MainActivity.this, "来呀,造作啊!" ,Toast.LENGTH_SHORT).show(); } break;