在运行时添加animation

我想在运行时为AnimatedVectorDrawable设置AnimatedVectorDrawable ,而不使用.xml文件。 实际上我使用.xml文件的方式与文档示例相同:

AnimatedVectorDrawable

所以,我有vector_drawable.xml包含带有嵌套 和定义形状的

对于这个向量,我有animated_vector_drawable.xml包含其中android:animation绑定到

最后一步是使用定义animation文件rotation.xml ,由animated_vector_drawable.xml

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

  1. 我不能将一个.xml文件中的准备好和准备好的包含到另一个(某种标记)中,所以我需要将相同的代码复制到另一个文件中。 这很烦人。

  2. 如果我想对少数元素使用相同的animation,但每个animation必须有不同的延迟或任何属性值( alpharotationinterpolator …),我必须创建包含.xml文件一个属性值而不是使用相同的,一个文件具有更改的属性值。 这也很烦人。

  3. 我发现我可以使用ObjectAnimator并为AnimatedVectorDrawable设置alphafillColor但是当我想要更改它的translateXtranslateYrotation或任何其他属性时会出现问题。 有没有办法在没有.xml情况下做到这一点。 我只想访问

您使用的构造函数创建具有绝对值(像素)的animation。

 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来满足您的需求。