title: animate a view after drag
body: <p>This is the scenario: after that user select and drag view and released that view I want to dragged view goes back to where it was before.      </p>
  
  <pre><code>mDragHelper = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback() {
          float startX, startY,startTX,startTY;
  
          @Override
          public boolean tryCaptureView(View child, int pointerId) {
              boolean res = mDragViews.contains(child);
              Log.d(TAG, "tryCaptureView() called with:res=" + res + " child = [" + child + "], pointerId = [" + pointerId + "]");
              return res;
          }
  
          @Override
          public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {
              super.onViewPositionChanged(changedView, left, top, dx, dy);
          }
  
          @Override
          public int clampViewPositionHorizontal(View child, int left, int dx) {
              return left;
          }
  
          @Override
          public int clampViewPositionVertical(View child, int top, int dy) {
              return top;
          }
  
          @Override
          public void onViewCaptured(View capturedChild, int activePointerId) {
              super.onViewCaptured(capturedChild, activePointerId);
              if (startX == 0) {
                  startX = capturedChild.getX();
                  startY = capturedChild.getY();
                  startTX=capturedChild.getTranslationX();
                  startTY=capturedChild.getTranslationY();
              }
              Log.d(TAG, "onViewCaptured: startX=" + startX + " startY=" + startY);
          }
  
          @Override
          public void onViewReleased(View releasedChild, float xvel, float yvel) {
              super.onViewReleased(releasedChild, xvel, yvel);
              releaseAnim(releasedChild, startX, startY,startTX,startTY);
          }
      });       
  
      private void releaseAnim(final View releasedChild, final float startX, final float startY, final float startTX, final float startTY) {
      Log.d(TAG, "releaseAnim() called with: releasedChild = [" + releasedChild + "], startX = [" + startTX + "], startY = [" + startTY + "]");
      PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat(View.X, releasedChild.getX(),startX);
      PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat(View.Y, releasedChild.getY(),startY);
      PropertyValuesHolder pvhTX = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, releasedChild.getTranslationX(),startTX);
      PropertyValuesHolder pvhTY = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, releasedChild.getTranslationY(),startTY);
      ObjectAnimator downAnim = ObjectAnimator.ofPropertyValuesHolder(
              releasedChild
              , pvhTX, pvhTY
              , pvhX, pvhY
      );
  
      downAnim.setInterpolator(sAccelerator);
      downAnim.setDuration(200);
      downAnim.start();
  
  
  }
  </code></pre>
  
  <p>and it works but the problem is after the animation is done if I call to requestLayout my view get translation and position reverse of the dragged transition and position.<br>
  the result is the view not sit on where that was before.</p>