Android properties that can be animated with ObjectAnimator
I am starting to play around with Property Animations over view animations as I have a view that needs to scale and push others out of the way as it does. I've seen some examples but I'm just wondering if there is anywhere that provides a list of the properties that can be altered using these classes. For example, I saw one tutorial that did a quick rotation using:
ObjectAnimator.ofFloat(aniView, "rotation", 360)
Which is quite cool, but I wouldn't have known the rotation property if not for that exact tutorial, is there any comprehensive list of what can be done? The particular property I want to animate is the weight of a view within a LinearLayout, if anyone has any advice on that specifically.
Better late than never, so here is the comprehensive list of the properties that can be animated with ObjectAnimator.
http://developer.android.com/guide/topics/graphics/prop-animation.html#views
The Docs imply that any value can be used with ObjectAnimator
as long as you follow a naming convention:
- The object property that you are animating must have a setter function (in camel case) in the form of
set<propertyName>()
. Because the ObjectAnimator automatically updates the property during animation, it must be able to access the property with this setter method. For example, if the property name isfoo
, you need to have asetFoo()
method. If this setter method does not exist, you have three options:
- Add the setter method to the class if you have the rights to do so.
- Use a wrapper class that you have rights to change and have that wrapper receive the value with a valid setter method and forward it to the original object.
- Use ValueAnimator instead.
- [...]
With respect to your question, View
has the method setRotation(float)
-- that gives you a hint it can be used. In particular here's how you would do it with a particular 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
You can read the docs for more details on the expectations of ObjectAnimator
.
Here is the comprehensive list of property names that you are looking for:
- rotation
- rotationX
- rotationY
- translationX
- translationY
- scaleX
- scaleY
- pivotX
- pivotY
- alpha
- x
- y
Source: Docs