Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/view/ViewTreeObserver#nestedclasses) \| [Methods](https://developer.android.com/reference/android/view/ViewTreeObserver#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/view/ViewTreeObserver#inhmethods)

# ViewTreeObserver

*** ** * ** ***


`
public

final

class
ViewTreeObserver
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.view.ViewTreeObserver |

<br />

*** ** * ** ***

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 `https://developer.android.com/reference/android/view/View#getViewTreeObserver()`
for more information.

## Summary

| ### Nested classes ||
|---|---|
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener` Interface definition for a callback to be invoked when the view tree is about to be drawn. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener` Interface definition for a callback to be invoked when the focus state within the view tree changes. |
| ` interface` | `https://developer.android.com/reference/android/view/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` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener` Interface definition for a callback to be invoked when the view tree is about to be drawn. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener` Interface definition for a callback to be invoked when something in the view tree has been scrolled. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener` Interface definition for a callback to be invoked when the touch mode changes. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowAttachListener` Interface definition for a callback to be invoked when the view hierarchy is attached to and detached from its window. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowFocusChangeListener` Interface definition for a callback to be invoked when the view hierarchy's window focus state changes. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowVisibilityChangeListener` Interface definition for a callback to be invoked when the view hierarchy's window visibility changes. |
| ` interface` | `https://developer.android.com/reference/android/view/ViewTreeObserver.WindowInsetsAnimationListener` Interface definition for a callback to be invoked when window insets animations prepare or end. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnDrawListener(android.view.ViewTreeObserver.OnDrawListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener listener) ` <br /> Register a callback to be invoked when the view tree is about to be drawn. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener listener) ` |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener)(https://developer.android.com/reference/android/view/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` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener listener) ` Register a callback to be invoked when the view tree is about to be drawn |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener listener) ` Register a callback to be invoked when a view has been scrolled. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnSystemGestureExclusionRectsChangedListener(java.util.function.Consumer<java.util.List<android.graphics.Rect>>)(https://developer.android.com/reference/java/util/function/Consumer<https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/graphics/Rect>> listener) ` Add a listener to be notified when the tree's *transformed* gesture exclusion rects change. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener listener) ` Register a callback to be invoked when the invoked when the touch mode changes. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowAttachListener listener) ` Register a callback to be invoked when the view hierarchy is attached to a window. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowFocusChangeListener listener) ` Register a callback to be invoked when the window focus state within the view tree changes. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addOnWindowVisibilityChangeListener(android.view.ViewTreeObserver.OnWindowVisibilityChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowVisibilityChangeListener listener) ` Register a callback to be invoked when the window visibility changes. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#addWindowInsetsAnimationListener(android.view.ViewTreeObserver.WindowInsetsAnimationListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.WindowInsetsAnimationListener listener) ` Register a callback to be invoked when window insets animations start or end. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#dispatchOnDraw()() ` Notifies registered listeners that the drawing pass is about to start. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#dispatchOnGlobalLayout()() ` Notifies registered listeners that a global layout happened. |
| ` boolean` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#dispatchOnPreDraw()() ` Notifies registered listeners that the drawing pass is about to start. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#dispatchOnScrollChanged()() ` Notifies registered listeners that something has scrolled. |
| ` boolean` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()() ` Indicates whether this ViewTreeObserver is alive. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#registerFrameCommitCallback(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable callback) ` Adds a frame commit callback. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeGlobalOnLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener victim) ` *This method was deprecated in API level 16. Use #removeOnGlobalLayoutListener instead* |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnDrawListener(android.view.ViewTreeObserver.OnDrawListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener victim) ` <br /> Remove a previously installed pre-draw callback. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalFocusChangeListener victim) ` Remove a previously installed focus change callback. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener victim) ` Remove a previously installed global layout callback |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener victim) ` Remove a previously installed pre-draw callback |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnScrollChangedListener victim) ` Remove a previously installed scroll-changed callback |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnSystemGestureExclusionRectsChangedListener(java.util.function.Consumer<java.util.List<android.graphics.Rect>>)(https://developer.android.com/reference/java/util/function/Consumer<https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/graphics/Rect>> listener) ` Unsubscribe the given listener from gesture exclusion rect changes. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnTouchModeChangeListener victim) ` Remove a previously installed touch mode change callback |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowAttachListener victim) ` Remove a previously installed window attach callback. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowFocusChangeListener victim) ` Remove a previously installed window focus change callback. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeOnWindowVisibilityChangeListener(android.view.ViewTreeObserver.OnWindowVisibilityChangeListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.OnWindowVisibilityChangeListener victim) ` Remove a previously installed window visibility callback. |
| ` void` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#removeWindowInsetsAnimationListener(android.view.ViewTreeObserver.WindowInsetsAnimationListener)(https://developer.android.com/reference/android/view/ViewTreeObserver.WindowInsetsAnimationListener victim) ` Remove a previously installed window insets animation callback. |
| ` boolean` | ` https://developer.android.com/reference/android/view/ViewTreeObserver#unregisterFrameCommitCallback(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable callback) ` Attempts to remove the given callback from the list of pending frame complete callbacks. |

### Inherited methods

From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


## Public methods

### addOnDrawListener

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnDrawListener (ViewTreeObserver.OnDrawListener listener)
```

<br />

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

**Note:** this method **cannot** be invoked from
`https://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener#onDraw()`.

<br />

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnDrawListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnGlobalFocusChangeListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)
```

<br />

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnGlobalFocusChangeListener` <br /> |

### addOnGlobalLayoutListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public 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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnGlobalLayoutListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnPreDrawListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
```

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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnPreDrawListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnScrollChangedListener

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)
```

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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnScrollChangedListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnSystemGestureExclusionRectsChangedListener

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnSystemGestureExclusionRectsChangedListener (Consumer<List<Rect>> listener)
```

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
`https://developer.android.com/reference/android/view/View#setSystemGestureExclusionRects(java.util.List<android.graphics.Rect>)`.

<br />

| Parameters ||
|---|---|
| `listener` | `Consumer`: listener to add. This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/view/View#setSystemGestureExclusionRects(java.util.List<android.graphics.Rect>)`

### addOnTouchModeChangeListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
```

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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnTouchModeChangeListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnWindowAttachListener

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnWindowAttachListener (ViewTreeObserver.OnWindowAttachListener listener)
```

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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnWindowAttachListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnWindowFocusChangeListener

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnWindowFocusChangeListener (ViewTreeObserver.OnWindowFocusChangeListener listener)
```

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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnWindowFocusChangeListener`: The callback to add <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addOnWindowVisibilityChangeListener

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addOnWindowVisibilityChangeListener (ViewTreeObserver.OnWindowVisibilityChangeListener listener)
```

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

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.OnWindowVisibilityChangeListener`: The callback to add. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### addWindowInsetsAnimationListener

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void addWindowInsetsAnimationListener (ViewTreeObserver.WindowInsetsAnimationListener listener)
```

Register a callback to be invoked when window insets animations start or end.

<br />

| Parameters ||
|---|---|
| `listener` | `ViewTreeObserver.WindowInsetsAnimationListener`: The callback to add. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### dispatchOnDraw

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void dispatchOnDraw ()
```

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

<br />

### dispatchOnGlobalLayout

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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.

<br />

### dispatchOnPreDraw

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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.

<br />

| Returns ||
|---|---|
| `boolean` | True if the current draw should be canceled and rescheduled, false otherwise. <br /> |

### dispatchOnScrollChanged

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void dispatchOnScrollChanged ()
```

Notifies registered listeners that something has scrolled.

<br />

### isAlive

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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.

<br />

| Returns ||
|---|---|
| `boolean` | True if this object is alive and be used, false otherwise. <br /> |

### registerFrameCommitCallback

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerFrameCommitCallback (Runnable callback)
```

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 `https://developer.android.com/reference/android/view/PixelCopy` to capture the current
rendered content of the UI reliably.

