public boolean closeImmediately() {
    if (!isOpened() || mAlwaysOpened || mMode == MODE_SLIDE) {
      return false;
    }

    if (!isReadyForSlide()) {
      mWhenReady.add(
          new Runnable() {

            @Override
            public void run() {
              closeImmediately();
            }
          });

      return true;
    }

    mMenuView.setVisibility(View.GONE);
    mMode = MODE_READY;
    requestLayout();

    if (mListener != null) {
      mListener.onSlideCompleted(false);
    }

    return true;
  }
  private void completeClosing() {
    mOffset = 0;
    requestLayout();

    post(
        new Runnable() {

          @Override
          public void run() {
            mMode = MODE_READY;
            mMenuView.setVisibility(View.GONE);
          }
        });

    if (mListener != null) {
      mListener.onSlideCompleted(false);
    }
  }
  private void completeOpening() {
    mOffset = mDirection * mMenuView.getWidth();
    requestLayout();

    post(
        new Runnable() {

          @Override
          public void run() {
            mMode = MODE_FINISHED;
            mMenuView.setVisibility(View.VISIBLE);
          }
        });

    if (mListener != null) {
      mListener.onSlideCompleted(true);
    }
  }