不能連續點選的按鈕
阿新 • • 發佈:2018-11-04
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) { caseSHOW: 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(); } } publicClickButton(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 打完收工