Пример использования ViewFlipper в Android. Обзор контейнера ViewFlipper

Пример использования ViewFlipper в Android. Обзор контейнера ViewFlipper

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

Обзор контейнера ViewFlipper

Класс ViewFlipper наследует базовый класс ViewAnimator, который делает переходы между двумя или более дочерними View. На экране может быть показан только один дочерний View, остальные же будут показаны по нажатию или по истечению заданного времени, после чего ViewFlipper пролистает к следующему по иерархии объекту View.

Анимации в ViewFlipper

ViewFlipper поддерживает анимацию перехода с одного экрана на другой. Это делается с помощью методов setInAnimation() и setOutAnimation(),  которые анимируют появление и затухание элементов View. Мы можем использовать анимацию по умолчанию Android системы или написать свой собственный класс анимации.

Переходы в ViewFlipper

Для контроля автоматического флипа (пролистывания) экранов приложения мы можем запускать и останавливать таймер на ViewFlipper контейнере. Управлять этим нам помогают методы startFlipping() и stopFlipping(), а также метод setFlipInterval(), который устанавливает интервал между пролистыванием экранов внутри ViewFlipper.

Явно вызывать следующий или предыдущий экран позволяют методы showNext() и showPrevious() контейнера ViewFlipper.

Пример использования ViewFlipper в Android

Наше приложение будет состоять из 3х экранов. Мы сами будем обрабатывать события, связанные с переходами между экранами. Автоматический переход на следующий экран реализуется всего в одну строчку, а мы хотим попробовать как можно больше возможностей компонента ViewFlipper.

1. Создание Android проекта

Первым делом создадим новый проект в Android Studio. Кто не знает как, то смотрим пример здесь.

2. Анимация переходов

Теперь идем в папку res и создаем папку ресурсов для анимации: res -> New -> Android Resource Directory:

Anim directory

Теперь создадим 4 новых xml файла Animation Resource File: res -> New -> Animation resource file:

animation

Речь идет о 2 xml для анимации появления объекта View на экране и его ухода с экрана с левой стороны и такие же 2 анимации для появления/затухания с правой стороны:

Анимация появления слева left_in.xml:

Анимация ухода с экрана влево left_out.xml:

Такие же анимации для появления/ухода с экрана в право:

Анимация right_in.xml:

Анимация right_out.xml:

Вкратце о тегах анимации:

  • <set> — контейнер, который может содержать другие элементы анимаций.
  • <translate> — описывает вертикальное или горизонтальное движение. В нашем случае, горизонтальное, потому что мы описывали изменения по оси Ox.
  • <alpha> определяет появления/затухания анимации.

3. Макет с контейнером ViewFlipper

Теперь можем приступить к разметке контейнера ViewFlipper в макете activity_main.xml:

Как видите, в контейнере ViewFlipper 3 дочерних RelativeLayout. в каждом из которых 2 виджета Button (следующий экран, TextView как индикатор текущего экрана и переход на предыдущий экран).

4. Управление контейнером ViewFlipper в коде

Теперь давайте опишем наши виджеты в классе MainActivity:

В коде мы определили кнопки, повешали слушатели и описали логику работу с контейнером ViewFlipper.

Теперь запустим приложение и посмотрим что получилось:

Ограничения, указанные в методе showNext() не дают нам пройти дальше третьего экрана. Такое же ограничение в методе showPrevious().

Под конец давайте рассмотрим другие атрибуты и возможности ViewFlipper, которые Вы можете применить в текущем проекте:

  • Атрибут android:flipInterval используется для задания интервала между автоматическим пролистыванием экранов внутри контейнера ViewFlipper. Задается в миллисекундах, например, android:flipInterval="3000".
  • Атрибут android:autoStart обозначает автоматический старт слайдшоу. Может принимать значения true или false.
  • Методы startFlipping()stopFlipping()setFlipInterval(int milliseconds), отвечающие за старт слайдшоу, остановку слайдшоу и установку интервала между переходами соответственно.

Об остальных атрибутах и возможностях контейнера ViewFlipper читайте в документации.

Скачать готовый Android проект можно по ссылке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *