AnimatedVectorDrawable没有显示任何动画API 21+

时间:2016-12-06 07:13:16

标签: android android-vectordrawable

我遵循android指南使用动画矢量drawable here

我使用android vector studio制作了xml矢量文件(img_logo.xml)

动画矢量drawable xml文件

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_logo" >
    <target
        android:name="rotationGroup"
        android:animation="@anim/rotate" />
    <target
        android:name="v"
        android:animation="@anim/anim_path" />
</animated-vector>

并将其设置为imageview

<ImageView
        android:id="@+id/img_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:elevation="@dimen/view_elevation"
        android:layout_marginBottom="@dimen/activity_horizontal_margin"/>

我还尝试使用下面显示的代码here

从代码中设置动画
AnimatedVectorDrawable d = (AnimatedVectorDrawable) getDrawable(R.drawable.anim_logo); // Insert your AnimatedVectorDrawable resource identifier
mImageView.setImageDrawable(d);
d.start();

Belom是动画片xml 的 anim_path.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:duration="1000"
        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>

rotate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:duration="1000"
        android:propertyName="rotation"
        android:valueFrom="0"
        android:valueTo="360" />
</set>

你可以找到here

中的矢量绘图

我已按照指南中的说明设置了一切,但是当我运行应用程序时,它并不是动画图像。任何帮助感谢。

1 个答案:

答案 0 :(得分:0)

首先,VectorDrawable非常庞大而且复杂。这不应该阻止它工作,但可能导致性能不佳;作为参考,文件建议200dp x 200dp as the maximum size

这不是一个有效的动画的原因是,AnimatedVectorDrawable试图瞄准不存在的VectorDrawable部分。 在行中:

    <target
        android:name="rotationGroup"
        android:animation="@anim/rotate" />
    <target
        android:name="v"
        android:animation="@anim/anim_path" />

目标名称指定将每个动画应用到VectorDrawable的哪个部分,因此我们期望在VectorDrawable中找到它们:

    <group
        android:name="rotationGroup"
        ...

    <path
        android:name="v"
        ...

但是VectorDrawable中没有任何名称与预期目标匹配的部分,因此要制作一个有效的动画,你需要修复它。