ViewTreeObserver

版本:Android 3.0 r1

结构

继承关系

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

====================================================================================

类概述

用于注册监听的视图树观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。ViewTreeObserver不能够被应用程序实例化,因为它是由视图提供,参照getViewTreeObserver()以查看更多信息。

当一个视图树将要绘制时,所要调用的回调函数的接口类

ImageView iv = (ImageView) findViewById(R.id.flash);

iv.setBackgroundResource(R.anim.flash);

ad = (AnimationDrawable) iv.getBackground();

iv.getViewTreeObserver().addOnPreDrawListener(opdl);

OnPreDrawListener opdl = new OnPreDrawListener() {

public boolean onPreDraw() {

ad.start();

return true; // 注意此行返回的值

}

};

ViewTreeObserver类概述的更多相关文章

  1. [引]LINQ to XML 类概述

    本文转自:http://msdn.microsoft.com/zh-cn/library/bb387023.aspx 本主题提供 System.Xml.Linq 命名空间中 LINQ to XML 类 ...

  2. Java基础知识强化之集合框架笔记68:Collections类概述和成员方法(备注:Collection 和 Collections区别)

    1. Collections类概述: 针对集合操作的工具类,都是静态方法.  2. Collection 和 Collections的区别: Collections是个java.util下的类,它包含 ...

  3. Java基础知识强化89:Date类之Data类概述及其方法

    1. Date类概述 类Date表示特定的瞬间,精确到毫秒 2. 构造方法 public Date():根据当前默认毫秒值创建日期对象 public Date(long date):根据给定的毫秒值创 ...

  4. Java基础知识强化82:Random类概述和方法使用

    1. Random类 public class Random extends Object implements Serializable: 此类的实例用于生成伪随机数流.此类使用48位种子. (1) ...

  5. Java——File类概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  6. java I/O流类概述

    java I/O流类概述

  7. iOS开发值NSUserDefaults类概述

    NSUserDefaults类概述 NSUserDefaults类为和默认的系统进行交互提供了一个系统编程接口.默认的系统允许一个应用来定制它的行为以适应用户的喜好.例如,你可以允许用户去决定你的应用 ...

  8. 【JAVA Properties类概述】

    一.概述. 之前说过,该对象是和IO流相结合的技术,所以和IO流结合在一起来讲比较合适. public class Propertiesextends Hashtable<Object,Obje ...

  9. Object类概述

    Object:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.每个类都直接或者间接的继承自Object类. Object类的方法:public int hashCode() ...

随机推荐

  1. uoj #31. 【UR #2】猪猪侠再战括号序列 贪心

    #31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...

  2. Perl多进程

    perl作为一种解释性的语言,非常受广大系统管理员的欢迎,优点么就不多说了,坏处也有不少,比如对线程的支持,就一直不咋地,所以大多数情况下,我们都须要多个进程,来帮助我们完毕工作,闲话少说,上代码. ...

  3. The internals of Python string interning

    JUNE 28TH, 2014Tweet This article describes how Python string interning works in CPython 2.7.7. A fe ...

  4. Computer Science Theory for the Information Age-6: 学习理论——VC定理的证明

    VC定理的证明 本文讨论VC理论的证明,其主要内容就是证明VC理论的两个定理,所以内容非常的枯燥,但对于充实一下自己的理论知识也是有帮助的.另外,VC理论属于比较难也比较抽象的知识,所以我总结的这些证 ...

  5. 简简单单安装debian桌面工作环境

    linux一般给人的影响是对使用者的要求偏高, 使用者需要自行配置很多相应的系统工作参数,因此,从一定的程度上阻碍了用户去使用它.而本文所介绍的是, 使用者完全可以消除这个障碍,非常简单地安装好自己的 ...

  6. PHP: 深入pack/unpack 字节序

    http://my.oschina.net/goal/blog/195749?p=1 目录[-] 写在前面的话 什么是字节序 MSB和LSB 大端序 小端序 网络字节序 主机字节序 总结 pack/u ...

  7. Logback日志使用详解

    概述 Logback建立于三个主要类之上:日志记录器(Logger),输出端(Appender)和日志格式化器(Layout).这三种组件协同工作,使开发者可以按照消息类型和级别来记录消息,还可以在程 ...

  8. C# 正则表达式 学习笔记二

    1.身份证格式验证(不保证有效性)  * 身份证15位编码规则:dddddd yymmdd xx p  * dddddd:6位地区编码  * yymmdd: 出生年(两位年)月日,如:910215  ...

  9. JavaScript 关于this的理解

    this是一个挺神奇的东西,经常不知道它绑定到了那里 ,因此出来了各种绞尽脑汁的面试题. 例1 <script> var person={}; person.name='li'; pers ...

  10. android开发之路06(浅谈单例设计模式)

    设计模式之单例模式: 一.单例模式实现特点:①单例类在整个应用程序中只能有一个实例(通过私有无参构造器实现):②单例类必须自己创建这个实例并且可供其他对象访问(通过静态公开的访问权限修饰的getIns ...