1. 程式人生 > >不能連續點選的按鈕

不能連續點選的按鈕

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 使用 

 
case R.id.notcontinuitybutton:
    if( notcontinuitybutton.canClick()){
        Toast.makeText(MainActivity.this, "來呀,造作啊!" ,Toast.LENGTH_SHORT).show();
    }
        break;

6 打完收工