Single click and double click of a button in android

前端 未结 9 1330
遇见更好的自我
遇见更好的自我 2020-12-05 22:09

In my application i have a button. After single and double clicking of the button will perform separate operation. How can i do that? Thanks

9条回答
  •  长情又很酷
    2020-12-05 22:33

    Well it is simple just override.

    onClick method of OnClickListener

    public abstract class DoubleClickListener implements View.OnClickListener {
    private static final long DEFAULT_QUALIFICATION_SPAN = 200;
    private boolean isSingleEvent;
    private long doubleClickQualificationSpanInMillis;
    private long timestampLastClick;
    private Handler handler;
    private Runnable runnable;
    
    public DoubleClickListener() {
        doubleClickQualificationSpanInMillis = DEFAULT_QUALIFICATION_SPAN;
        timestampLastClick = 0;
        handler = new Handler();
        runnable = new Runnable() {
            @Override
            public void run() {
                if (isSingleEvent) {
                    onSingleClick();
                }
            }
        };
    }
    
    @Override
    public void onClick(View v) {
        if((SystemClock.elapsedRealtime() - timestampLastClick) < doubleClickQualificationSpanInMillis) {
            isSingleEvent = false;
            handler.removeCallbacks(runnable);
            onDoubleClick();
            return;
        }
    
        isSingleEvent = true;
        handler.postDelayed(runnable, DEFAULT_QUALIFICATION_SPAN);
        timestampLastClick = SystemClock.elapsedRealtime();
    }
    
    public abstract void onDoubleClick();
    public abstract void onSingleClick();
    }
    

    Usage

     button.setOnClickListener(new DoubleClickListener() {
            @Override
            public void onDoubleClick() {
                Log.i("onClick", "double");
            }
    
            @Override
            public void onSingleClick() {
                Log.i("onClick", "single");
            }
        });
    

提交回复
热议问题