Skip to content

Commit

Permalink
Added proximity condition to double click detection
Browse files Browse the repository at this point in the history
  • Loading branch information
TiFu authored and Tino Fuhrmann committed Dec 26, 2017
1 parent d63ca5f commit 71f7c72
Showing 1 changed file with 13 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public class SignaturePad extends View {
private long mFirstClick;
private int mCountClick;
private static final int DOUBLE_CLICK_DELAY_MS = 200;
private static final float DOUBLE_CLICK_SQUARED_MOVE_DIST = 75;

//Default attribute values
private final int DEFAULT_ATTR_PEN_MIN_WIDTH_PX = 3;
Expand Down Expand Up @@ -212,7 +213,6 @@ public boolean onTouchEvent(MotionEvent event) {
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
mPoints.clear();
if (isDoubleClick()) break;
mLastTouchX = eventX;
mLastTouchY = eventY;
addPoint(getNewPoint(eventX, eventY));
Expand All @@ -224,6 +224,9 @@ public boolean onTouchEvent(MotionEvent event) {
break;

case MotionEvent.ACTION_UP:
if (this.isDoubleClick(eventX, eventY)) {
break;
}
resetDirtyRect(eventX, eventY);
addPoint(getNewPoint(eventX, eventY));
getParent().requestDisallowInterceptTouchEvent(true);
Expand All @@ -244,6 +247,12 @@ public boolean onTouchEvent(MotionEvent event) {
return true;
}

private float calculateSquaredMovedDistance(float startX, float startY, float endX, float endY) {
float xDist = endX - startX;
float yDist = endY - startY;
return xDist * xDist + yDist * yDist;
}

@Override
protected void onDraw(Canvas canvas) {
if (mSignatureBitmap != null) {
Expand Down Expand Up @@ -404,7 +413,7 @@ public Bitmap getTransparentSignatureBitmap(boolean trimBlankSpace) {
return Bitmap.createBitmap(mSignatureBitmap, xMin, yMin, xMax - xMin, yMax - yMin);
}

private boolean isDoubleClick() {
private boolean isDoubleClick(float currentX, float currentY) {
if (mClearOnDoubleClick) {
if (mFirstClick != 0 && System.currentTimeMillis() - mFirstClick > DOUBLE_CLICK_DELAY_MS) {
mCountClick = 0;
Expand All @@ -414,7 +423,8 @@ private boolean isDoubleClick() {
mFirstClick = System.currentTimeMillis();
} else if (mCountClick == 2) {
long lastClick = System.currentTimeMillis();
if (lastClick - mFirstClick < DOUBLE_CLICK_DELAY_MS) {
float dist = this.calculateSquaredMovedDistance(mLastTouchX, mLastTouchY, currentX, currentY);
if (lastClick - mFirstClick < DOUBLE_CLICK_DELAY_MS && dist < DOUBLE_CLICK_SQUARED_MOVE_DIST) {
this.clearView();
return true;
}
Expand Down

0 comments on commit 71f7c72

Please sign in to comment.