ViewTreeObserver简介

转载 2015年11月18日 10:34:13

ViewTreeObserver简介

转 http://blog.sina.com.cn/s/blog_4b93170a0102e2n3.html

Android ViewTreeObserver简介
 
一、结构
public final class ViewTreeObserver extends Object
    java.lang.Object
         android.view.ViewTreeObserver
 
二、概述
    
这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。ViewTreeObserver不能够被应用程序实例化,因为它是由视图提供,参照getViewTreeObserver()以查看更多信息。
 
三、内部类
    
复制代码
 1     interface  ViewTreeObserver.OnGlobalFocusChangeListener         
 2   //当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
 3  
 4   interface  ViewTreeObserver.OnGlobalLayoutListener
 5   //当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
 6  
 7   interface  ViewTreeObserver.OnPreDrawListener
 8   //当一个视图树将要绘制时,所要调用的回调函数的接口类
 9  
10   interface  ViewTreeObserver.OnScrollChangedListener
11   //当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
12  
13   interface  ViewTreeObserver.OnTouchModeChangeListener
14   //当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
复制代码
 
四、公共方法
   
复制代码
 1  /**注册一个回调函数,当在一个视图树中的焦点状态发生改变时调用这个回调函数。
 2   * 参数 listener    将要被添加的回调函数
 3   *异常 IllegalStateException       如果isAlive() 返回false
 4   */
 5  public void addOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener listener)
 6      
 7  
 8  /**注册一个回调函数,当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时调用这个回调函数。
 9   *参数 listener    将要被添加的回调函数
10   *异常 IllegalStateException       如果isAlive() 返回false
11   */
12  public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)
13   
14  
15   
16  /**注册一个回调函数,当一个视图树将要绘制时调用这个回调函数。
17   *参数 listener    将要被添加的回调函数
18   *异常 IllegalStateException       如果isAlive() 返回false
19   */
20  public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
21  
22     
23  /**注册一个回调函数,当一个视图发生滚动时调用这个回调函数。
24   *参数 listener    将要被添加的回调函数
25   *异常 IllegalStateException       如果isAlive() 返回false
26   */
27  public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)  
28  
29  
30  /**注册一个回调函数,当一个触摸模式发生改变时调用这个回调函数。
31   *参数 listener    将要被添加的回调函数
32   *异常 IllegalStateException       如果isAlive() 返回false
33   */
34  public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
35  
36   
37  //当整个布局发生改变时通知相应的注册监听器。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在GONE状态下,它可以被手动的调用
38  public final void dispatchOnGlobalLayout ()
39     
40  /**当一个视图树将要绘制时通知相应的注册监听器。如果这个监听器返回true,则这个绘制将被取消并重新计划。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在一个GONE状态下,它可以被手动的调用
41   *返回值  当前绘制能够取消并重新计划则返回true,否则返回false。
42   */
43  public final boolean dispatchOnPreDraw ()
44  
45  /**指示当前的ViewTreeObserver是否可用(alive)。当observer不可用时,任何方法的调用(除了这个方法)都将抛出一个异常。如果一个应用程序保持和ViewTreeObserver一个历时较长的引用,它应该总是需要在调用别的方法之前去检测这个方法的返回值。
46   *返回值 但这个对象可用则返回true,否则返回false   
47   */
48  public boolean isAlive ()
49     
50      
51  /**移除之前已经注册的全局布局回调函数。
52   *参数 victim 将要被移除的回调函数
53   *异常 IllegalStateException       如果isAlive() 返回false   
54   */
55  public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
56   
57  /**移除之前已经注册的焦点改变回调函数。
58   *参数 victim 将要被移除的回调函数
59   *异常 IllegalStateException       如果isAlive() 返回false 
60   */
61  public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
62   
63  /**移除之前已经注册的预绘制回调函数。
64   *参数 victim 将要被移除的回调函数
65   *异常 IllegalStateException       如果isAlive() 返回false  
66   */
67  public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
68   
69  /**移除之前已经注册的滚动改变回调函数。
70   *参数 victim 将要被移除的回调函数
71   *异常 IllegalStateException       如果isAlive() 返回false 
72   */
73  public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
74  
75  /**移除之前已经注册的触摸模式改变回调函数
76   *参数 victim 将要被移除的回调函数
77   *异常  IllegalStateException       如果isAlive() 返回false
78   */
79  public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)


android ViewTreeObserver View变化观察者

当在一个Activity或Fragment中有时我们需要获取一个控件或View的宽高来做处理,如果我们直接layout.getHeight()时 得到的值是为0,这是为什么呢?因为我们的View是呈树...
  • Luck_mw
  • Luck_mw
  • 2017年03月23日 09:47
  • 553

ViewTreeObserver的使用

序言A view tree observer is used to register listeners that can be notified of global changes in the v...
  • qq_22706515
  • qq_22706515
  • 2016年04月13日 11:02
  • 964

ViewTreeObserver简介

参考:http://www.cnblogs.com/xingfuzzhd/archive/2013/06/25/3154674.html 一、结构 public final class...
  • iloveaman
  • iloveaman
  • 2013年12月07日 22:30
  • 364

Android 下拉刷新(使用异步任务和ViewTreeObserver监听)

隐藏和显示异步任务,主要是通过控制内边距Pandding来实现 package com.siyehuazhilian.pushdownrefresh; import android.app.Acti...
  • siyehua
  • siyehua
  • 2013年12月27日 09:08
  • 811

ViewTreeObserver源码学习

ViewTreeObserver源码学习一、理解ViewTreeObserver概念ViewTreeObserver用来注册监听器,在视图树全局发生变化时收到通知。它不能被应用实例化,因为它是由视图提...
  • Jafilah2010
  • Jafilah2010
  • 2017年06月16日 16:14
  • 191

android中Viewtreeobserver解析

作用:通过名字就可以知道它是View树的观察者,当View树的发生变化的时候会发出通知。ViewTreeObserver是不能被应用程序实例化的,因为它是由视图提供的,通过view.getViewTr...
  • hp910315
  • hp910315
  • 2016年07月11日 19:30
  • 4248

Android ViewTreeObserver简介

Android ViewTreeObserver简介   一、结构 public final class ViewTreeObserver extends Object java...
  • yujunlong3919
  • yujunlong3919
  • 2013年08月24日 17:14
  • 567

android ViewTreeObserver详细讲解

一、结构 public final class ViewTreeObserver extends Object java.lang.Object          android.view.Vi...
  • jj120522
  • jj120522
  • 2012年10月22日 09:53
  • 9163

解析 ViewTreeObserver 源码,体会观察者模式、Android消息传递(上)

从 ViewTreeObserver 源码出发,带你剖析 ViewTreeObserver,并间接体会观察者(Observer)模式、Android消息传递机制在其中的使用。...
  • My_TrueLove
  • My_TrueLove
  • 2016年08月25日 02:14
  • 1549

Android ViewTreeObserver 简介

Android 的View 以及ViewGroup 只提供的简单的Listener,常常觉得不够用。ViewTreeObserver 几乎可以让你监听任何想监听的事件,简直就是一神器!下面简单介绍一下...
  • wangbaochu
  • wangbaochu
  • 2016年02月03日 16:07
  • 434
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ViewTreeObserver简介
举报原因:
原因补充:

(最多只允许输入30个字)