Android ViewTreeObserver简介

一、结构

  1. public final class ViewTreeObserver extends Object
  2. java.lang.Object
  3. android.view.ViewTreeObserver

二、概述

  1. 这是一个注册监听视图树的观察者(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.   *参数 listener 将要被添加的回调函数
  9.   *异常 IllegalStateException 如果isAlive() 返回false
  10.   */
  11.  public void addOnGlobalLayoutListener (ViewTreeObserver.OnGlobalLayoutListener listener)
  12.   
  13.  
  14.   
  15.  /**注册一个回调函数,当一个视图树将要绘制时调用这个回调函数。
  16.   *参数 listener 将要被添加的回调函数
  17.   *异常 IllegalStateException 如果isAlive() 返回false
  18.   */
  19.  public void addOnPreDrawListener (ViewTreeObserver.OnPreDrawListener listener)
  20.  
  21.  
  22.  /**注册一个回调函数,当一个视图发生滚动时调用这个回调函数。
  23.   *参数 listener 将要被添加的回调函数
  24.   *异常 IllegalStateException 如果isAlive() 返回false
  25.   */
  26.  public void addOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener listener)
  27.  
  28.  
  29.  /**注册一个回调函数,当一个触摸模式发生改变时调用这个回调函数。
  30.   *参数 listener 将要被添加的回调函数
  31.   *异常 IllegalStateException 如果isAlive() 返回false
  32.   */
  33.  public void addOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener listener)
  34.  
  35.   
  36.  //当整个布局发生改变时通知相应的注册监听器。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在GONE状态下,它可以被手动的调用
  37.  public final void dispatchOnGlobalLayout ()
  38.  
  39.  /**当一个视图树将要绘制时通知相应的注册监听器。如果这个监听器返回true,则这个绘制将被取消并重新计划。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在一个GONE状态下,它可以被手动的调用
  40.   *返回值 当前绘制能够取消并重新计划则返回true,否则返回false。
  41.   */
  42.  public final boolean dispatchOnPreDraw ()
  43.  
  44.  /**指示当前的ViewTreeObserver是否可用(alive)。当observer不可用时,任何方法的调用(除了这个方法)都将抛出一个异常。如果一个应用程序保持和ViewTreeObserver一个历时较长的引用,它应该总是需要在调用别的方法之前去检测这个方法的返回值。
  45.   *返回值 但这个对象可用则返回true,否则返回false
  46.   */
  47.  public boolean isAlive ()
  48.  
  49.  /**移除之前已经注册的全局布局回调函数。
  50.   *参数 victim 将要被移除的回调函数
  51.   *异常 IllegalStateException 如果isAlive() 返回false
  52.   */
  53.  public void removeGlobalOnLayoutListener (ViewTreeObserver.OnGlobalLayoutListener victim)
  54.   
  55.  /**移除之前已经注册的焦点改变回调函数。
  56.   *参数 victim 将要被移除的回调函数
  57.   *异常 IllegalStateException 如果isAlive() 返回false
  58.   */
  59.  public void removeOnGlobalFocusChangeListener (ViewTreeObserver.OnGlobalFocusChangeListener victim)
  60.   
  61.  /**移除之前已经注册的预绘制回调函数。
  62.   *参数 victim 将要被移除的回调函数
  63.   *异常 IllegalStateException 如果isAlive() 返回false
  64.   */
  65.  public void removeOnPreDrawListener (ViewTreeObserver.OnPreDrawListener victim)
  66.   
  67.  /**移除之前已经注册的滚动改变回调函数。
  68.   *参数 victim 将要被移除的回调函数
  69.   *异常 IllegalStateException 如果isAlive() 返回false
  70.   */
  71.  public void removeOnScrollChangedListener (ViewTreeObserver.OnScrollChangedListener victim)
  72.  
  73.  /**移除之前已经注册的触摸模式改变回调函数
  74.   *参数 victim 将要被移除的回调函数
  75.   *异常  IllegalStateException 如果isAlive() 返回false
  76.   */
  77.  public void removeOnTouchModeChangeListener (ViewTreeObserver.OnTouchModeChangeListener victim)

ViewTreeObserver简介的更多相关文章

  1. Android ViewTreeObserver简介

    Android ViewTreeObserver简介   一.结构 public final class ViewTreeObserver extends Object java.lang.Objec ...

  2. Android为TV端助力 ViewTreeObserver(转载)

    Android ViewTreeObserver简介   一.结构 public final class ViewTreeObserver extends Object java.lang.Objec ...

  3. WebView 简介

    WebView 简介 日期: 2013年10月29日 注意: API可能有演进,所以需要看当前时间决定是否有用 继承结构: public class WebView extends AbsoluteL ...

  4. 监听视图树 ViewTreeObserver 获取View的宽高

    前奏:在哪里可以获取到View的宽高 我们知道,在onCreate方法执行完毕以后,View才开始被测量,所以我们在onCreate方法里面通过view.getWidth()或view.getMeas ...

  5. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  6. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  7. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  8. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  9. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

随机推荐

  1. Boost.Python:使用继承

    An example #include <boost/python.hpp> #include <memory> #include <iostream> using ...

  2. tcp窗口滑动以及拥塞控制

    转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...

  3. mysql学习(八)数据表类型-字符集

    数据存储引擎: MyISAM:强化快速读取操作. 也有缺点.一些功能不支持 InnoDB:支持一些MyIASM一些不支持的功能                 缺点:占用空间大 对比          ...

  4. sql update小结

    以前update用的不少,但都是简单的单表操作,没有在意,最近查阅多表关联更新及更新top n,发现update还真灵活,记录如下(在mssqlserver2008r2下测试通过): 1单表操作  u ...

  5. 【学习笔记01】:hover为DIV添加鼠标悬停时改变颜色的效果

    :hover所有主流浏览器都支持(IE6.0以下支持不好,以后再学习用Javascript来实现悬停效果) 这是一个绿色底白色Icon的搜索按钮

  6. I/O浅析

    1.为什么需要I/O? 因为程序需要从别的文件中获取内容或者程序要将自身的内容传入到文件中. 2.流种类的概述 1.字节流和字符流 字节流的基础单位是byte                  字符流 ...

  7. codevs 1913 数字梯形问题 费用流

    题目链接 给你一个数字梯形, 最上面一层m个数字, 然后m+1,......m+n-1个. n是层数. 在每个位置, 可以向左下或右下走.然后让你从最顶端的m个数字开始, 走出m条路径, 使得路过的数 ...

  8. SQL Server MYSQL 对外键建立索引的必要性

    背景: 大家知道在定义外键时,都会给出on delete .....   on update .....: 这里指定的就是当主表的列发生变化时,从表的列要用怎么样的变化去迎合.对从表中的外键,建立索引 ...

  9. MySQL存储过程(转载)

    转自:http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html 1.1         CREATE  PROCEDURE  (创 ...

  10. 忘记linux密码

    http://blog.163.com/xygzlyq@126/blog/static/22585899200810471512530/