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

问题描述 投票:49回答:4

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

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

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

android animation android-animation objectanimator
4个回答
56
投票

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

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


24
投票

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

  1. 您正在设置动画的对象属性必须具有set<propertyName>()形式的setter函数(在camel情况下)。因为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

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


16
投票

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

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

资料来源:Docs


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.