文档章节

getViewTreeObserver的用法

蜗牛崛起
 蜗牛崛起
发布于 2017/05/03 16:15
字数 351
阅读 15
收藏 0

ViewTreeObserver是个view事件的观察者。要注意的是它的初始化就是调用View.getViewTreeObserver()。

包含下面6个事件:

interface ViewTreeObserver.OnDrawListener

挡在一个视图树绘制时,所要调用的回调函数的接口类(level 16)

interface ViewTreeObserver.OnGlobalFocusChangeListener

当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类

interface ViewTreeObserver.OnGlobalLayoutListener

当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类

interface ViewTreeObserver.OnPreDrawListener

当一个视图树将要绘制时,所要调用的回调函数的接口类

interface ViewTreeObserver.OnScrollChangedListener

当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类

interface ViewTreeObserver.OnTouchModeChangeListener

当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类

具体的实例如下:

在onCreate方法中获取控件的宽高(由于View组件布局要在onResume回调后完成,所以直接调用获取宽高函数肯定获取不到)

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();  
           }    
       });   

另外我们在**实现跟随式小圆点效果的引导页**时,就是利用该方法来获取两个圆点之间的距离

© 著作权归作者所有

共有 人打赏支持
蜗牛崛起
粉丝 3
博文 127
码字总数 63547
作品 0
东城
程序员
私信 提问
getViewTreeObserver().addOnPreDrawListener()的使用

view.getViewTreeObserver().addOnPreDrawListener(opdl) 此方法在视图绘制前会被调用,测量结束,客户获取到一些数据。再计算一些动态宽高时可以使用。 调用一次后需要注销这个监听,否则会...

火云
2015/12/22
659
0
Material Design 初步

Material Design 初步 1、Activity设置主题 android:theme="@style/AppTheme.main"

CrazyManDF
2016/03/16
57
0
Android开发之细说ListView上拉加载,下拉刷新过程

下拉刷新------- 1.addHeaderView必须在setAdapter之前调用 2.将paddingTop设置一个headerView高度的负值去隐藏它 getHeight()和getMeasuredHeight()的区别: getMeasuredHeight():获取测量完...

Angels_安杰
2015/11/23
809
0
关于SwipeRefreshLayout 弹出的问题 进来默认代码初始状态不弹开(就3步)

版权声明:本文为博主原创文章,未经博主允许不得转载。 1、首先重写SwipeRefreshLayout import android.content.Context; import android.support.v4.widget.SwipeRefreshLayout; import an...

V_joy
2016/08/27
8
0
android中getViewTreeObserver在触发OnGlobalLayoutListener事件后为啥要移除监听器呢

如题 android中getViewTreeObserver在触发OnGlobalLayoutListener事件后为啥要调用removeOnGlobalLayoutListener方法移除监听器呢...

source&code
2014/04/11
4.5K
1

没有更多内容

加载失败,请刷新页面

加载更多

java环形缓冲区

import java.util.ArrayList;import java.util.List;/** * * 环形缓冲区<br/> * 一. 写数据:<br/> * 1. push: 当数据已写满时返回false,否则可以正常写入返回true<br/>......

whoisliang
19分钟前
1
0
内存性能的正确解读

一台服务器,不管是物理机还是虚拟机,必不可少的就是内存,内存的性能又是如何来衡量呢。 1. 内存与缓存 现在比较新的CPU一般都有三级缓存,L1 Cache(32KB-256KB),L2 Cache(128KB-2MB)...

阿里云官方博客
22分钟前
2
0
并发+超时示例

func installMantisAgent() {log.Println("begin auto repair mantis agent")num := 0succNum := 0failNum := 0var Q *queue.Queueswitch g.Config().RepairType {ca......

我爱吃葱花
34分钟前
1
0
增加一列自增id

ALTER TABLE xxxx ADD iSiteId INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;

colin_86
43分钟前
3
0
配置Tomcat虚拟主机

12月13日任务 16.4 配置Tomcat监听80端口 16.5/16.6/16.7 配置Tomcat虚拟主机 16.8 Tomcat日志 配置tomcat监听80端口 默认tomcat监听的是8080端口,如果想直接输入ip就访问到网页,就需要进行...

robertt15
58分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部