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

转载于:https://www.cnblogs.com/wei1228565493/p/4517062.html

Android ViewTreeObserver简介-------------转相关推荐

  1. Android KTX简介

    Android KTX简介 Android KTX简介 介绍 主要功能 字符串转为URI SharedPreferences Path View的onPreDraw监听 代码接入 原理介绍 Exten ...

  2. 【译】Android系统简介—— Activity

    续上一篇,继续介绍Android系统.上一篇: [译]Android系统简介 本文主要介绍构建Android应用的一些主要概念: Activity Activity是应用程序中一个单独的有UI的页面( ...

  3. android radiooptions简介

    android radiooptions简介 RILD负责modem和RILJ端的通信,信息分两种:unsolicited和solicited,前者是由modem主动上报的,诸如时区更新.通话状态.网 ...

  4. Android 的简介和体系结构中每个层的功能。

    Android 的简介和体系结构中每个层的功能. 1.简介 Android是由Google公司和开放手机联盟领导并开发的一种基于Linux的自由且开放源代码的操作系统,主要使用于移动设备. Andro ...

  5. Android字体简介

    Android字体简介 Android系统默认支持三种字体,分别为:"sans","serif","monospace". android. ...

  6. Android OkHttp3简介和使用详解

    一 OKHttp简介 OKHttp是一个处理网络请求的开源项目,Android 当前最火热网络框架,由移动支付Square公司贡献,用于替代HttpUrlConnection和Apache HttpC ...

  7. android 教程概要,Android精通教程-第一节Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cea ...

  8. Android HIDL 简介

    Android HIDL 简介 Qidi 2017.08.01 (Markdown & Haroopad) 注意:本文基于 Android 8.0 进行分析. 0.特别声明 本文是在 HIDL ...

  9. Android开发-简介(一)

    Android的简介: Android是一种基于Linux 内核和其他开源软件的修改版本的移动操作系统,主要为智能手机和平板电脑等触摸屏移动设备设计.Android是由一个被称为开放手机联盟的开发者联 ...

最新文章

  1. 枚举远程计算机用户名,枚举会话ID(可以用来检测当前windows用户是否是远程登录!)...
  2. SNMP功能开发简介 四 net-snmp动态监听自定义端口
  3. TCP三次握手,握的是啥?
  4. pandas操作sql数据库
  5. C语言 文件读写 fseek 函数 - C语言零基础入门教程
  6. Asp.net+Jquery实现用户信息异步验证
  7. Java线程之间的协作
  8. 动态规划-最长不下降子序列
  9. html设置隐藏窗口,html – 在窗口大小调整时逐个隐藏菜单项
  10. MAC修改hosts
  11. 移动设备管理存在哪些威胁?
  12. huobi程序化交易项目
  13. java encapsulation_Java Encapsulation vs Abstraction
  14. 对计算机辅助英语教学的建议,CALL引入我国后英语教师面临困难及建议.doc
  15. 【硬核】肝了一个月,Cisco网络工程师知识点总结
  16. Selenium学习——QQ空间点赞好友说说
  17. HDU - 5238(剩余定理)
  18. 2008服务器系统怎么备份,服务器2008系统备份
  19. Jsp:WebRoot与WebContent区别
  20. Java8新特性之Lambda,呦呦呦

热门文章

  1. php4.3-5.x,4.3 案例之 ThinkPHP 5.0 集成方法
  2. java中setid(),Java Process.setId方法代碼示例
  3. (一)硕博生常用的中文文献检索方式推荐
  4. Vivado中用于时钟操作的几个Tcl命令
  5. TCL中Ports/Pins/Nets/Cells/Clocks之间的交互关系?
  6. 芯片设计抽象层及其设计风格
  7. jenkins需安装插件总结
  8. 别瞎操心了!机器人根本不会抢你的饭碗
  9. usermod 命令、mkpasswd命令及用户密码管理
  10. RHEL7 kvm虚拟机桥接网络配置