Android properties that can be animated with ObjectAnimator

AndroidAnimationAndroid AnimationObjectanimator

Android Problem Overview


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.

Android Solutions


Solution 1 - Android

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

Solution 2 - Android

The Docs imply that any value can be used with ObjectAnimator as long as you follow a naming convention:

> 1. 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 is foo, you need to have a > setFoo() 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. > 2. [...]


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.

Solution 3 - Android

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

Solution 4 - Android

Use "translateX" or "transalteY" to move a <group> Take a look at vectorDrawable

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCathal ComerfordView Question on Stackoverflow
Solution 1 - AndroidOnyxView Answer on Stackoverflow
Solution 2 - AndroidbcorsoView Answer on Stackoverflow
Solution 3 - AndroidSagarView Answer on Stackoverflow
Solution 4 - AndroidMilk LittileView Answer on Stackoverflow