web-dev-qa-db-ja.com

AndroidおよびSVGアニメーションの再生

Androidアプリケーションを作成していますが、単純なSVGアニメーションを再生したいと思います。 AndroidがSVGサポートを提供していないことは承知しています。ここで私のオプションは何ですか?

35
SK9
  1. SVG画像を取得してVectorDrawableに変換します here
  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次に、作成したVectorDrawableでrotationGroupとパスモーフを参照するAnimatedVectorDrawableを作成します

_<?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の2つのアニメーターを作成します。

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

(このすべてを1つのファイルで定義することも可能です。 docs here を参照してください)

アニメーションを開始する1つの方法は、ビューからドロアブルを取得してstart()を実行することです。

6
nilsi

Android Lollipop(APIレベル21)から開始すると、 AnimatedVectorDrawable を使用して実装できます。

また、ベクトルdrawable shapeshifter のアニメーション化に役立つツールと、ツールshapeshifterの作成者からのブログ投稿 アイコンアニメーション手法の紹介 があります。

VectorDrawableを使用します。ターゲットがLollipopの下にある場合は、 サポートライブラリ を使用します。

0
Fr099y