在运行时添加动画

11

我想在运行时动画显示我的AnimatedVectorDrawable,而不使用.xml文件。实际上,我正在使用与文档示例相同的.xml文件:

AnimatedVectorDrawable

因此,我有一个包含嵌套的<group><path><vector>vector_drawable.xml来定义形状。

对于这个矢量图,我有一个包含android:animation分配给<target><animated-vector>animated_vector_drawable.xml

最后一步是定义一个动画文件rotation.xml,其中使用<objectAnimator>,该文件由animated_vector_drawable.xml使用

一切都很顺利,但当我需要创建许多不同的形状(向量)并进行许多不同或类似的动画时,问题就出现了,因为这会生成许多.xml文件。

  1. 我不能将一个准备好的<vector>从一个.xml文件包含到另一个.xml文件中(某种形式的<include>标记),因此我需要将相同的代码复制到其他文件中。这非常烦人。

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

  • 我发现我可以使用 ObjectAnimator 并设置 alphafillColor 来对 AnimatedVectorDrawable 进行动画,但是当我想要更改它的 translateXtranslateYrotation 或其他任何属性时,会出现问题。有没有办法在不使用 .xml 的情况下做到这一点?我只想访问 <group>


  • 2
    你如何做到这一点:“我发现我可以使用ObjectAnimator并在程序中设置alpha和fillColor来实现AnimatedVectorDrawable的动画效果?” - stack
    3
    是的。我也想知道如何在程序中访问ObjectAnimator。 - Eurig Jones
    我也很想知道是否有解决方案。 - You'reAGitForNotUsingGit
    嗨@Wisnia,您可以在以下链接中找到一些用例和代码片段:https://github.com/pathikdevani/Vaividhya-2k15-Android-And-Server/blob/5b2c5db0d3cbc6e0aa2276c95734a5ddac30b5a9/android/app/src/main/java/com/spidren/ui/drawer/DrawerDataLayout.java#L83 - pathik devani
    1个回答

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


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接