Общее состояние MVVM с анимированными видами - PullRequest
0 голосов
/ 25 марта 2019

Предполагая, что у меня есть 2 фрагмента A и B. Каждый из них содержит представление соответственно viewA и viewB. Оба вида скрыты по умолчанию.

Существует модель общего представления, которая называется sharedVM (связана с действием)

Событие A от пользователя покажет viewA с анимацией и скроет viewB с анимацией (если viewB виден) Событие B от пользователя покажет viewB с анимацией и скроет viewA с анимацией (если viewA видна)

Я хоть о:

Решение 1: Используйте состояние LiveData внутри sharedVM, чтобы узнать, являются ли представления скрытыми или видимыми. Но тогда, когда фрагмент уничтожен и воссоздан: анимация скрытия / показа будет воспроизведена снова , это не хорошо.

Решение 2: Используйте LiveDataEvent внутри sharedVM, чтобы узнать диспетчеризацию и запуск анимации. Но тогда, когда фрагмент уничтожен и воссоздан: Понятия не имею о предыдущих состояниях представлений ...

Какой подход лучше?

1 Ответ

0 голосов
/ 25 марта 2019

Я думаю, вам нужно:

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

Вы можете сделать это в onViewCreated() обратном вызове. Это исправление заставит ваше первое решение работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...