2015-05-14 78 views
11

我想在运行时的动画我AnimatedVectorDrawable添加动画,而无需使用.xml文件。其实我使用.xml文件一样的文件的样本显示:在运行时

AnimatedVectorDrawable

所以,我有vector_drawable.xml包含<vector>嵌套<group><path>定义的形状。

对于此载体我有animated_vector_drawable.xml包含<animated-vector>android:animation assinged <target>

最后一步是定义使用<objectAnimator>它使用animated_vector_drawable.xml

一切正常动画文件rotation.xml,但出现的问题,当我需要创建很多不同的形状(矢量)与许多不同的或类似的动画,因为这会生成很多.xml文件。

  1. 我不能包括准备从一个.xml文件到另一个(某种<include>标签)准备<vector>所以我需要相同的代码复制到另一个文件。这是非常烦人的。

  2. 如果我想使用一些<target>元素相同的动画,但是每个动画必须F.E.不同的延迟或任何属性值(alpharotationinterpolator ...),我必须创建新.xml文件包含<objectAnimator>与改变一个属性值,而不是使用相同的,一个文件,更改的属性值。这也很烦人。

  3. 我发现我可以使用ObjectAnimator并设置alpha & fillColorAnimatedVectorDrawable但有一个问题,当我想改变它的translateXtranslateYrotation或任何其他属性。没有.xml没有办法做到这一点。我只想访问<group>

+2

你怎么做这个“我发现我可以使用ObjectAnimator并设置阿尔法和填充颜色为AnimatedVectorDrawable编程” – stack

+3

是。我也很想知道如何在这里以编程方式访问ObjectAnimator。 –

+0

我也有兴趣知道这是否有解决方案 –

回答

0

您使用的构造函数使用绝对值(像素)创建动画。

TranslateAnimation in = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 1.0f, 
Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f); 

尝试使用Animation.RELATIVE_TO_PARENT以适合您的需求。