web-dev-qa-db-fra.com

Android et lecture d'animation SVG

J'écris une application Android et j'aimerais jouer à une animation SVG simple. Je suis conscient qu'Android n'offre pas de support SVG; Quelles sont mes options ici?

33
SK9
  1. Prenez votre image SVG et convertissez-la en VectorDrawable here
  2. Ajoutez votre fichier XML téléchargé à votre projet et voyez à quoi il ressemble. Voici un exemple de VectorDrawable préparé pour une animation de rotation et de morphing de chemin:

    <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 Créez maintenant un AnimatedVectorDrawable dans lequel vous vous référez au groupe de rotation et au chemin d'accès au vecteur créé.

<?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 Créez deux animateurs pour AnimatedVectorDrawable:

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

et :

<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>

(Il est également possible de définir tout cela dans un seul fichier, voir le docs ici )

Une façon de commencer l'animation consiste alors à extraire le dessin de la vue et à exécuter start().

5
nilsi

À partir d'Android Lollipop (API niveau 21), il est possible d'implémenter à l'aide de AnimatedVectorDrawable

Il existe également des outils permettant d'animer des vecteurs dessinés shapeshifter et un article de blog de l'auteur de l'outil shapeshifter Une introduction aux techniques d'animation d'icônes .

4

Utilisez VectorDrawable. si la cible est sous Lollipop, utilisez bibliothèque de support

0
Fr099y