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

Cat*_*ord 51 animation android android-animation objectanimator

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

ObjectAnimator.ofFloat(aniView, "rotation", 360)
Run Code Online (Sandbox Code Playgroud)

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

Ony*_*nyx 58

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

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

  • 如果它适用于具有正确名称getter/setter(反射)的任何内容,或者通过定义自定义属性,则不会存在完整列表.请参见http://stackoverflow.com/a/28381280/1290264. (7认同)
  • 列表不完整,列表"xFraction"和"yFraction"有效(见[DevBytes Sliding Fragments sample](https://www.youtube.com/watch?v=xbl5cxfA1n4)) (4认同)
  • 此列表甚至不是全面的,因为它可以在任何可访问的setter上使用任何可访问的对象. (2认同)

bco*_*rso 25

文件暗示任何值可以使用ObjectAnimator,只要你遵循命名约定:

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

关于你的问题,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
Run Code Online (Sandbox Code Playgroud)

您可以阅读文档以获取有关期望的更多详细信息ObjectAnimator.


Sag*_*gar 18

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

  • 回转
  • 的rotationX
  • 的rotationY
  • translationX
  • translationY
  • 将scaleX
  • 的scaleY
  • pivotX
  • pivotY
  • α
  • X
  • ÿ

资料来源:文件