WindowInsetsAnimationCompat.Callback
public
static
abstract
class
WindowInsetsAnimationCompat.Callback
extends Object
java.lang.Object | |
↳ | androidx.core.view.WindowInsetsAnimationCompat.Callback |
Interface that allows the application to listen to animation events for windows that cause insets.
Summary
Constants | |
---|---|
int |
DISPATCH_MODE_CONTINUE_ON_SUBTREE
Return value for |
int |
DISPATCH_MODE_STOP
Return value for |
Public constructors | |
---|---|
Callback(int dispatchMode)
Creates a new |
Public methods | |
---|---|
final
int
|
getDispatchMode()
Retrieves the dispatch mode of this listener. |
void
|
onEnd(WindowInsetsAnimationCompat animation)
Called when an insets animation has ended. |
void
|
onPrepare(WindowInsetsAnimationCompat animation)
Called when an insets animation is about to start and before the views have been re-laid out due to an animation. |
abstract
WindowInsetsCompat
|
onProgress(WindowInsetsCompat insets, List<WindowInsetsAnimationCompat> runningAnimations)
Called when the insets change as part of running an animation. |
WindowInsetsAnimationCompat.BoundsCompat
|
onStart(WindowInsetsAnimationCompat animation, WindowInsetsAnimationCompat.BoundsCompat bounds)
Called when an insets animation gets started. |
Inherited methods | |
---|---|
Constants
DISPATCH_MODE_CONTINUE_ON_SUBTREE
public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE
Return value for getDispatchMode()
: Dispatching of animation events should
continue in the view hierarchy.
Constant Value: 1 (0x00000001)
DISPATCH_MODE_STOP
public static final int DISPATCH_MODE_STOP
Return value for getDispatchMode()
: Dispatching of animation events should
stop at this level in the view hierarchy, and no animation events should be dispatch to
the subtree of the view hierarchy.
Constant Value: 0 (0x00000000)
Public constructors
Callback
public Callback (int dispatchMode)
Creates a new WindowInsetsAnimationCompat
callback with the given
dispatch mode
.
Parameters | |
---|---|
dispatchMode |
int : The dispatch mode for this callback. See getDispatchMode() .
|
Public methods
getDispatchMode
public final int getDispatchMode ()
Retrieves the dispatch mode of this listener. Dispatch of the all animation events is
hierarchical: It will starts at the root of the view hierarchy and then traverse it and
invoke the callback of the specific View
that is being traversed.
The method may return either DISPATCH_MODE_CONTINUE_ON_SUBTREE
to indicate that
animation events should be propagated to the subtree of the view hierarchy, or
DISPATCH_MODE_STOP
to stop dispatching. In that case, all animation callbacks
related to the animation passed in will be stopped from propagating to the subtree of the
hierarchy.
Also note that DISPATCH_MODE_STOP
behaves the same way as
returning WindowInsetsCompat.CONSUMED
during the regular insets dispatch in
View.onApplyWindowInsets(WindowInsets)
.
Returns | |
---|---|
int |
Either DISPATCH_MODE_CONTINUE_ON_SUBTREE to indicate that dispatching of
animation events will continue to the subtree of the view hierarchy, or
DISPATCH_MODE_STOP to indicate that animation events will stop
dispatching.
|
onEnd
public void onEnd (WindowInsetsAnimationCompat animation)
Called when an insets animation has ended.
Parameters | |
---|---|
animation |
WindowInsetsAnimationCompat : The animation that has ended. This will be the same instance
as passed into onStart(WindowInsetsAnimationCompat, WindowInsetsAnimationCompat.BoundsCompat)
|
onPrepare
public void onPrepare (WindowInsetsAnimationCompat animation)
Called when an insets animation is about to start and before the views have been re-laid out due to an animation.
This ordering allows the application to inspect the end state after the animation has
finished, and then revert to the starting state of the animation in the first
onProgress(WindowInsetsCompat, List
callback by using post-layout view properties like View.setX(float)
and related methods.
The ordering of events during an insets animation is the following:
- Application calls
WindowInsetsControllerCompat.hide(int)
,WindowInsetsControllerCompat.show(int)
,WindowInsetsControllerCompat.controlWindowInsetsAnimation(int, long, Interpolator, CancellationSignal, WindowInsetsAnimationControlListenerCompat)
- onPrepare is called on the view hierarchy listeners
View.onApplyWindowInsets(WindowInsets)
will be called with the end state of the animation- View hierarchy gets laid out according to the changes the application has requested due to the new insets being dispatched
onStart(WindowInsetsAnimationCompat, WindowInsetsAnimationCompat.BoundsCompat)
is called before the view hierarchy gets drawn in the new laid out stateonProgress(WindowInsetsCompat, List
is called immediately after with the animation start state) - The frame gets drawn.
Note: If the animation is application controlled by using
WindowInsetsControllerCompat.controlWindowInsetsAnimation(int, long, Interpolator, CancellationSignal, WindowInsetsAnimationControlListenerCompat)
, the end state of
the animation is undefined as the application may decide on the end state only by
passing in shown
parameter when calling
WindowInsetsAnimationControllerCompat.finish(boolean)
. In this situation, the system
will dispatch the insets in the opposite visibility state before the animation starts.
Example: When controlling the input method with
WindowInsetsControllerCompat.controlWindowInsetsAnimation(int, long, Interpolator, CancellationSignal, WindowInsetsAnimationControlListenerCompat)
and the input method
is currently showing, View.onApplyWindowInsets(WindowInsets)
will receive a
WindowInsetsCompat
instance for which WindowInsetsCompat.isVisible(int)
will return false
for WindowInsetsCompat.Type.ime()
.
Parameters | |
---|---|
animation |
WindowInsetsAnimationCompat : The animation that is about to start.
|
onProgress
public abstract WindowInsetsCompat onProgress (WindowInsetsCompat insets, List<WindowInsetsAnimationCompat> runningAnimations)
Called when the insets change as part of running an animation. Note that even if multiple
animations for different types are running, there will only be one progress callback per
frame. The insets
passed as an argument represents the overall state and will
include all types, regardless of whether they are animating or not.
Note that insets dispatch is hierarchical: It will start at the root of the view
hierarchy, and then traverse it and invoke the callback of the specific View
being traversed. The method may return a modified instance by calling
WindowInsetsCompat.inset(int, int, int, int)
to indicate that a part of the
insets have been used to offset or clip its children, and the children shouldn't worry
about that part anymore. Furthermore, if getDispatchMode()
returns
DISPATCH_MODE_STOP
, children of this view will not receive the callback anymore.
Parameters | |
---|---|
insets |
WindowInsetsCompat : The current insets. |
runningAnimations |
List : The currently running animations. |
Returns | |
---|---|
WindowInsetsCompat |
The insets to dispatch to the subtree of the hierarchy. |
onStart
public WindowInsetsAnimationCompat.BoundsCompat onStart (WindowInsetsAnimationCompat animation, WindowInsetsAnimationCompat.BoundsCompat bounds)
Called when an insets animation gets started.
This ordering allows the application to inspect the end state after the animation has
finished, and then revert to the starting state of the animation in the first
onProgress(WindowInsetsCompat, List
callback by using post-layout view properties like View.setX(float)
and related methods.
The ordering of events during an insets animation is the following:
- Application calls
WindowInsetsControllerCompat.hide(int)
,WindowInsetsControllerCompat.show(int)
,WindowInsetsControllerCompat.controlWindowInsetsAnimation(int, long, Interpolator, CancellationSignal, WindowInsetsAnimationControlListenerCompat)
- onPrepare is called on the view hierarchy listeners
View.onApplyWindowInsets(WindowInsets)
will be called with the end state of the animation- View hierarchy gets laid out according to the changes the application has requested due to the new insets being dispatched
onStart(WindowInsetsAnimationCompat, WindowInsetsAnimationCompat.BoundsCompat)
is called before the view hierarchy gets drawn in the new laid out stateonProgress(WindowInsetsCompat, List
is called immediately after with the animation start state) - The frame gets drawn.
Note that, like onProgress(WindowInsetsCompat, List
, dispatch of the animation start event is
hierarchical: It will starts at the root of the view hierarchy and then traverse it
and invoke the callback of the specific View
that is being traversed. The
method may return a modified instance of the bounds by calling
WindowInsetsAnimationCompat.BoundsCompat.inset(Insets)
to indicate that a part of the insets
have been used to offset or clip its children, and the children shouldn't worry about
that part anymore. Furthermore, if getDispatchMode()
returns
DISPATCH_MODE_STOP
, children of this view will not receive the callback anymore.
Parameters | |
---|---|
animation |
WindowInsetsAnimationCompat : The animation that is about to start. |
bounds |
WindowInsetsAnimationCompat.BoundsCompat : The bounds in which animation happens. |
Returns | |
---|---|
WindowInsetsAnimationCompat.BoundsCompat |
The animation bounds representing the part of the insets that should be dispatched to the subtree of the hierarchy. |