Как сделать плавный переход к другим формам с помощью бокового меню в Codename One (с помощью панели инструментов)? - PullRequest
1 голос
/ 10 апреля 2019

Я создаю боковое меню для своего приложения в Codename One, используя Toolbar().У меня настроены вкладки и код для перехода из одной соответствующей формы в другую, но переходы не являются плавными и не очень привлекательными.В частности, когда я нажимаю на вкладку, заголовок формы, соответствующей этой вкладке, скользит (в то время как заголовок текущей формы смещается влево) - это очень странно и нежелательно.В то же время боковое меню просто исчезает, вместо того, чтобы правильно «закрыться», скользя назад влево.

Я попытался изменить переходы между формами (что произойдет, когда я выберувкладка в боковом меню).В то время как это немного помогло скользящему вопросу о формах, боковое меню все еще резко исчезает.

  public void myDay() {

      Form display = new Form("My Day");
      launchToolbar(display);
      display.setTransitionOutAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_HORIZONTAL, false, 300));
      display.show();

  }

  public void marks() {

      Form display = new Form("Marks");
      launchToolbar(display);
      display.setTransitionOutAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_HORIZONTAL, false, 300));
      display.show();

  }

  public void start() {
      if(current != null){
          current.show();
          return;
      }


      Form hi = new Form("Title");

      Toolbar tb = hi.getToolbar();

      Container topBar = new Container();
      topBar.setUIID("TopBar");
      tb.addComponentToSideMenu(topBar);

      Container signedIn = BorderLayout.east(new Label(""));
      signedIn.add(BorderLayout.SOUTH, new Label("Signed in as", "userBar"));
      signedIn.setUIID("userBar");
      tb.addComponentToSideMenu(signedIn);

      Container username = BorderLayout.east(new Label(""));
      username.add(BorderLayout.SOUTH, new Label("tristansharma", "userBarName"));
      username.setUIID("userBarName");
      tb.addComponentToSideMenu(username);


      tb.addMaterialCommandToSideMenu(" My Day", FontImage.MATERIAL_SCHEDULE, e -> {
          hi.setTransitionOutAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_HORIZONTAL, false, 1));
          myDay();
          hi.showBack();
      });

      tb.addMaterialCommandToSideMenu(" Marks", FontImage.MATERIAL_ASSESSMENT, e -> {
          hi.setTransitionOutAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_HORIZONTAL, false, 1));
          marks();
          hi.showBack();
      });
  }

  public Toolbar launchToolbar(Form a) {

      Toolbar inp = a.getToolbar();

      Container topBar = new Container();
      topBar.setUIID("TopBar");
      inp.addComponentToSideMenu(topBar);

      Container signedIn = BorderLayout.east(new Label(""));
      signedIn.add(BorderLayout.SOUTH, new Label("Signed in as", "userBar"));
      signedIn.setUIID("userBar");
      inp.addComponentToSideMenu(signedIn);

      Container username = BorderLayout.east(new Label(""));
      username.add(BorderLayout.SOUTH, new Label("tristansharma", "userBarName"));
      username.setUIID("userBarName");
      inp.addComponentToSideMenu(username);


      inp.addMaterialCommandToSideMenu(" My Day", FontImage.MATERIAL_SCHEDULE, e -> {
          a.setTransitionOutAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_HORIZONTAL, false, 1));
          myDay();
          a.showBack();        });

      inp.addMaterialCommandToSideMenu(" Marks", FontImage.MATERIAL_ASSESSMENT, e -> {
          a.setTransitionOutAnimator(CommonTransitions.createCover(CommonTransitions.SLIDE_HORIZONTAL, false, 1));
          marks();
          a.showBack();        });     ;


      return inp;

  }

По сути, я пытаюсь правильно закрыть панель инструментов, закрыв ее, а не просто исчезая.Ниже приведены ссылки на другие ресурсы, которые я пытался проконсультировать, но до сих пор не могу найти решение.

Сделать слайд бокового меню НАД формы в кодовое имя один

Форма кодовое имя добавляет другой заголовок вместо обновления при обновлении панели инструментов

Codename One: странная анимация панели инструментов при изменении формы

...