public void closeDrawer() {
   if (tableScreen.getValue()) {
     drawerOpened = false;
     drawerAnimation();
     if (drawerListener != null) {
       drawerListener.onDrawerClosed(nav);
     }
   }
 }
 public void openDrawer() {
   if (tableScreen.getValue()) {
     drawerOpened = true;
     drawerAnimation();
     if (drawerListener != null) {
       drawerListener.onDrawerOpened(nav);
     }
   }
 }
  private void updateDrawerState(View drawerView, @State int state) {
    boolean update = false;
    // Update state
    if (drawerView == mLeftDrawer) {
      update = mLeftState != state;
      mLeftState = state;
    } else if (drawerView == mRightDrawer) {
      update = mRightState != state;
      mRightState = state;
    }

    // Callback
    if (update && mListener != null) {
      mListener.onDrawerStateChanged(drawerView, state);
    }
  }
  private void dispatchOnDrawerOpened(View drawerView) {
    boolean update = false;
    // Update
    if (drawerView == mLeftDrawer) {
      update = !mLeftOpened;
      mLeftOpened = true;
    } else if (drawerView == mRightDrawer) {
      update = !mRightOpened;
      mRightOpened = true;
    }

    // Callback
    if (update && mListener != null) {
      mListener.onDrawerOpened(drawerView);
    }
  }
  private void updateDrawerSlide(View drawerView, float percent) {
    boolean update = false;
    // Update percent
    if (drawerView == mLeftDrawer) {
      update = mLeftPercent != percent;
      mLeftPercent = percent;
    } else if (drawerView == mRightDrawer) {
      update = mRightPercent != percent;
      mRightPercent = percent;
    }

    if (update) {
      mShadow.setPercent(percent);
    }

    // Callback
    if (update && mListener != null) {
      mListener.onDrawerSlide(drawerView, percent);
    }
  }