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; // 注意此行返回的值

}

};

最新文章

  1. 阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
  2. Windows Phone 开发起步之旅之二 C#中的值类型和引用类型
  3. Android版年年有鱼游戏源码
  4. HDU 1272 小希的迷宫 (并查集)
  5. Oracle中NVARCHAR2字符集不匹配问题
  6. linux shell pushd popd dirs命令
  7. 【转】Android菜单详解——理解android中的Menu--不错
  8. CSDN第四届在线编程大赛2014初赛:带通配符的数
  9. 大约 C++ 几个方面分析--overload, override, overwrite, rewrite
  10. 原生js显示消失
  11. mui选择器的坑
  12. 使用vue-cli脚手架创建项目
  13. [Loadrunner参数化]一个文件输两列参数的取值
  14. 大数据:Parquet文件存储格式
  15. 2019-03-21-day016-正则表达式
  16. 同步IO和异步IO的区别
  17. 接口测试maven管理
  18. 大数据领域两大最主流集群管理工具Ambari和Cloudera Manger
  19. jquery如何把一个html元素替换成另外一个html元素?
  20. 编写高质量代码改善C#程序的157个建议——建议111:避免双向耦合

热门文章

  1. Ribbon 窗体的 MDI 子窗体使用 TabbedMDIManager 切换时工具条闪屏问题的解决办法
  2. java虚拟机JVM学习笔记-基础知识
  3. Codeforces Gym 100002 Problem F "Folding" 区间DP
  4. POJ1463:Strategic game(树形DP)
  5. Android 4.1源码编译找不到资源文件解决办法
  6. 详解Android Handler的使用-别说你不懂handler
  7. hdu 3006 枚举集合能够产生的全部并集的集合
  8. springMVC2 1入门程序
  9. leetcode -- Merge k Sorted Lists add code
  10. 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)