ViewTreeObserver
来源:互联网 发布:知乎图标 编辑:程序博客网 时间:2024/06/01 15:42
api的概述:
A view tree observer is used to register listeners that can be notified of global changes in the view tree. Such global events include, but are not limited to, layout of the whole tree, beginning of the drawing pass, touch mode change.... A ViewTreeObserver should never be instantiated by applications as it is provided by the views hierarchy. Refer to View.getViewTreeObserver() for more information.
简单来说,这是个view事件的观察者。要注意的是它的初始化就是调用View.getViewTreeObserver()。
包含下面6个事件:
interface ViewTreeObserver.OnDrawListener
挡在一个视图树绘制时,所要调用的回调函数的接口类(level 16)
interface ViewTreeObserver.OnGlobalFocusChangeListener
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnGlobalLayoutListener
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnPreDrawListener
当一个视图树将要绘制时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnScrollChangedListener
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnTouchModeChangeListener
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
具体的实例,
1,在OnCreate()中获取控件高度与宽度
ViewTreeObserver observer = view.getViewTreeObserver(); observer .addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); final int w = view.getMeasuredWidth(); final int h = view.getMeasuredHeight(); } });
2,启动帧动画
使用ViewTreeObserver.OnPreDrawListener listener:当一个视图树将要绘制时产生事件,可以添加一个其事件处理函数:onPreDraw
OnPreDrawListener opdl=new OnPreDrawListener(){ @Override public boolean onPreDraw() { animDraw.start(); return true; } }; //onCreate方法中imageV.getViewTreeObserver().addOnPreDrawListener(opdl);
view也有onfocusChangedListener,是不是有些重复呢,这些回调肯定和view中的对应的回调有关联的,只不过这里的是有Global这个关键字,范围更大,其他的用处深入android源码应该可以找到挺多的,待补充吧。
参考:http://www.cnblogs.com/hellope/archive/2011/08/23/2150094.html
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver?
- ViewTreeObserver
- ViewTreeObserver
- ViewTreeObserver.OnPreDrawListener
- ViewTreeObserver简介
- Android ViewTreeObserver
- Android ViewTreeObserver
- ViewTreeObserver简介
- Android ViewTreeObserver
- 【Python】ubuntu下web.py 与 apache的配置
- HEVC学习(六) —— 帧内预测系列之四
- Visual Studio 单元测试之三---压力测试 (转)
- 数据流重定向
- 《小骆驼书读书笔记》
- ViewTreeObserver
- 项目上线之期初数据调整
- ubuntu 11.04安装OpenCV2.3
- js中的一些类型转换
- 生物信息学期刊与会议
- ITRON系统使用方法
- Java
- JSONObject与JSONArray的使用
- 人人网——揭秘社交网络之开放平台技术