Android и воспроизведение SVG-анимации - PullRequest
35 голосов
/ 02 февраля 2012

Я пишу приложение для Android и хочу сыграть в простую SVG-анимацию. Я знаю, что Android не предлагает поддержку SVG; какие у меня варианты?

Ответы [ 3 ]

6 голосов
/ 27 сентября 2017

Начиная с Android Lollipop (уровень API 21) можно реализовать с помощью AnimatedVectorDrawable .

Существуют также инструменты, которые помогут анимировать векторную графику shapehifter и сообщение в блоге от автора инструмента shapehifter Введение в методы анимации значков .

5 голосов
/ 19 января 2017
  1. Возьмите свое SVG-изображение и преобразуйте его в VectorDrawable здесь
  2. Добавьте загруженный файл XML в свой проект и посмотрите, как он выглядит. Вот пример VectorDrawable, подготовленного для анимации вращения и изменения пути:

    <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="64dp"
     android:width="64dp"
     android:viewportHeight="600"
     android:viewportWidth="600" >
     <group
         android:name="rotationGroup"
         android:pivotX="300.0"
         android:pivotY="300.0"
         android:rotation="45.0" >
         <path
             android:name="v"
             android:fillColor="#000000"
             android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
     </group>
    

3 Теперь создайте AnimatedVectorDrawable, где вы ссылаетесь на вращение Group и морфинг пути в созданном VectorDrawable

<?xml version="1.0" encoding="UTF-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/vectordrawable">
   <target android:name="rotationGroup" android:animation="@anim/rotation" />
   <target android:name="v" android:animation="@anim/path_morph" />
</animated-vector>

4 Создайте два аниматора для AnimatedVectorDrawable:

<objectAnimator
    android:duration="6000"
    android:propertyName="rotation"
    android:valueFrom="0"
    android:valueTo="360" />

и:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:duration="3000"
        android:propertyName="pathData"
        android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z"
        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
        android:valueType="pathType"/>
 </set>

(Можно также определить все это в одном файле, см. документы здесь )

Один из способов запустить анимацию - получить растягиваемый вид и запустить start().

0 голосов
/ 17 июля 2017

Используйте VectorDrawable.если цель под Lollipop, используйте библиотеку поддержки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...