2012-07-24 22 views
40

我开始在视图动画中使用属性动画,因为我有一个视图需要缩放并推送其他视图动画。我见过一些例子,但我只是想知道是否有任何地方提供了可以使用这些类来修改的属性列表。例如,我看到了一个教程,做了使用快速旋转:可以使用ObjectAnimator进行动画处理的Android属性

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

这是相当酷,但如果不是,准确的教程,我就不知道了旋转性质,是否有任何完整列表是什么可以做到?我想要动画的特定属性是LinearLayout中视图的权重,如果任何人有任何具体的建议。

回答

51

比从未更好的迟到,所以这里是可以用ObjectAnimator动画的属性的综合列表。

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

+1

我很好奇,如果是这样的完整列表?在9OldAndroid上,有一个例子可以激活未在列表中指定的视图的背景颜色。 http://nineoldandroids.com/'ObjectAnimator.ofInt(this,“backgroundColor”,/ * Red */0xFFFF8080,/ * Blue */0xFF8080FF);' – 2014-06-19 22:39:40

+3

列表不完整,列表中有“xFraction”和“ yFraction“(在[DevBytes Sliding Fragments示例](https://www.youtube.com/watch?v=xbl5cxfA1n4)中看到) – 2014-09-17 19:22:18

+6

完整的列表将不存在,因为它可以与具有正确名称的任何东西一起使用getter/setter(反射),或通过定义一个自定义属性。请参阅http://stackoverflow.com/a/28381280/1290264。 – bcorso 2015-10-29 16:08:44

22

Docs暗示任何价值可与ObjectAnimator只要你遵循命名约定的使用:

  1. ,你是动画必须有一个setter函数(对象属性在骆驼案件中)以set<propertyName>()的形式。由于 ObjectAnimator在动画 动画中自动更新属性,因此必须能够使用此设置器 方法访问属性。例如,如果属性名称是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期望阅读更多细节的文档。

5

这里是属性名称的完整列表,你正在寻找:

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

来源:Docs

相关问题