Skip to content

Instantly share code, notes, and snippets.

@SurajBahadur
Created September 21, 2022 06:37
Show Gist options
  • Save SurajBahadur/ab892f22ae3ab597ef7f84baf82fb6ad to your computer and use it in GitHub Desktop.
Save SurajBahadur/ab892f22ae3ab597ef7f84baf82fb6ad to your computer and use it in GitHub Desktop.
Helper class to get callback for single and double click on a view in android
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
public abstract class DoubleClickListener implements View.OnClickListener {
private static final long DEFAULT_QUALIFICATION_SPAN = 200;
private boolean isSingleEvent;
private final long doubleClickQualificationSpanInMillis;
private long timestampLastClick;
private final Handler handler;
private final Runnable runnable;
public DoubleClickListener() {
doubleClickQualificationSpanInMillis = DEFAULT_QUALIFICATION_SPAN;
timestampLastClick = 0;
handler = new Handler();
runnable = () -> {
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();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment