@@ -57,6 +57,7 @@ public class SignaturePad extends View {
5757 private long mFirstClick ;
5858 private int mCountClick ;
5959 private static final int DOUBLE_CLICK_DELAY_MS = 200 ;
60+ private static final float DOUBLE_CLICK_SQUARED_MOVE_DIST = 75 ;
6061
6162 //Default attribute values
6263 private final int DEFAULT_ATTR_PEN_MIN_WIDTH_PX = 3 ;
@@ -212,7 +213,6 @@ public boolean onTouchEvent(MotionEvent event) {
212213 case MotionEvent .ACTION_DOWN :
213214 getParent ().requestDisallowInterceptTouchEvent (true );
214215 mPoints .clear ();
215- if (isDoubleClick ()) break ;
216216 mLastTouchX = eventX ;
217217 mLastTouchY = eventY ;
218218 addPoint (getNewPoint (eventX , eventY ));
@@ -224,6 +224,9 @@ public boolean onTouchEvent(MotionEvent event) {
224224 break ;
225225
226226 case MotionEvent .ACTION_UP :
227+ if (this .isDoubleClick (eventX , eventY )) {
228+ break ;
229+ }
227230 resetDirtyRect (eventX , eventY );
228231 addPoint (getNewPoint (eventX , eventY ));
229232 getParent ().requestDisallowInterceptTouchEvent (true );
@@ -244,6 +247,12 @@ public boolean onTouchEvent(MotionEvent event) {
244247 return true ;
245248 }
246249
250+ private float calculateSquaredDistance (float startX , float startY , float endX , float endY ) {
251+ float xDist = endX - startX ;
252+ float yDist = endY - startY ;
253+ return xDist * xDist + yDist * yDist ;
254+ }
255+
247256 @ Override
248257 protected void onDraw (Canvas canvas ) {
249258 if (mSignatureBitmap != null ) {
@@ -404,7 +413,7 @@ public Bitmap getTransparentSignatureBitmap(boolean trimBlankSpace) {
404413 return Bitmap .createBitmap (mSignatureBitmap , xMin , yMin , xMax - xMin , yMax - yMin );
405414 }
406415
407- private boolean isDoubleClick () {
416+ private boolean isDoubleClick (float currentX , float currentY ) {
408417 if (mClearOnDoubleClick ) {
409418 if (mFirstClick != 0 && System .currentTimeMillis () - mFirstClick > DOUBLE_CLICK_DELAY_MS ) {
410419 mCountClick = 0 ;
@@ -414,7 +423,8 @@ private boolean isDoubleClick() {
414423 mFirstClick = System .currentTimeMillis ();
415424 } else if (mCountClick == 2 ) {
416425 long lastClick = System .currentTimeMillis ();
417- if (lastClick - mFirstClick < DOUBLE_CLICK_DELAY_MS ) {
426+ float dist = this .calculateSquaredDistance (mLastTouchX , mLastTouchY , currentX , currentY );
427+ if (lastClick - mFirstClick < DOUBLE_CLICK_DELAY_MS && dist < DOUBLE_CLICK_SQUARED_MOVE_DIST ) {
418428 this .clearView ();
419429 return true ;
420430 }
0 commit comments