淡出并使用ObjectAnimator翻译VectorDrawable

时间:2016-04-10 07:20:30

标签: 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"/>

然后使用VectorDrawable

{定位ObjectAnimation <target android:name="disgust" android:animation="@anim/fadetransout" /> {2}}

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淡出和翻译吗?

谢谢。

1 个答案:

答案 0 :(得分:10)

我发现了我做错了什么。我再看了this并意识到问题所在。我没有说过,并且没有重要的想法是new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), APP_TAG) drawable是disgust<group>确实有x翻译属性但是&#39;我称之为<group>,这是我出错的第一件事。

第二件事是属性translateX适用于整个alpha,即父母&#34; <vector>。我真正想要的是改变<group>的alpha的东西。这是通过使用属性<path>完成的。 fillAlpha是一个从fillAlpha0的浮点数。 1透明且0不透明。 10表示它在持续时间内会消失255次。

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