Callback
abstract class Callback
kotlin.Any | |
↳ | android.view.WindowInsetsAnimation.Callback |
Interface that allows the application to listen to animation events for windows that cause insets.
Summary
Constants | |
---|---|
static Int |
Return value for |
static Int |
Return value for |
Public constructors | |
---|---|
Creates a new |
Public methods | |
---|---|
Int |
Retrieves the dispatch mode of this listener. |
open Unit |
onEnd(animation: WindowInsetsAnimation) Called when an insets animation has ended. |
open Unit |
onPrepare(animation: WindowInsetsAnimation) Called when an insets animation is about to start and before the views have been laid out in the end state of the animation. |
abstract WindowInsets |
onProgress(insets: WindowInsets, runningAnimations: MutableList<WindowInsetsAnimation!>) Called when the insets change as part of running an animation. |
open WindowInsetsAnimation.Bounds |
onStart(animation: WindowInsetsAnimation, bounds: WindowInsetsAnimation.Bounds) Called when an insets animation gets started. |
Constants
DISPATCH_MODE_CONTINUE_ON_SUBTREE
static val DISPATCH_MODE_CONTINUE_ON_SUBTREE: Int
Return value for getDispatchMode()
: Dispatching of animation events should continue in the view hierarchy.
Value: 1
DISPATCH_MODE_STOP
static val DISPATCH_MODE_STOP: Int
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.
Value: 0
Public constructors
Callback
Callback(dispatchMode: Int)
Creates a new WindowInsetsAnimation
callback with the given dispatch mode
.
Parameters | |
---|---|
dispatchMode |
Int: The dispatch mode for this callback. See getDispatchMode() . Value is android.view.WindowInsetsAnimation.Callback#DISPATCH_MODE_STOP , or android.view.WindowInsetsAnimation.Callback#DISPATCH_MODE_CONTINUE_ON_SUBTREE |
Public methods
getDispatchMode
fun getDispatchMode(): Int
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 WindowInsets#CONSUMED
during the regular insets dispatch in View#onApplyWindowInsets
.
Return | |
---|---|
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. Value is android.view.WindowInsetsAnimation.Callback#DISPATCH_MODE_STOP , or android.view.WindowInsetsAnimation.Callback#DISPATCH_MODE_CONTINUE_ON_SUBTREE |
onEnd
open fun onEnd(animation: WindowInsetsAnimation): Unit
Called when an insets animation has ended.
Parameters | |
---|---|
animation |
WindowInsetsAnimation: The animation that has ended. This will be the same instance as passed into onStart This value cannot be null . |
onPrepare
open fun onPrepare(animation: WindowInsetsAnimation): Unit
Called when an insets animation is about to start and before the views have been laid out in the end state of the animation. The ordering of events during an insets animation is the following:
- Application calls
WindowInsetsController#hide(int)
,WindowInsetsController#show(int)
,WindowInsetsController#controlWindowInsetsAnimation
- onPrepare is called on the view hierarchy listeners
View#onApplyWindowInsets
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
is called before the view hierarchy gets drawn in the new laid out stateonProgress
is called immediately after with the animation start state- The frame gets drawn.
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
callback by using post-layout view properties like View#setX
and related methods.
Note that the animation might be cancelled before onStart
is dispatched. On S
and later, onEnd
is immediately dispatched without an onStart
in that case. On R
, no callbacks are dispatched after onPrepare
for such an animation.
Note: If the animation is application controlled by using WindowInsetsController#controlWindowInsetsAnimation
, 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 WindowInsetsAnimationController#finish
. 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 WindowInsetsController#controlWindowInsetsAnimation
and the input method is currently showing, View#onApplyWindowInsets
will receive a WindowInsets
instance for which WindowInsets#isVisible
will return false
for WindowInsets.Type#ime
.
Parameters | |
---|---|
animation |
WindowInsetsAnimation: The animation that is about to start. This value cannot be null . |
onProgress
abstract fun onProgress(
insets: WindowInsets,
runningAnimations: MutableList<WindowInsetsAnimation!>
): WindowInsets
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 WindowInsets#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 |
WindowInsets: The current insets. This value cannot be null . |
runningAnimations |
MutableList<WindowInsetsAnimation!>: The currently running animations. This value cannot be null . |
Return | |
---|---|
WindowInsets |
The insets to dispatch to the subtree of the hierarchy. This value cannot be null . |
onStart
open fun onStart(
animation: WindowInsetsAnimation,
bounds: WindowInsetsAnimation.Bounds
): WindowInsetsAnimation.Bounds
Called when an insets animation gets started.
Note that, like onProgress
, 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 Bounds#inset
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 |
WindowInsetsAnimation: The animation that is about to start. This value cannot be null . |
bounds |
WindowInsetsAnimation.Bounds: The bounds in which animation happens. This value cannot be null . |
Return | |
---|---|
WindowInsetsAnimation.Bounds |
The animation representing the part of the insets that should be dispatched to the subtree of the hierarchy. This value cannot be null . |