private void changeMenuState(
      int currentY, boolean skipHalfScreenState, boolean slidingUp, boolean slidingDown) {
    boolean needCloseMenu = false;

    int oldMenuState = menu.getCurrentMenuState();
    if (menuBottomViewHeight > 0 && slidingUp) {
      menu.slideUp();
      if (skipHalfScreenState) {
        menu.slideUp();
      }
    } else if (slidingDown) {
      needCloseMenu = !menu.slideDown();
      if (!needCloseMenu && skipHalfScreenState) {
        menu.slideDown();
      }
    }
    int newMenuState = menu.getCurrentMenuState();
    boolean needMapAdjust =
        false; // oldMenuState != newMenuState && newMenuState != MenuState.FULL_SCREEN;

    if (newMenuState != oldMenuState) {
      doBeforeMenuStateChange(oldMenuState, newMenuState);
    }

    applyPosY(currentY, needCloseMenu, needMapAdjust, oldMenuState, newMenuState);
  }