/**
   * Closes the drawer with an animation.
   *
   * @see #close()
   * @see #open()
   * @see #animateOpen()
   * @see #animateToggle()
   * @see #toggle()
   */
  public void animateClose() {
    prepareContent();
    final OnDrawerScrollListener scrollListener = mOnDrawerScrollListener;
    if (scrollListener != null) {
      scrollListener.onScrollStarted();
    }
    animateClose(mVertical ? mHandle.getTop() : mHandle.getLeft());

    if (scrollListener != null) {
      scrollListener.onScrollEnded();
    }
  }
  private void stopTracking() {
    mHandle.setPressed(false);
    mTracking = false;

    if (mOnDrawerScrollListener != null) {
      mOnDrawerScrollListener.onScrollEnded();
    }

    if (mVelocityTracker != null) {
      mVelocityTracker.recycle();
      mVelocityTracker = null;
    }
  }
  /**
   * Opens the drawer with an animation.
   *
   * @see #close()
   * @see #open()
   * @see #animateClose()
   * @see #animateToggle()
   * @see #toggle()
   */
  public void animateOpen() {
    prepareContent();
    final OnDrawerScrollListener scrollListener = mOnDrawerScrollListener;
    if (scrollListener != null) {
      scrollListener.onScrollStarted();
    }
    animateOpen(mVertical ? mHandle.getTop() : mHandle.getLeft());

    sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);

    if (scrollListener != null) {
      scrollListener.onScrollEnded();
    }
  }