Android APIs
public final class

ViewTreeObserver

extends Object
java.lang.Object
   ↳ android.view.ViewTreeObserver

Class Overview

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 getViewTreeObserver() for more information.

Summary

Nested Classes
interface ViewTreeObserver.OnDrawListener Interface definition for a callback to be invoked when the view tree is about to be drawn. 
interface ViewTreeObserver.OnGlobalFocusChangeListener Interface definition for a callback to be invoked when the focus state within the view tree changes. 
interface ViewTreeObserver.OnGlobalLayoutListener Interface definition for a callback to be invoked when the global layout state or the visibility of views within the view tree changes. 
interface ViewTreeObserver.OnPreDrawListener Interface definition for a callback to be invoked when the view tree is about to be drawn. 
interface ViewTreeObserver.OnScrollChangedListener Interface definition for a callback to be invoked when something in the view tree has been scrolled. 
interface ViewTreeObserver.OnTouchModeChangeListener Interface definition for a callback to be invoked when the touch mode changes. 
interface ViewTreeObserver.OnWindowAttachListener Interface definition for a callback to be invoked when the view hierarchy is attached to and detached from its window. 
interface ViewTreeObserver.OnWindowFocusChangeListener Interface definition for a callback to be invoked when the view hierarchy's window focus state changes. 
Public Methods
void addOnDrawListener(ViewTreeObserver.OnDrawListener listener)

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

void addOnGlobalFocusChangeListener(ViewTreeObserver.OnGlobalFocusChangeListener listener)
Register a callback to be invoked when the focus state within the view tree changes.
void addOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener listener)
Register a callback to be invoked when the global layout state or the visibility of views within the view tree changes
void addOnPreDrawListener(ViewTreeObserver.OnPreDrawListener listener)
Register a callback to be invoked when the view tree is about to be drawn
void addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener listener)
Register a callback to be invoked when a view has been scrolled.
void addOnTouchModeChangeListener(ViewTreeObserver.OnTouchModeChangeListener listener)
Register a callback to be invoked when the invoked when the touch mode changes.
void addOnWindowAttachListener(ViewTreeObserver.OnWindowAttachListener listener)
Register a callback to be invoked when the view hierarchy is attached to a window.
void addOnWindowFocusChangeListener(ViewTreeObserver.OnWindowFocusChangeListener listener)
Register a callback to be invoked when the window focus state within the view tree changes.
final void dispatchOnDraw()
Notifies registered listeners that the drawing pass is about to start.
final void dispatchOnGlobalLayout()
Notifies registered listeners that a global layout happened.
final boolean dispatchOnPreDraw()
Notifies registered listeners that the drawing pass is about to start.
boolean isAlive()
Indicates whether this ViewTreeObserver is alive.
void removeGlobalOnLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim)
This method was deprecated in API level 16. Use #removeOnGlobalLayoutListener instead
void removeOnDrawListener(ViewTreeObserver.OnDrawListener victim)

Remove a previously installed pre-draw callback.

void removeOnGlobalFocusChangeListener(ViewTreeObserver.OnGlobalFocusChangeListener victim)
Remove a previously installed focus change callback.
void removeOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim)
Remove a previously installed global layout callback
void removeOnPreDrawListener(ViewTreeObserver.OnPreDrawListener victim)
Remove a previously installed pre-draw callback
void removeOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener victim)
Remove a previously installed scroll-changed callback
void removeOnTouchModeChangeListener(ViewTreeObserver.OnTouchModeChangeListener victim)
Remove a previously installed touch mode change callback
void removeOnWindowAttachListener(ViewTreeObserver.OnWindowAttachListener victim)
Remove a previously installed window attach callback.
void removeOnWindowFocusChangeListener(ViewTreeObserver.OnWindowFocusChangeListener victim)
Remove a previously installed window focus change callback.
[Expand]
Inherited Methods
From class java.lang.Object

Public Methods

public void addOnDrawListener (ViewTreeObserver.OnDrawListener listener)

Added in API level 16

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

Note: this method cannot be invoked from onDraw().

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)

Added in API level 1

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)

Added in API level 1

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)

Added in API level 1

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)

Added in API level 3

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)

Added in API level 1

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnWindowAttachListener (ViewTreeObserver.OnWindowAttachListener listener)

Added in API level 18

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public void addOnWindowFocusChangeListener (ViewTreeObserver.OnWindowFocusChangeListener listener)

Added in API level 18

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

Parameters
listener The callback to add
Throws
IllegalStateException If isAlive() returns false

public final void dispatchOnDraw ()

Added in API level 16

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

public final void dispatchOnGlobalLayout ()

Added in API level 1

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.

public final boolean dispatchOnPreDraw ()

Added in API level 1

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.

Returns
  • True if the current draw should be canceled and resceduled, false otherwise.

public boolean isAlive ()

Added in API level 1

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.

Returns
  • True if this object is alive and be used, false otherwise.

public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)

Added in API level 1

This method was deprecated in API level 16.
Use #removeOnGlobalLayoutListener instead

Remove a previously installed global layout callback

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnDrawListener (ViewTreeObserver.OnDrawListener victim)

Added in API level 16

Remove a previously installed pre-draw callback.

Note: this method cannot be invoked from onDraw().

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)

Added in API level 1

Remove a previously installed focus change callback.

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)

Added in API level 16

Remove a previously installed global layout callback

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)

Added in API level 1

Remove a previously installed pre-draw callback

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)

Added in API level 3

Remove a previously installed scroll-changed callback

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)

Added in API level 1

Remove a previously installed touch mode change callback

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnWindowAttachListener (ViewTreeObserver.OnWindowAttachListener victim)

Added in API level 18

Remove a previously installed window attach callback.

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false

public void removeOnWindowFocusChangeListener (ViewTreeObserver.OnWindowFocusChangeListener victim)

Added in API level 18

Remove a previously installed window focus change callback.

Parameters
victim The callback to remove
Throws
IllegalStateException If isAlive() returns false