`
mmdev
  • 浏览: 12920237 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    Android ViewTreeObserver

    Android ViewTreeObserver 一个简单的学习apk 通过实例,方便大家理解

    android view变化监听器ViewTreeObserver的简单使用

    android view变化监听器ViewTreeObserver的简单使用 五种监听博客介绍:http://blog.csdn.net/qq_33078541/article/details/50680496

    ViewTreeObserver的使用

    ViewTreeObserver的使用方法其实很简单,这是一个示例。

    Android API中文文档 v2017.zip

    Android官方API文档完整中文版是一款官方推出的全中文完整API,Android API是一套可供调用的系统接口,在需要使用的时候必备一套Android官方中文API文档。 Android API中文文档基本简介 API(Application ...

    Android :使用ViewTreeObserver进行监听测绘页面

    前一段时间,项目中有一个页面,如图所示 ...,但是没啥用啊,后来又详细的查看了相对应的其他几个参数,也都挨个试验了,最后失败;只好再次去另寻他法 2.第二个方法就是进行让整个页面进行滑动,NestedScroll

    android_UI设计pdf

    android设计官方文档!~Android官方API文档完整版、中文版帮助文档 android.widget 类 CheckBox java.lang.Object ...Drawable.Callback, KeyEvent.Callback, ViewTreeObserver.OnPreDrawListener, Checkable

    xlistview代码

    import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.animation.DecelerateInterpolator; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener...

    Android 软件盘弹出收缩监听Demo

    小米手机亲测有效,使用的百度手机输入法小米版. Android 软件盘弹出收缩监听 ViewTreeObserver OnGlobalLayoutListener

    Android 浮动编辑框的具体实现代码

    Android输入法软键盘悬浮,最常见的一种方法是通过给ViewTreeObserver添加ViewTreeObserver.OnGlobalLayoutListener当全局布局完成时或视图树中视图的可见性发生变化时回调onGlobalLayout方法,在onGlobalLayout方法...

    android监听View加载完成的示例讲解

    gv_test.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { //给GridView设置Adapter,在adapter的ge

    Android监听键盘状态获取键盘高度的实现方法

    Android暂时还没有提供一个合适的API来获取/监听键盘的状态和高度 , 而我们又经常会有这个需求. 最近我的一个项目中,在ugc页面需要在键盘顶部,紧贴着键盘显示一个文字提示,当键盘消失时就隐藏. 因此,我需要监听软...

    Android实现可收缩和扩展的TextView

    在Android原生的TextView的基础上,可收缩/扩展的TextView:PhilExpandableTextView。 实现原理:核心是控制TextView的max lines。在TextView的初始化阶段但尚未绘制出View的时候,使用ViewTreeObserver,监听...

    Android中oncreate中获得控件高度或宽度的实现方法

    Android中oncreate中获得控件高度或宽度的实现方法 onCreate函数只是提供了数据初始化的机会,此时还没有正式绘制图形。在图形尚未渲染的情况下,getWidth()或getHeight()得到的值为0。如果需要自适应屏幕,需要一...

    RevealLayout-实现页面间波纹动画效果切换.zip

    3. 为RevealLayout的ViewTreeObserver添加监听ViewTreeObserver.OnGlobalLayoutListener, 在监听中调用show()来启动进入页面波动动画。mRevealLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ...

    Android多点触控实现对图片放大缩小平移,惯性滑动等功能

    实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释 public class ZoomImageView extends ImageView implements ScaleGestureDetector.OnScaleGestureListener, View....

    可伸缩的textview详解(推荐)

    在Android原生的TextView的基础上,可收缩/扩展的TextView:PhilExpandableTextView。 实现原理:核心是控制TextView的max lines。在TextView的初始化阶段但尚未绘制出View的时候,使用ViewTreeObserver,监听...

    viewTree Observer

    一个关于viewTreeObserver用法的小例子

    Android页面中引导蒙层的使用方法详解

    蒙层是什么,蒙层是一层透明的呈灰色的视图,是在用户使用App时让用户快速学会使用的一些指导。...public class GuideView extends RelativeLayout implements ViewTreeObserver.OnGlobalLayoutListen

Global site tag (gtag.js) - Google Analytics