我试图让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"/>




然后使用VectorDrawable定位ObjectAnimation

<target
    android:name="disgust"
    android:animation="@anim/fadetransout" />


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


这有关系吗?

如果无法做到这一点,还有其他方法可以使我的VectorDrawable淡出并翻译吗?

谢谢。

最佳答案

我发现我做错了什么。我再次查看了this并意识到了问题所在。我没有说,也没想到的是,disgust可绘制对象是<group>,而<group>确实具有x平移属性,但它称为translateX,所以这是我得到的第一件事错误。

第二件事是属性alpha用于整个<vector>,这是<group>的“父级”。我真正想要的是更改<path>的alpha的东西。这是通过使用属性fillAlpha完成的。 fillAlpha是从01的浮点数。 0是透明的,而1是不透明的。 0255表示持续时间内淡入255次。

最后,这两个objectAnimator不能在同一个XML文件中在一起,因为一个用于<group>,一个用于<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>


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

<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>


最后在vectordrawable.xml中,

<target
    android:name="disgust_path"
    android:animation="@anim/fade_out" />
<target
    android:name="disgust"
    android:animation="@anim/translate_out" />


现在,disgust_path是我已命名的路径,始终位于disgust组中。

我已将动画时间字符串移至integers.xml,并将其命名为animation_duration

08-17 16:23