文档章节

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.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
35分钟前
0
0
磁盘格式化、磁盘挂载和手动增加swap空间

9月26日任务 4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间 4.5/4.6 磁盘格式化 #查看Linux所支持的文件格式 [root@zgxlinux-01 ~]# cat /etc/filesystems xfs...

zgxlinux
45分钟前
0
0
intellij idea中,鼠标拖动选择的是一块矩形区域

点“编辑”-->“列选择模式” 或者 按 Shift+Alt+Insert

hengbao5
48分钟前
0
0
中文地址

火力全開
今天
0
0
71:循环之for、while、break、continue、exit

1、for循环语法: for 变量名 in 条件;do......;done 1:案例1:求1加到100的和: [root@localhost_02 for]# vim for1.sh #!/bin/bashsum=0for i in `seq 1 100`do sum=$[$sum...

芬野de博客
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部