安卓和播放SVG动画

45

我正在编写一个Android应用程序,想播放一个简单的SVG动画。我知道Android不支持SVG;那么我的选择是什么?


http://blog.sqisland.com/2014/10/first-look-at-animated-vector-drawable.html - Pratik Butani
3个回答

14

9
  1. Take your SVG image and convert it to a VectorDrawable here
  2. Add your downloaded XML file to your project and see how it looks. Heres an example of an VectorDrawable prepared for a rotation and path morph animation:

    <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,在其中引用创建的VectorDrawable中的rotationGroup和path morph。

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

创建两个动画器以用于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()

有没有关于我们如何理解SVG路径及其值的课程? - RoCkDevstack
19
@RoCkVangeance 的教训是 Google 正试图重复造轮子。为什么不支持本地的标准技术 SVG(以及 CSS 动画),而是使用针对 Android 的 <vector> 和 <objectAnimator> ? Google,用户想知道原因! - Marcel Falliere
正如链接1中所述(没有广告),该网站会告诉您: 此工具已被弃用。请改用官方的矢量资源工作室(https://developer.android.com/studio/write/vector-asset-studio#svg)。 - pizzamonster

0

使用VectorDrawable。如果目标版本低于Lollipop,请使用支持库


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接