Created
September 21, 2022 06:37
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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