一、结构
public final class ViewTreeObserver extends Object
二、概述
一个视图树的监听者,被用来监听视图树全局视图变化,变化包括视图开始绘制,焦点改变,布局改变等,ViewTreeObserver 不可以被应用实例化因为它的实例应该由视图本身来决定,应该使用getViewTreeObserver()来获取。
三、内部类
interface ViewTreeObserver.OnGlobalFocusChangeListener
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnGlobalLayoutListener
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnPreDrawListener
当一个视图树将要绘制时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnScrollChangedListener
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnTouchModeChangeListener
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
四、公共方法
- public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)
注册一个回调函数,当在一个视图树中的焦点状态发生改变时调用这个回调函数。
- public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)
注册一个回调函数,当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时调用这个回调函数。
- public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
注册一个回调函数,当一个视图树将要绘制时调用这个回调函数。
- public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)
注册一个回调函数,当一个视图发生滚动时调用这个回调函数。
- public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
注册一个回调函数,当一个触摸模式发生改变时调用这个回调函数。
- public final void dispatchOnGlobalLayout ()
当整个布局发生改变时通知相应的注册监听器。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在GONE状态下,它可以被手动的调用
- public final boolean dispatchOnPreDraw ()
当一个视图树将要绘制时通知相应的注册监听器。如果这个监听器返回true,则这个绘制将被取消并重新计划。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在一个GONE状态下,它可以被手动的调用
- public boolean isAlive ()
指示当前的ViewTreeObserver是否可用(alive)。当observer不可用时,任何方法的调用(除了这个方法)都将抛出一个异常。如果一个应用程序保持和ViewTreeObserver一个历时较长的引用,它应该总是需要在调用别的方法之前去检测这个方法的返回值。
- public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
移除之前已经注册的全局布局回调函数。
- public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
移除之前已经注册的焦点改变回调函数。
- public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
移除之前已经注册的预绘制回调函数。
- public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
移除之前已经注册的滚动改变回调函数。
- public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)
移除之前已经注册的触摸模式改变回调函数