Android Material Design против ContentObserver

Я постараюсь объяснить свой вопрос как можно лучше.

Во время поиска того, где зарегистрировать / отменить регистрацию моего ContentObserver, я вижу несколько ответов, в которых говорится, что это должно быть в onResume / onPause или onStart / onStop, но не в onCreate / onDestroy. Скажем, у меня была регистрация / удаление регистрации в onStart / onStop, чтобы убедиться, что мое представление все еще обновляется свежими данными, я извлекаю данные, а затем обновляю свое представление в методе onStart перед регистрацией ContentObserver.

Все в порядке и работает нормально, пока... SharedElement с переходом Material Design.

Поскольку Представьте, что Activity A регистрируется в Data-A и в onStart обновляет данные, поэтому View. Когда пользователь касается элемента, он запускает анимацию SharedElement для деталей этого элемента: действие B с Data-A[n]

Проблема в том, что когда я возвращаюсь к действию A из действия B, исходный элемент в моем списке больше не существует из-за обновления моих данных, и моя анимация не имеет желаемого поведения.

У вас есть какие-нибудь идеи по этому поводу?


person Igloob    schedule 30.11.2015    source источник


Ответы (1)


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

Взгляните на обратные вызовы общих элементов.

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

Взгляните на следующую ссылку, она демонстрирует то же самое.

person dumb_terminal    schedule 03.12.2015
comment
Спасибо, я бы посмотрел, я думал об использовании ShareElementCallback. Чтобы быть более конкретным, мои данные не меняются все время, я просто обновляю представление в onStart, чтобы не пропустить изменения. Просто идея, но как насчет обновления представления после завершения анимации? - person Igloob; 04.12.2015
comment
все зависит от вашего варианта использования. Идея моментального снимка состоит в том, чтобы анимировать что-то, когда между двумя действиями нет общих элементов (по крайней мере, на вид). - person dumb_terminal; 04.12.2015