Package icyllis.modernui.view
Class ViewTreeObserver
java.lang.Object
icyllis.modernui.view.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 View.getViewTreeObserver()
for more information.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Interface definition for a callback to be invoked when the focus state within the view tree changes.static interface
Interface definition for a callback to be invoked when the global layout state or the visibility of views within the view tree changes.static interface
Interface definition for a callback to be invoked when the view tree is about to be drawn.static interface
Interface definition for a callback to be invoked when something in the view tree has been scrolled. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Register a callback to be invoked when the focus state within the view tree changes.void
Register a callback to be invoked when the global layout state or the visibility of views within the view tree changesvoid
Register a callback to be invoked when the view tree is about to be drawnvoid
Register a callback to be invoked when a view has been scrolled.void
Notifies registered listeners that a global layout happened.boolean
Notifies registered listeners that the drawing pass is about to start.void
Notifies registered listeners that something has scrolled.boolean
isAlive()
Indicates whether this ViewTreeObserver is alive.void
Remove a previously installed focus change callback.void
Remove a previously installed global layout callbackvoid
Remove a previously installed pre-draw callbackvoid
Remove a previously installed scroll-changed callback
-
Method Details
-
addOnGlobalFocusChangeListener
public void addOnGlobalFocusChangeListener(@NonNull ViewTreeObserver.OnGlobalFocusChangeListener listener) Register a callback to be invoked when the focus state within the view tree changes.- Parameters:
listener
- The callback to add- Throws:
IllegalStateException
- IfisAlive()
returns false
-
removeOnGlobalFocusChangeListener
public void removeOnGlobalFocusChangeListener(@NonNull ViewTreeObserver.OnGlobalFocusChangeListener victim) Remove a previously installed focus change callback.- Parameters:
victim
- The callback to remove- Throws:
IllegalStateException
- IfisAlive()
returns false- See Also:
-
addOnGlobalLayoutListener
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
- IfisAlive()
returns false
-
removeOnGlobalLayoutListener
Remove a previously installed global layout callback- Parameters:
victim
- The callback to remove- Throws:
IllegalStateException
- IfisAlive()
returns false- See Also:
-
addOnPreDrawListener
Register a callback to be invoked when the view tree is about to be drawn- Parameters:
listener
- The callback to add- Throws:
IllegalStateException
- IfisAlive()
returns false
-
removeOnPreDrawListener
Remove a previously installed pre-draw callback- Parameters:
victim
- The callback to remove- Throws:
IllegalStateException
- IfisAlive()
returns false- See Also:
-
addOnScrollChangedListener
Register a callback to be invoked when a view has been scrolled.- Parameters:
listener
- The callback to add- Throws:
IllegalStateException
- IfisAlive()
returns false
-
removeOnScrollChangedListener
Remove a previously installed scroll-changed callback- Parameters:
victim
- The callback to remove- Throws:
IllegalStateException
- IfisAlive()
returns false- See Also:
-
isAlive
public boolean isAlive()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.
-
dispatchOnGlobalLayout
public void dispatchOnGlobalLayout()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
public boolean dispatchOnPreDraw()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 rescheduled, false otherwise.
-
dispatchOnScrollChanged
public void dispatchOnScrollChanged()Notifies registered listeners that something has scrolled.
-