AnimatedVectorDrawable does not animate

2020-08-09 08:54发布

问题:

I tried to get animated vectorDrawables working and did everything according to http://developer.android.com/reference/android/graphics/drawable/AnimatedVectorDrawable.html and it still does not work.

I also tried to make this project work. https://github.com/chiuki/animated-vector-drawable

Does anyone know why it does not animate?

Here are the files I used:

AnimatedVectorDrawable

<animated-vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/circle">
​
    <target
        android:name="circle"
        android:animation="@anim/morph_to_drop"/>
​
</animated-vector>

VectorDrawable

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="80dp"
        android:height="80dp"
        android:viewportHeight="50"
        android:viewportWidth="50">
​
    <path
        android:name="circle"
        android:fillColor="#607eff"
        android:pathData="M15.9,0c8.776,0 15.9,7.125 15.9,15.9c0,8.776 -7.124,16.015 -15.9,16.015c-8.775,0
-15.9,-7.239 -15.9,-16.015c0,-8.775 7.125,-15.9 15.9,-15.9Z"/>
​
</vector>

Animator (morph_to_drop)

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:duration="1000"
        android:propertyName="pathData"
        android:valueFrom="M15.9,0c8.776,0 15.9,7.125 15.9,15.9c0,8.776 -7.124,16.015 -15.9,16.015c-8.775,0
-15.9,-7.239 -15.9,-16.015c0,-8.775 7.125,-15.9 15.9,-15.9Z"
        android:valueTo="M15.9,0c8.776,0 15.9,7.125 15.9,15.9c0,8.776 -12.626,30.167
-15.707,30.143c-3.08,-0.024 -16.093,-21.367 -16.093,-30.143c0,-8.775 7.125,-15.9
15.9,-15.9Z"
        android:valueType="pathType"/>
</set>

Main Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
​
    <ImageView
        android:id="@+id/testImage"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_centerInParent="true"
        android:src="@drawable/circle"/>
​
</RelativeLayout>

回答1:

Try to set the AnimatedVectorDrawable programmatically like this:

AnimatedVectorDrawable d = (AnimatedVectorDrawable) getDrawable(R.drawable.animated_vector); // Insert your AnimatedVectorDrawable resource identifier
mImageView.setImageDrawable(d);
d.start();

This should do the trick. Cheers!