private void returnHandleToCenter() { if (autoReturnToCenter) { final int numberOfFrames = 5; final double intervalsX = (0 - touchX) / numberOfFrames; final double intervalsY = (0 - touchY) / numberOfFrames; for (int i = 0; i < numberOfFrames; i++) { final int j = i; postDelayed( new Runnable() { @Override public void run() { touchX += intervalsX; touchY += intervalsY; reportOnMoved(); invalidate(); if (moveListener != null && j == numberOfFrames - 1) { moveListener.OnReturnedToCenter(); } } }, i * 40); } if (moveListener != null) { moveListener.OnReleased(); } } }
private void returnHandleToCenter() { Handler handler = new Handler(); int numberOfFrames = 5; final double intervalsX = (0 - touchX) / numberOfFrames; final double intervalsY = (0 - touchY) / numberOfFrames; for (int i = 0; i < numberOfFrames; i++) { handler.postDelayed( new Runnable() { @Override public void run() { touchX += intervalsX; touchY += intervalsY; invalidate(); } }, i * 40); } if (listener != null) { listener.OnReleased(); } }