В этой статье я хотел бы всем рассказать и показать на практике, как можно сделать анимацию в Android-приложении с помощью AnimatedVectorDrawableCompat, например свои пользовательские кнопки, ImageView, FloatingActionButton. На сегодняшний день информации по этому поводу в Интернете не так много, а точнее ее нет вообще.
Все, что мне удалось найти, это недавние нововведения, представленные Google, а именно: Статья из блога разработчиков Android Видео с Google I/O 2016 Справочник по Android Этого по сути недостаточно, чтобы понять, как применить AnimatedVectorDrawableCompat на практике.
Теперь перейдем к приложению.
На первом этапе нам нужно избавиться от того, что фреймворк превращает иконку в .
png. Начиная с версии 23.3.0 вы можете использовать .
xml, и для этого вам нужно добавить следующий флаг на уровень приложения Gradle:
И в зависимости от этого подключаем последнюю версию AppComapt:android { .
defaultConfig { .
vectorDrawables.useSupportLibrary = true } }
dependencies {
.
compile 'com.android.support:appcompat-v7:23.4.0'
}
Далее в примере я буду использовать квадрат (синий), который своими углами слегка перекроет круг (красный).
В результате мы должны использовать 2 объекта и заставить их непрерывно двигаться вдоль осей X (квадрат) и Y (круг) соответственно.
Шаги:
1)
Создайте файл ресурсов с возможностью рисования, вызовите файл icon.xml и поместите его в папку с возможностью рисования: <Эxml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android "
android:width="120dp "
android:height="120dp "
android:viewportWidth="24.0 "
android:viewportHeight="24.0 ">
<group
android:name="circle "
android:scaleX=".
7 "
android:pivotX="12 "
android:pivotY="12 ">
<path
android:fillColor="#ff0000 "
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2z"/>
</group>
<group
android:name="square "
android:scaleX="1 "
android:scaleY="1 "
android:pivotX="12 "
android:pivotY="12 ">
<path
android:fillColor="#FF0000ff "
android:pathData="M6,6h12v12H6z"/ >
</group>
</vector>
2)
Для хранения анимации в нашем проекте создаём папку animator — res/animator.
Поместим в него два объекта и назовем их соответственно:
а) круг.
xml: <Эxml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android ">
<objectAnimator
android:propertyName="translateX "
android:valueType="floatType "
android:valueFrom="0 "
android:valueTo="5 "
android:repeatMode="reverse "
android:repeatCount="infinite "
android:duration="250 " />
</set>
б) Square.xml <Эxml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android ">
<objectAnimator
android:propertyName="translateY "
android:valueType="floatType "
android:valueFrom="0 "
android:valueTo="5 "
android:repeatMode="reverse "
android:repeatCount="infinite "
android:duration="250 " />
</set>
Здесь мы указали, что объекты будут двигаться по осям X и Y, откуда они начнут движение, а также бесконечность движения.
Если у вас есть еще именованные группы, которые нужно анимировать, то их нужно создать в этом каталоге; соответственно в основном файле - icon.xml групп будет больше
3)
Теперь создаём непосредственно анимированный файл, на который будем ссылаться в макете или в коде — res/drawable/anim_icon: <Эxml version="1.0" encoding="utf-8"?>
<animated-vector
xmlns:android="http://schemas.android.com/apk/res/android "
android:drawable="@drawable/icon ">
<target
android:name="square "
android:animation="@animator/square " />
<target
android:name="circle "
android:animation="@animator/circle " />
</animated-vector>
Примечание: Android Studio подчеркивает Animation-вектор красным цветом (если минимальная версия проекта меньше 21), но если вы подключили флаг, как указано в начале, все будет работать.
4)
Теперь мы можем получить доступ к анимированным векторам в формате XML. Это может быть ImageView, ImageButton, FloatingActinonButton: <LinearLayout
.
xmlns:app="http://schemas.android.com/apk/res-auto"/ >
<ImageView
app:srcCompat="@drawable/anim_icon "
Теги: #разработка для Android #Android Studio #анимация #разработка для мобильных устройств #Android #разработка для Android #Разработка мобильных приложений #Разработка для Android
-
Можно Ли Жить Без Компьютера
19 Oct, 24 -
«Несокрушимый» Nokia 3720 Classic
19 Oct, 24 -
Intel Рассказала О Своих Новых Процессорах
19 Oct, 24