ViewPropertyAnimator

This class enables automatic and optimized animation of select properties on View objects.
If only one or two properties on a View object are being animated, then using an
ObjectAnimator is fine; the property setters called by ObjectAnimator
are well equipped to do the right thing to set the property and invalidate the view
appropriately. But if several properties are animated simultaneously, or if you just want a
more convenient syntax to animate a specific property, then ViewPropertyAnimator might be
more well-suited to the task.

This class may provide better performance for several simultaneous animations, because
it will optimize invalidate calls to take place only once for several properties instead of each
animated property independently causing its own invalidation. Also, the syntax of using this
class could be easier to use because the caller need only tell the View object which
property to animate, and the value to animate either to or by, and this class handles the
details of configuring the underlying Animator class and starting it.

This class is not constructed by the caller, but rather by the View whose properties
it will animate. Calls to View.animate() will return a reference
to the appropriate ViewPropertyAnimator object for that View.

Causes the current thread to wait until another thread invokes the
notify() method or the
notifyAll() method for this object, or
some other thread interrupts the current thread, or a certain
amount of real time has elapsed.

setDuration

Sets the duration for the underlying animator that animates the requested properties.
By default, the animator uses the default value for ValueAnimator. Calling this method
will cause the declared value to be used instead.

Parameters

duration

long: The length of ensuing property animations, in milliseconds. The value
cannot be negative.

setInterpolator

Sets the interpolator for the underlying animator that animates the requested properties.
By default, the animator uses the default interpolator for ValueAnimator. Calling this method
will cause the declared object to be used instead.

Parameters

interpolator

TimeInterpolator: The TimeInterpolator to be used for ensuing property animations. A value
of null will result in linear interpolation.

setStartDelay

Sets the startDelay for the underlying animator that animates the requested properties.
By default, the animator uses the default value for ValueAnimator. Calling this method
will cause the declared value to be used instead.

Parameters

startDelay

long: The delay of ensuing property animations, in milliseconds. The value
cannot be negative.

setUpdateListener

Sets a listener for update events in the underlying ValueAnimator that runs
the property animations. Note that the underlying animator is animating between
0 and 1 (these values are then turned into the actual property values internally
by ViewPropertyAnimator). So the animator cannot give information on the current
values of the properties being animated by this ViewPropertyAnimator, although
the view object itself can be queried to get the current values.

Parameters

listener

ValueAnimator.AnimatorUpdateListener: The listener to be called with update events. A value of
null removes any existing listener.

start

Starts the currently pending property animations immediately. Calling start()
is optional because all animations start automatically at the next opportunity. However,
if the animations are needed to start immediately and synchronously (not at the time when
the next event is processed by the hierarchy, which is when the animations would begin
otherwise), then this method can be used.

withEndAction

Specifies an action to take place when the next animation ends. The action is only
run if the animation ends normally; if the ViewPropertyAnimator is canceled during
that animation, the runnable will not run.
This method, along with withStartAction(Runnable), is intended to help facilitate
choreographing ViewPropertyAnimator animations with other animations or actions
in the application.

For example, the following code animates a view to x=200 and then back to 0:

withLayer

The View associated with this ViewPropertyAnimator will have its
layer type set to
View.LAYER_TYPE_HARDWARE for the duration of the next animation.
As stated in the documentation for View.LAYER_TYPE_HARDWARE,
the actual type of layer used internally depends on the runtime situation of the
view. If the activity and this view are hardware-accelerated, then the layer will be
accelerated as well. If the activity or the view is not accelerated, then the layer will
effectively be the same as View.LAYER_TYPE_SOFTWARE.

This state is not persistent, either on the View or on this ViewPropertyAnimator: the
layer type of the View will be restored when the animation ends to what it was when this
method was called, and this setting on ViewPropertyAnimator is only valid for the next
animation. Note that calling this method and then independently setting the layer type of
the View (by a direct call to View.setLayerType(int, android.graphics.Paint)) will
result in some inconsistency, including having the layer type restored to its pre-withLayer()
value when the animation ends.

withStartAction

Specifies an action to take place when the next animation runs. If there is a
startDelay set on this ViewPropertyAnimator, then the
action will run after that startDelay expires, when the actual animation begins.
This method, along with withEndAction(Runnable), is intended to help facilitate
choreographing ViewPropertyAnimator animations with other animations or actions
in the application.