淡出并使用ObjectAnimator翻译VectorDrawable

skw*_*ear 1 android android-animation objectanimator android-vectordrawable

我试图让AnimatedVectorDrawable同时淡出和翻译.我做了一个ObjectAnimator资源:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
    android:propertyName="translationX"
    android:duration="@+string/animtime"
    android:valueFrom="0"
    android:valueTo="150"
    android:valueType="floatType"/>
<objectAnimator
    android:propertyName="alpha"
    android:duration="@+string/animtime"
    android:valueFrom="255"
    android:valueTo="0"
    android:valueType="intType"/>
Run Code Online (Sandbox Code Playgroud)

然后有针对性一个VectorDrawableObjectAnimation:

<target
    android:name="disgust"
    android:animation="@anim/fadetransout" />
Run Code Online (Sandbox Code Playgroud)

VectorDrawable是资源文件<group>中的一个VectorDrawable.

但是当我开始动画时,什么都没发生.我究竟做错了什么?

我在堆栈跟踪中发现了这个:

Method setTranslationX() with type float not found on target class class android.graphics.drawable.VectorDrawable$VGroup
Method setAlpha() with type int not found on target class class android.graphics.drawable.VectorDrawable$VGroup
Run Code Online (Sandbox Code Playgroud)

它与此有关吗?

如果这是不可能的,还有另一种方法可以让我VectorDrawable淡化和翻译吗?

谢谢.

skw*_*ear 10

我发现了我做错了什么.我再看看这个并意识到问题所在.我没有说,并且认为重要的是disgustdrawable是a <group>并且<group>确实有一个x转换属性但它被调用translateX,所以这是我出错的第一件事.

第二件事是属性alpha是整个属性<vector>的"父" <group>.我真正想要的是改变a的alpha的东西<path>.这是通过使用属性完成的fillAlpha.fillAlpha是,从进了浮01.0透明且1不透明.0255装置它消失在持续时间255次.

最后,这两个objectAnimators不能在同一个XML文件中,因为一个用于a <group>,一个用于a <path>.所以最终结果如下:

在一个名为translate_out.xml我现在的文件中,

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:propertyName="translateX"
        android:duration="@integer/animation_duration"
        android:valueFrom="0"
        android:valueTo="150" />
</set>
Run Code Online (Sandbox Code Playgroud)

在另一个名为fade_out.xmlI now的文件中,

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:propertyName="fillAlpha"
        android:duration="@integer/animation_duration"
        android:valueFrom="1"
        android:valueTo="0" />
</set>
Run Code Online (Sandbox Code Playgroud)

最后,vectordrawable.xml我有,

<target
    android:name="disgust_path"
    android:animation="@anim/fade_out" />
<target
    android:name="disgust"
    android:animation="@anim/translate_out" />
Run Code Online (Sandbox Code Playgroud)

disgust_path现在在哪里我已经命名的路径始终在disgust组内.

我已将动画时间字符串移动到integers.xml并调用它animation_duration.