我遵循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
中的矢量绘图我已按照指南中的说明设置了一切,但是当我运行应用程序时,它并不是动画图像。任何帮助感谢。
答案 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中没有任何名称与预期目标匹配的部分,因此要制作一个有效的动画,你需要修复它。