在运行时添加动画
Posted
技术标签:
【中文标题】在运行时添加动画【英文标题】:Add animation at run time 【发布时间】:2015-07-25 20:37:20 【问题描述】:我想在运行时为我的AnimatedVectorDrawable
设置动画,而不使用.xml
文件。实际上,我使用 .xml
文件的方式与文档示例显示的方式相同:
AnimatedVectorDrawable
所以,我有 vector_drawable.xml
contains<vector>
嵌套 <group>
和 <path>
定义了一个形状。
对于这个向量,我有 animated_vector_drawable.xml
包含 <animated-vector>
和 android:animation
分配给 <target>
。
最后一步是使用<objectAnimator>
定义一个动画文件rotation.xml
,该文件由animated_vector_drawable.xml
使用
一切正常,但问题出现了,当我需要使用许多不同或相似的动画创建许多不同的形状(矢量)时,因为这会生成许多 .xml
文件。
我不能将准备好的<vector>
从一个.xml
文件包含到另一个文件(某种<include>
标签),所以我需要将相同的代码复制到另一个文件。很烦人。
如果我想对几个 <target>
元素使用相同的动画,但每个动画都必须有 f.e.不同的延迟或任何属性值(alpha
、rotation
、interpolator
...),我必须创建新的 .xml
文件,其中包含 <objectAnimator>
更改了一个属性值而不是使用相同的一个文件适当的价值。这也很烦人。
我发现我可以使用ObjectAnimator
并将alpha
和fillColor
设置为AnimatedVectorDrawable
,但是当我想将其更改为translateX
,translateY
,rotation
时出现问题或任何其他属性。没有.xml
,有没有办法做到这一点。我只想访问<group>
【问题讨论】:
你如何做到这一点“我发现我可以使用 ObjectAnimator 并以编程方式为 AnimatedVectorDrawable 设置 alpha 和 fillColor” 是的。我也很想知道如何在这里以编程方式访问 ObjectAnimator。 我也很想知道是否有解决方案 嗨@Wisnia 你可以找到一些用例和代码sn-p github.com/pathikdevani/Vaividhya-2k15-Android-And-Server/blob/… 【参考方案1】:您使用的构造函数创建具有绝对值(像素)的动画。
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 来满足您的需求。
【讨论】:
以上是关于在运行时添加动画的主要内容,如果未能解决你的问题,请参考以下文章