#android #animation
#Android #Анимация
Вопрос:
В моем приложении для Android у меня есть понятие «тропы»: последовательность объектов, по которым пользователь может перемещаться. Тот же вид, естественно, используется для отображения всех объектов, Просто обновляя компоненты (тексты, изображения и т. Д.), Когда Должен быть показан следующий объект.
Теперь я хочу анимировать переход между объектами: когда пользователь переходит от объекта к следующему объекту, я хочу использовать анимацию слайдов справа налево (и наоборот). Проблема в том, что у меня нет двух представлений для анимации — только одно представление. Поэтому, когда я пытаюсь анимировать отображение этого представления (когда должен быть загружен следующий объект), видимый вид исчезает, я получаю пустой экран, а затем вид скользит справа.
Вместо этого я хочу, чтобы существующий вид выдвигался и заменялся новым видом (тем же видом, но с другим содержимым), который будет вставляться справа.
Как мне это сделать?
Ответ №1:
Мне кажется, что это комбинация LayoutTransition
и GestureDetector
. Возможно, вы даже ViewFlipper
там тоже.
В LayoutTransition есть функция анимации, которую вы, возможно, захотите изучить.
Комментарии:
1. Да, я изучал LayoutTransition, но не могу понять, как это будет применяться в данном случае.
Ответ №2:
Я не смог понять, как использовать LayoutTransition в моем случае, поэтому вместо моего представления я заменил его ViewFlipper, содержащим две копии моего представления. Когда мне нужно заменить представление другим, я отслеживаю, какое из двух отображается в данный момент, затем обновляю другое вне экрана, а затем использую стандартную анимацию «слайд слева» и «слайд справа» showNext()
. Это сложнее, чем я действительно хотел, и использует больше памяти, но оно выполняет свою работу.
Ответ №3:
Решение оказалось очень простым: ViewPager. Я предоставляю PageAdapter, который возвращает два похожих представления (одинаковый макет, разное содержимое), а ViewPager позаботится обо всем остальном. Если бы я хотел отключить изменения страницы прокрутки, все, что мне нужно было сделать, это расширить ViewPager, переопределить onInterseptTouchListener и вернуть false .