Note: Only works with hardware rendering. Does nothing otherwise.

<br />

| Parameters ||
|---|---|
| `callback` | `Runnable`: The callback to invoke when the frame is committed. This value cannot be `null`. <br /> |

### removeGlobalOnLayoutListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
```


**This method was deprecated
in API level 16.**   

Use #removeOnGlobalLayoutListener instead

Remove a previously installed global layout callback

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnGlobalLayoutListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener)`

### removeOnDrawListener

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnDrawListener (ViewTreeObserver.OnDrawListener victim)
```

<br />

Remove a previously installed pre-draw callback.

**Note:** this method **cannot** be invoked from
`https://developer.android.com/reference/android/view/ViewTreeObserver.OnDrawListener#onDraw()`.

<br />

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnDrawListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnDrawListener(android.view.ViewTreeObserver.OnDrawListener)`

### removeOnGlobalFocusChangeListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
```

Remove a previously installed focus change callback.

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnGlobalFocusChangeListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnGlobalFocusChangeListener(android.view.ViewTreeObserver.OnGlobalFocusChangeListener)`

### removeOnGlobalLayoutListener

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
```

Remove a previously installed global layout callback

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnGlobalLayoutListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener)`

### removeOnPreDrawListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
```

Remove a previously installed pre-draw callback

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnPreDrawListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener)`

### removeOnScrollChangedListener

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
```

Remove a previously installed scroll-changed callback

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnScrollChangedListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener)`

### removeOnSystemGestureExclusionRectsChangedListener

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnSystemGestureExclusionRectsChangedListener (Consumer<List<Rect>> listener)
```

Unsubscribe the given listener from gesture exclusion rect changes.

<br />

| Parameters ||
|---|---|
| `listener` | `Consumer`: This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnSystemGestureExclusionRectsChangedListener(java.util.function.Consumer<java.util.List<android.graphics.Rect>>)`
- `https://developer.android.com/reference/android/view/View#setSystemGestureExclusionRects(java.util.List<android.graphics.Rect>)`

### removeOnTouchModeChangeListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)
```

Remove a previously installed touch mode change callback

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnTouchModeChangeListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener)`

### removeOnWindowAttachListener

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnWindowAttachListener (ViewTreeObserver.OnWindowAttachListener victim)
```

Remove a previously installed window attach callback.

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnWindowAttachListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener)`

### removeOnWindowFocusChangeListener

Added in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnWindowFocusChangeListener (ViewTreeObserver.OnWindowFocusChangeListener victim)
```

Remove a previously installed window focus change callback.

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnWindowFocusChangeListener`: The callback to remove <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener)`

### removeOnWindowVisibilityChangeListener

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeOnWindowVisibilityChangeListener (ViewTreeObserver.OnWindowVisibilityChangeListener victim)
```

Remove a previously installed window visibility callback.

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.OnWindowVisibilityChangeListener`: The callback to remove. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

**See also:**

- `https://developer.android.com/reference/android/view/ViewTreeObserver#addOnWindowVisibilityChangeListener(android.view.ViewTreeObserver.OnWindowVisibilityChangeListener)`

### removeWindowInsetsAnimationListener

Added in [version 37.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void removeWindowInsetsAnimationListener (ViewTreeObserver.WindowInsetsAnimationListener victim)
```

Remove a previously installed window insets animation callback.

<br />

| Parameters ||
|---|---|
| `victim` | `ViewTreeObserver.WindowInsetsAnimationListener`: The callback to remove. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If `https://developer.android.com/reference/android/view/ViewTreeObserver#isAlive()` returns false |

### unregisterFrameCommitCallback

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean unregisterFrameCommitCallback (Runnable callback)
```

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

<br />

| Parameters ||
|---|---|
| `callback` | `Runnable`: The callback to remove. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `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 <br /> |