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

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

    如何使用FFmpeg抽取音视频的视频数据,代码如下: // FFmpegTest.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include ...

  2. [Swift]LeetCode844. 比较含退格的字符串 | Backspace String Compare

    Given two strings S and T, return if they are equal when both are typed into empty text editors. # m ...

  3. ThinkPHP Redis实现模拟队列

    1.入队操作: //入队 public function enqueue() { $redis = new \Redis(); $redis->connect('127.0.0.1',6379) ...

  4. 『Tarjan算法 无向图的割点与割边』

    无向图的割点与割边 定义:给定无相连通图\(G=(V,E)\) 若对于\(x \in V\),从图中删去节点\(x\)以及所有与\(x\)关联的边后,\(G\)分裂为两个或以上不连通的子图,则称\(x ...

  5. Shader 入门笔记(一) 如何学习shader

    本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的s ...

  6. asp.net core 系列 7 Razor框架路由(上)

    一.概述 在上二篇中,主要是介绍了asp.net core mvc中路由的使用,这篇继续介绍路由在ASP.NET Core Razor中的使用.Razor Pages应该使用默认的传统路由,从应用程序 ...

  7. PHP中的反射

    PHP中的反射 PHP5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 此外,反射 API 提供了方法来取出函数.类和方法中的文档注释. 请注意部分内部 API 丢失 ...

  8. Android app 架构的一些讨论和资源收藏

    架构 https://www.zhihu.com/question/21406685 MVP,MVC,MVVM框架 http://blog.csdn.net/copy_yuan/article/det ...

  9. TypeScript: type alias 与 interface

    官方文档中有关于两者对比的信息,隐藏在 TypeScript Handbook 中,见 Interfaces vs. Type Aliases 部分. 但因为这一部分很久没更新了,所以其中描述的内容不 ...

  10. scrapy爬虫学习系列七:scrapy常见问题解决方案

    1 常见错误 1.1 错误: ImportError: No module named win32api 官方参考:https://doc.scrapy.org/en/latest/faq.html# ...