Скрыть / показать анимацию

#gwt #panel

#gwt #панель

Вопрос:

Я хотел бы знать, возможно ли создать анимацию на панели «Скрыть / показать» с помощью простого gwt (без дополнительных библиотек).

Любые предложения приветствуются.

Спасибо

Ответ №1:

Классы компоновки GWT поддерживают анимацию. Проверьте Layout , DockLayout ru SplitLayout . Кроме того, существует Animation класс, который используется в нескольких панелях для использования анимации для отображения / скрытия содержимого. Просто проверьте классы, используя класс Animation.

Ответ №2:

Возможно, вы найдете этот код полезным из NotificationMole:

 private class MoleAnimation extends Animation {
    private int endSize;
    private int startSize;

    @Override
    protected void onComplete() {
      if (endSize == 0) {
        borderElement.getStyle().setDisplay(Display.NONE);
        return;
      }
      borderElement.getStyle().setHeight(endSize, Unit.PX);
    }

    @Override
    protected void onUpdate(double progress) {
      double delta = (endSize - startSize) * progress;
      double newSize = startSize   delta;
      borderElement.getStyle().setHeight(newSize, Unit.PX);
    }

    void animateMole(int startSize, int endSize, int duration) {
      this.startSize = startSize;
      this.endSize = endSize;
      if (duration == 0) {
        onComplete();
        return;
      }
      run(duration);
    }
  }
  

Использование:

  • чтобы скрыть панель:

    animation.animateMole(heightMeasure.getOffsetHeight(), 0, animationDuration);

  • чтобы показать:

    borderElement.getStyle().setDisplay(Отображать.БЛОК);
    animation.animateMole(0, heightMeasure.getOffsetHeight(), animationDuration);

Где borderElement — элемент разделения контейнера и heightMeasure — внутренний элемент разделения.