首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >淡出并用ObjectAnimator翻译ObjectAnimator

淡出并用ObjectAnimator翻译ObjectAnimator
EN

Stack Overflow用户
提问于 2016-04-10 07:20:29
回答 1查看 3.7K关注 0票数 2

我试图让一个AnimatedVectorDrawable淡出和翻译在同一时间。我创建了一个ObjectAnimator资源:

代码语言:javascript
复制
<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

代码语言:javascript
复制
<target
    android:name="disgust"
    android:animation="@anim/fadetransout" />

VectorDrawableVectorDrawable资源文件中的一个<group>

但是当我开始动画片的时候,什么都没有发生。我做错了什么?

我在堆栈跟踪中找到了这个:

代码语言:javascript
复制
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褪色和翻译吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-11 16:53:44

我发现了我做错了什么。我再次看了一下,并意识到问题是什么。我没有说,也不认为重要的是,disgust绘图是一个<group><group>有一个x转换属性,但是它被称为translateX,所以这是我第一个出错的地方。

第二件事是属性alpha是整个<vector>的属性,它是<group>的“父”。我真正想要的是改变<path>的alpha值。这是通过使用属性fillAlpha完成的。fillAlpha是一个从01的浮点数。0透明,1不透明。0 to 255意味着它在持续时间内在255次内消失。

最后,这两个objectAnimator不能放在同一个XML文件中,因为一个用于<group>,另一个用于<path>。最后的结果是:

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

代码语言:javascript
复制
<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的文件中,

代码语言:javascript
复制
<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上,

代码语言:javascript
复制
<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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36527020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档