可以使用ObjectAnimator进行动画处理的Android属性

时间:2012-07-24 14:36:25

标签: android animation android-animation objectanimator

我开始在视图动画中使用Property Animations,因为我有一个视图需要扩展并将其他视图放在一边。我已经看到了一些例子,但我只是想知道是否有任何地方提供了可以使用这些类改变的属性列表。例如,我看到一个使用以下方法快速轮换的教程:

ObjectAnimator.ofFloat(aniView, "rotation", 360)

这很酷,但如果没有那个确切的教程,我就不会知道旋转属性,有什么可以做的全面列表吗?我想要设置动画的特定属性是LinearLayout中视图的权重,如果有人对此有任何建议。

4 个答案:

答案 0 :(得分:55)

迟到总比没有好,所以这里是可以用ObjectAnimator动画的全面属性列表。

http://developer.android.com/guide/topics/graphics/prop-animation.html#views

答案 1 :(得分:24)

Docs暗示只要您遵循命名约定,任何值都可以与ObjectAnimator一起使用:

  
      
  1. 您正在设置动画的对象属性必须具有set<propertyName>()形式的setter函数(在camel情况下)。因为   ObjectAnimator在此期间自动更新属性   动画,它必须能够使用此setter访问该属性   方法。例如,如果属性名称为foo,则需要有一个   setFoo()方法。如果此setter方法不存在,则有三个   选项:      
        
    • 如果您有权,请将setter方法添加到类中   这样做。
    •   
    • 使用您有权更改和拥有的包装类   该包装器使用有效的setter方法接收值并转发   它到原始对象。
    •   
    • 请改用ValueAnimator。
    •   
  2.   
  3. [...]
  4.   

关于您的问题,View使用方法setRotation(float) - 它会为您提供一个可以使用的提示。特别是在这里,您将如何使用特定的TimeInterpolator

ObjectAnimator anim = ObjectAnimator.ofFloat(myView, "rotation", 0f, 90f);
anim.setDuration(2000);                  // Duration in milliseconds
anim.setInterpolator(timeInterpolator);  // E.g. Linear, Accelerate, Decelerate
anim.start()                             // Begin the animation

您可以阅读文档,了解有关ObjectAnimator的期望的详细信息。

答案 2 :(得分:14)

以下是您要查找的属性名称的完整列表:

  • 旋转
  • 的rotationX
  • 的rotationY
  • translationX
  • translationY
  • 的scaleX
  • 的scaleY
  • pivotX
  • pivotY
  • 阿尔法
  • X
  • ý

来源:Docs

答案 3 :(得分:0)

使用“ translateX ”或“ transalteY ”移动<group> 看看vectorDrawable