Анимация представления Android: замена представления сама по себе

#android #animation

#Android #Анимация

Вопрос:

В моем приложении для Android у меня есть понятие «тропы»: последовательность объектов, по которым пользователь может перемещаться. Тот же вид, естественно, используется для отображения всех объектов, Просто обновляя компоненты (тексты, изображения и т. Д.), Когда Должен быть показан следующий объект.

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

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

Как мне это сделать?

Ответ №1:

Мне кажется, что это комбинация LayoutTransition и GestureDetector . Возможно, вы даже ViewFlipper там тоже.

В LayoutTransition есть функция анимации, которую вы, возможно, захотите изучить.

Комментарии:

1. Да, я изучал LayoutTransition, но не могу понять, как это будет применяться в данном случае.

Ответ №2:

Я не смог понять, как использовать LayoutTransition в моем случае, поэтому вместо моего представления я заменил его ViewFlipper, содержащим две копии моего представления. Когда мне нужно заменить представление другим, я отслеживаю, какое из двух отображается в данный момент, затем обновляю другое вне экрана, а затем использую стандартную анимацию «слайд слева» и «слайд справа» showNext() . Это сложнее, чем я действительно хотел, и использует больше памяти, но оно выполняет свою работу.

Ответ №3:

Решение оказалось очень простым: ViewPager. Я предоставляю PageAdapter, который возвращает два похожих представления (одинаковый макет, разное содержимое), а ViewPager позаботится обо всем остальном. Если бы я хотел отключить изменения страницы прокрутки, все, что мне нужно было сделать, это расширить ViewPager, переопределить onInterseptTouchListener и вернуть false .