网友通过本文主要向大家介绍了viewtreeobserver,老罗的android之旅,android之父,android之家,android源码之家等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Android之ViewTreeObserver
前两天写了个加载更多的小功能,用到了Android的ViewTreeObserver这个类,在这里对这个类详细解释下。
基本概念
这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。最常见的用途时通过监听获知什么时候,视图的宽高值确定了,可以获取了,以便更改UI。</div>
主要接口:监听器
</div>
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类</div>
</div>
ViewTreeObserver.OnGlobalLayoutListener</div>
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类</div>
</div>
ViewTreeObserver.OnPreDrawListener</div>
当一个视图树将要绘制时,所要调用的回调函数的接口类</div>
</div>
ViewTreeObserver.OnScrollChangedListener</div>
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类</div>
</div>
r</div>
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类</div>
</div>
代码示例:
注意:
如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth、getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单的,不信的话,你可以去试一下,在onCreate里面,你是无法获得长宽值的,始终为0。</div>