我正在尝试让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
淡出和翻译吗?
谢谢。
答案 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
是一个从fillAlpha
到0
的浮点数。 1
透明且0
不透明。 1
到0
表示它在持续时间内会消失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
。