class ViewTreeObserver

A view tree observer is used to register listeners that can be notified of global changes in the view tree. Such global events include, but are not limited to, layout of the whole tree, beginning of the drawing pass, touch mode change.... A ViewTreeObserver should never be instantiated by applications as it is provided by the views hierarchy. Refer to android.view.View#getViewTreeObserver() for more information.

Summary

Nested classes
abstract

Interface definition for a callback to be invoked when the view tree is about to be drawn.

abstract

Interface definition for a callback to be invoked when the focus state within the view tree changes.

abstract

Interface definition for a callback to be invoked when the global layout state or the visibility of views within the view tree changes.

abstract

Interface definition for a callback to be invoked when the view tree is about to be drawn.

abstract

Interface definition for a callback to be invoked when something in the view tree has been scrolled.

abstract

Interface definition for a callback to be invoked when the touch mode changes.

abstract

Interface definition for a callback to be invoked when the view hierarchy is attached to and detached from its window.

abstract

Interface definition for a callback to be invoked when the view hierarchy's window focus state changes.

abstract

Interface definition for a callback to be invoked when the view hierarchy's window visibility changes.

Public methods
Unit

Register a callback to be invoked when the view tree is about to be drawn.

Unit
Unit

Register a callback to be invoked when the global layout state or the visibility of views within the view tree changes

Unit

Register a callback to be invoked when the view tree is about to be drawn

Unit

Register a callback to be invoked when a view has been scrolled.

Unit

Add a listener to be notified when the tree's transformed gesture exclusion rects change.

Unit

Register a callback to be invoked when the invoked when the touch mode changes.

Unit

Register a callback to be invoked when the view hierarchy is attached to a window.

Unit

Register a callback to be invoked when the window focus state within the view tree changes.

Unit

Register a callback to be invoked when the window visibility changes.

Unit

Notifies registered listeners that the drawing pass is about to start.

Unit

Notifies registered listeners that a global layout happened.

Boolean

Notifies registered listeners that the drawing pass is about to start.

Unit

Notifies registered listeners that something has scrolled.

Boolean

isAlive()

Indicates whether this ViewTreeObserver is alive.

Unit

Adds a frame commit callback.

Unit

Remove a previously installed global layout callback

Unit

Remove a previously installed pre-draw callback.

Unit

Remove a previously installed focus change callback.

Unit

Remove a previously installed global layout callback

Unit

Remove a previously installed pre-draw callback

Unit

Remove a previously installed scroll-changed callback

Unit

Unsubscribe the given listener from gesture exclusion rect changes.

Unit

Remove a previously installed touch mode change callback

Unit

Remove a previously installed window attach callback.

Unit

Remove a previously installed window focus change callback.

Unit

Remove a previously installed window visibility callback.

Boolean

Attempts to remove the given callback from the list of pending frame complete callbacks.

Public methods

addOnSystemGestureExclusionRectsChangedListener

fun addOnSystemGestureExclusionRectsChangedListener(listener: Consumer<MutableList<Rect!>!>): Unit

Add a listener to be notified when the tree's transformed gesture exclusion rects change. This could be the result of an animation or other layout change, or a view calling View.setSystemGestureExclusionRects(List).

Parameters
listener Consumer<MutableList<Rect!>!>: listener to add.
This value cannot be null.

dispatchOnDraw

fun dispatchOnDraw(): Unit

Notifies registered listeners that the drawing pass is about to start.

dispatchOnGlobalLayout

fun dispatchOnGlobalLayout(): Unit

Notifies registered listeners that a global layout happened. This can be called manually if you are forcing a layout on a View or a hierarchy of Views that are not attached to a Window or in the GONE state.

dispatchOnPreDraw

fun dispatchOnPreDraw(): Boolean

Notifies registered listeners that the drawing pass is about to start. If a listener returns true, then the drawing pass is canceled and rescheduled. This can be called manually if you are forcing the drawing on a View or a hierarchy of Views that are not attached to a Window or in the GONE state.

Return
Boolean True if the current draw should be canceled and rescheduled, false otherwise.

dispatchOnScrollChanged

fun dispatchOnScrollChanged(): Unit

Notifies registered listeners that something has scrolled.

isAlive

fun isAlive(): Boolean

Indicates whether this ViewTreeObserver is alive. When an observer is not alive, any call to a method (except this one) will throw an exception. If an application keeps a long-lived reference to this ViewTreeObserver, it should always check for the result of this method before calling any other method.

Return
Boolean True if this object is alive and be used, false otherwise.

registerFrameCommitCallback

fun registerFrameCommitCallback(callback: Runnable): Unit

Adds a frame commit callback. This callback will be invoked when the current rendering content has been rendered into a frame and submitted to the swap chain. The frame may not currently be visible on the display when this is invoked, but it has been submitted. This callback is useful in combination with PixelCopy to capture the current rendered content of the UI reliably. Note: Only works with hardware rendering. Does nothing otherwise.

Parameters
callback Runnable: The callback to invoke when the frame is committed.
This value cannot be null.

unregisterFrameCommitCallback

fun unregisterFrameCommitCallback(callback: Runnable): Boolean

Attempts to remove the given callback from the list of pending frame complete callbacks.

Parameters
callback Runnable: The callback to remove.
This value cannot be null.
Return
Boolean Whether or not the callback was removed. If this returns true the callback will not be invoked. If false is returned then the callback was either never added or may already be pending execution and was unable to be removed

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2026-02-26 UTC.