Android ViewTreeObserver简介-------------转

摘要:
应用程序无法实例化ViewTreeObserver,因为它是由视图提供的。有关详细信息,请参阅getViewTreeObserver()。PublicbooleanisAlive()指示当前ViewTreeObserver是否可用。如果应用程序维护对ViewTreeObserver的长引用,则在调用其他方法之前,应始终检查此方法的返回值。如果返回值但对象可用,则返回true;否则,false publicvoid removeGlobalOnLayoutListener将删除之前注册的全局布局回调函数。参数受害者是要删除的回调函数异常IllegalStateException。如果isAlive()返回false,则publicvoid removeOnGlobalFocusChangeListener将删除之前注册的焦点更改回调函数。
Android ViewTreeObserver简介
 
一、结构
 
public final class ViewTreeObserver extends Object
    java.lang.Object
         android.view.ViewTreeObserver
 
二、概述
    
这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。ViewTreeObserver不能够被应用程序实例化,因为它是由视图提供,参照getViewTreeObserver()以查看更多信息。
 
三、内部类
    
interface  ViewTreeObserver.OnGlobalFocusChangeListener         
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
 
interface  ViewTreeObserver.OnGlobalLayoutListener
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
 
interface  ViewTreeObserver.OnPreDrawListener
当一个视图树将要绘制时,所要调用的回调函数的接口类
 
interface  ViewTreeObserver.OnScrollChangedListener
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
 
interface  ViewTreeObserver.OnTouchModeChangeListener
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
 
四、公共方法
 
  public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)
  注册一个回调函数,当在一个视图树中的焦点状态发生改变时调用这个回调函数。
  参数
                   listener    将要被添加的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false
 
  public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)
  注册一个回调函数,当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时调用这个回调函数。
  参数
                   listener    将要被添加的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false
 
  public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
  注册一个回调函数,当一个视图树将要绘制时调用这个回调函数。
  参数
                   listener    将要被添加的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false
 
  public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)     
  注册一个回调函数,当一个视图发生滚动时调用这个回调函数。
  参数
                   listener    将要被添加的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false
 
  public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
 
  注册一个回调函数,当一个触摸模式发生改变时调用这个回调函数。
  参数
                   listener    将要被添加的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false
 
  public final void dispatchOnGlobalLayout ()
 
  当整个布局发生改变时通知相应的注册监听器。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在GONE状态下,它可以被手动的调用
 
  public final boolean dispatchOnPreDraw ()
 
  当一个视图树将要绘制时通知相应的注册监听器。如果这个监听器返回true,则这个绘制将被取消并重新计划。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在一个GONE状态下,它可以被手动的调用
                   返回值
                            当前绘制能够取消并重新计划则返回true,否则返回false。
  public boolean isAlive ()
 
  指示当前的ViewTreeObserver是否可用(alive)。当observer不可用时,任何方法的调用(除了这个方法)都将抛出一个异常。如果一个应用程序保持和ViewTreeObserver一个历时较长的引用,它应该总是需要在调用别的方法之前去检测这个方法的返回值。
                   返回值
                            但这个对象可用则返回true,否则返回false   
  public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
  移除之前已经注册的全局布局回调函数。
  参数
                   victim 将要被移除的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false   
 
  public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
  移除之前已经注册的焦点改变回调函数。
  参数
                   victim 将要被移除的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false 
 
  public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
  移除之前已经注册的预绘制回调函数。
  参数
                   victim 将要被移除的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false  
 
  public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
  移除之前已经注册的滚动改变回调函数。
  参数
                   victim 将要被移除的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false 
 
  public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)
  移除之前已经注册的触摸模式改变回调函数
  参数
                   victim 将要被移除的回调函数
                 异常
                   IllegalStateException       如果isAlive() 返回false

免责声明:文章转载自《Android ViewTreeObserver简介-------------转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[轉]redis;mongodb;memcache三者的性能比較Oracle审计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

array_walk() 函数

array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。 典型情况下 function 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。 如果 function 函数需要的参数比给出的多,则每次 array_walk...

转载别人的DLL DEll研究

昨日,编了个DLL和EXE来进行了下测试,exe通过lib静态联编dll,来调用它的导出类,当改变DLL中导出类的结构(eg.成员变量的顺序等),从新发布DLL而不从新联结编译EXE,就会造成错误的执行结果或崩溃!通过观察DLL和EXE生成的汇编代码,才知道生成的机器码中并无类的成员变量,只有类的Size(根据成员变量和有无虚函数)和类函数代码。    函...

libevent编程疑难解答

http://blog.csdn.net/luotuo44/article/details/39547391 转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39547391 正常情况下应该在libevent的回调中调用event_add函数, 如果想下其他的线程中调用event_add,是线程不...

「快应用篇02」快应用开发时,优化总结篇

童鞋们好,国庆节已经结束。大家是否已经把学习与工作模式完全切回来了呢? 欢迎关注公众号:大前端早读 之前一篇文章我们了解了一下什么是快应用,现在我们带大家来看看快应用开发时,需要做到的一些优化方式。如果对快应用开发并不熟悉的童鞋,可以先去学一学快应用的一般开发方式。 快应用是一种新的应用形态,以往的手机端应用主要有两种方式:网页、原生应用;网页无需安装,...

Pipe(管道),Event(事件),Semaphore(信号量),Pool(进程池),回调函数

一、关于Pipe(管道)队列就是基于管道的方法,不常用,因为管道中的内容是共享的,数据不安全,而且一个数据取走后,其他人没法接收. 由Pipe方法返回的两个连接对象表示管道的两端。每个连接对象都有send和recv方法(除其他之外)。注意,如果两个进程(或线程)试图同时从管道的同一端读取或写入数据,那么管道中的数据可能会损坏。当然,在使用管道的不同端部的过...

Window.requestAnimationFrame()动画更新

概述 Window.requestAnimationFrame()方法告诉浏览器你希望执行动画,并且再下一次重绘之前要求浏览器调用一个特定的函数去更新动画。该方法把一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行。 注意:如果你想在浏览器下次重绘之前继续更新下一帧动画,那么回调函数自身必须再次调用Window.requestAnimationF...