コード例 #1
0
  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();
      }
    }
  }
コード例 #2
0
  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();
    }
  }