Android ViewTreeObserver简介
 
一、结构
  1. public final class ViewTreeObserver extends Object
  2. java.lang.Object
  3. android.view.ViewTreeObserver
 
二、概述
    

  1. 这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。ViewTreeObserver不能够被应用程序实例化,因为它是由视图提供,参照getViewTreeObserver()以查看更多信息。
 
三、内部类
    
  1. 1 interface ViewTreeObserver.OnGlobalFocusChangeListener
  2. 2   //当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
  3. 3
  4. 4   interface ViewTreeObserver.OnGlobalLayoutListener
  5. 5   //当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
  6. 6
  7. 7   interface ViewTreeObserver.OnPreDrawListener
  8. 8   //当一个视图树将要绘制时,所要调用的回调函数的接口类
  9. 9
  10. 10   interface ViewTreeObserver.OnScrollChangedListener
  11. 11   //当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
  12. 12
  13. 13   interface ViewTreeObserver.OnTouchModeChangeListener
  14. 14   //当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
 
四、公共方法
   

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

Android为TV端助力 ViewTreeObserver(转载)的更多相关文章

  1. Android为TV端助力(转载)

    作者地址http://www.jianshu.com/u/63915ef020e2 针对Android Tv的自定义RecyclerView 作者 wenju_song 关注 2016.12.09 1 ...

  2. Android为TV端助力 转载:RecyclerView分页加载

    package com.android.ryane.pulltoloaddata_recyclerview; import android.os.Handler;import android.os.L ...

  3. Android为TV端助力 fragment 的用法以及与activity的交互和保存数据的方法,包括屏幕切换(转载)!

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 1.管理Fragment回退栈 类似与Android系统为Acti ...

  4. Android为TV端助力:(转载)修改TextView字体样式

    一.开篇 因为 Android 字体相关的内容还比较多的.有时候其实我们只需要调整一下属性就可以满足设计师的需求,或者是一个退后的方案(毕竟有发版的时间卡住了),有一些效果可以大概满足需求. 那么本文 ...

  5. Android为TV端助力转载:码农小阿飞(SpannableString)

    用SpannableString打造绚丽多彩的文本显示效果 引语 TeXtView大家应该都不陌生,文本展示控件嘛! 就用TextView显示普普通通的文本,OK,很简单,Android入门的都会,没 ...

  6. Android为TV端助力 转载:android MVC设计模式

    Controller控制器 import android.app.Dialog; import android.app.ProgressDialog; import android.os.Bundle ...

  7. Android为TV端助力 转载:Android绘图Canvas十八般武器之Shader详解及实战篇(上)

    前言 Android中绘图离不开的就是Canvas了,Canvas是一个庞大的知识体系,有Java层的,也有jni层深入到Framework.Canvas有许多的知识内容,构建了一个武器库一般,所谓十 ...

  8. Android为TV端助力 转载:Android绘图Canvas十八般武器之Shader详解及实战篇(下)

    LinearGradient 线性渐变渲染器 LinearGradient中文翻译过来就是线性渐变的意思.线性渐变通俗来讲就是给起点设置一个颜色值如#faf84d,终点设置一个颜色值如#CC423C, ...

  9. Android为TV端助力 转载:android自定义view实战(温度控制表)!

    效果图 package cn.ljuns.temperature.view; import com.example.mvp.R; import android.content.Context;impo ...

随机推荐

  1. [Swift]LeetCode234. 回文链表 | Palindrome Linked List

    Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...

  2. [Swift]LeetCode831. 隐藏个人信息 | Masking Personal Information

    We are given a personal information string S, which may represent either an email address or a phone ...

  3. [Swift]LeetCode1000. 合并石头的最低成本 | Minimum Cost to Merge Stones

    There are N piles of stones arranged in a row.  The i-th pile has stones[i] stones. A move consists ...

  4. 推荐一款接口 API 设计神器!

    今天栈长给大家推荐一款接口 API 设计神器,传说中的,牛逼哄洪的 Swagger,它到底是什么?今天为大家揭开谜底! Swagger是什么? 官网:https://swagger.io/ Swagg ...

  5. 微信公众号的开发 Senparc.Weixin.dll使用

    项目需要,做个微信公众号,之前从未做过,前期挺懵的,再次记录一下,一切困难都是纸老虎(哈哈) 服务号是公司申请的微信公共账号,订阅号是个人申请的.建议开发者自己申请一个测试账号,方便使用,但是测试账号 ...

  6. Lunix服务器上项目迁移命令

    scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下. scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP ...

  7. Typescript 查缺补漏

    Types Casting: let input = xxx as HTMLInputElement; let input = <HTMLElement>xxxx; Object Shap ...

  8. [Leetcode]669 Trim a Binary Search Tree

    Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that a ...

  9. LogDashboard 1.0.4 版本发布

    LogDashboard 1.0.4 版本 有关LogDashboard的介绍请看这里.logDashboard已经发布了1.0.4版本 有关这个版本的详细变化可以在Github上的里程碑上查看 支持 ...

  10. leetcode — surrounded-regions

    import java.util.Arrays; import java.util.Stack; /** * Source : https://oj.leetcode.com/problems/sur ...