Android AnimatedVectorDrawable到可绘制路径的空路径

Android AnimatedVectorDrawable到可绘制路径的空路径,android,animation,svg,vector,Android,Animation,Svg,Vector,我想要什么 我想能够从无路径->目标绘制一个向量。例如,从零开始画一个复选标记SVG 我尝试过的 这是我的矢量绘图: <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="128dp" android:width="128dp" android:viewportWid

我想要什么

我想能够从无路径->目标绘制一个向量。例如,从零开始画一个复选标记SVG

我尝试过的

这是我的矢量绘图:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="128dp"
    android:width="128dp"
    android:viewportWidth="24"
    android:viewportHeight="24">

<path
    android:name="done"
    android:pathData="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
    android:fillColor="#fff"
    android:strokeWidth="1"
    android:strokeLineCap="round"
    android:strokeColor="#fff"/>

这只是一个复选标记

这是我的动画(我知道这是错误的:()。用于从一个可绘制向量到另一个可绘制向量的动画的路径数据必须具有相同数量的路径方向:

<objectAnimator
android:duration="3000"
android:propertyName="pathData"
android:valueFrom="0"
android:valueTo="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
android:valueType="pathType"
xmlns:android="http://schemas.android.com/apk/res/android" />

和动画矢量(将矢量+动画连接在一起)



如上所述,这是错误的。那么,我如何为SVG创建一个对象动画,使其从无路径动画到我想要的路径。此动画类似于绘制可绘制对象的人。

正如您所说,这两个路径描述必须具有相同数量的命令和坐标。您的路径是一个填充形状,您只能为线性变形。所以你不能做两步向下然后向上检查运动。至少不能用单路径变形

第一个简单的方法就是从路径的起点开始。这恰好是在复选标记的拐弯处。所以它看起来并不坏


在您选择的持续时间内,您可以将trimPathEnd属性从0设置为1,而不是设置pathData的动画。因此,将propertyName更改为trimPathEnd,并适当地更改AnimatedVectorDrawable文件。结果就像现在正在写入勾号一样

此外,如果您想要演示,请阅读本教程。本文正文中有一些交互式演示项目


您也可以在android开发者网站上阅读有关AnimatedVectorDrawable类的内容。虽然trimPathEnd propertyName不在列表中,但它可以工作。

哇,我稍后会尝试这一点,这是一个好主意。我喜欢增加两臂的想法。我几天前刚刚发现了SVG的动画概念,所以我正在进行探索。有什么提示吗关于如何解析路径字符串?在某种程度上,它读起来像是胡言乱语,我想了解更多最终的来源是SVG规范:@rosenthal你最终创建了什么vector drawable?你能分享代码吗?
<?xml version="1.0" encoding="utf-8"?>
<animated-vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_done">

<target
    android:animation="@animator/ic_disappear"
    android:name="opacity"/>