`

ViewTreeObserver?

 
阅读更多

OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,这是一个注册监听视图树的观察者(observer),在视图树的全局事件改变时得到通知。ViewTreeObserver不能直接实例化,而是通过getViewTreeObserver()获得。

除了OnGlobalLayoutListener,ViewTreeObserver还有以下内部类:
1.ViewTreeObserver.OnGlobalFocusChangeListener
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
2.ViewTreeObserver.OnGlobalLayoutListener
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
3.ViewTreeObserver.OnPreDrawListener
当一个视图树将要绘制时,所要调用的回调函数的接口类
4.ViewTreeObserver.OnScrollChangedListener
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
5.ViewTreeObserver.OnTouchModeChangeListener
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类

但是需要注意的是OnGlobalLayoutListener可能会被多次触发,因此在得到了高度之后,要将OnGlobalLayoutListener注销掉。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    Android ViewTreeObserver

    **Android ViewTreeObserver详解** `Android ViewTreeObserver`是Android UI框架中的一个重要组件,它用于观察View树(View Hierarchy)的变化。这个组件允许开发者在View的生命周期中的特定时刻进行回调,例如当...

    ViewTreeObserver的使用

    在Android开发中,`ViewTreeObserver` 是一个非常重要的工具,它允许我们监听视图树(View Tree)的各种状态变化,比如布局加载完成、尺寸改变、可见性变化等。了解和熟练使用`ViewTreeObserver`对于优化用户界面的...

    android view变化监听器ViewTreeObserver的简单使用

    android view变化监听器ViewTreeObserver的简单使用 五种监听博客介绍:http://blog.csdn.net/qq_33078541/article/details/50680496

    viewTree Observer

    在Android开发中,`ViewTreeObserver` 是一个非常重要的工具,它允许我们监听视图树(View Tree)的各种变化,比如视图的加载、尺寸改变、滚动事件等。`ViewTreeObserver` 提供了一种机制,让我们可以在合适的时机...

    ViewTreeObserverDemo

    在Android开发中,`ViewTreeObserver` 是一个非常重要的工具,它允许我们监听视图树(View Tree)的各种变化,包括但不限于视图的加载、绘制、尺寸改变等事件。`ViewTreeObserverDemo` 演示了如何使用 `...

    ViewTreeObserverTest源代码

    在Android开发中,`ViewTreeObserver` 是一个非常重要的组件,它主要用于监控视图树(View Tree)的各种变化,如视图的加载、大小改变、滚动事件等。`ViewTreeObserverTest` 源代码是对这个组件进行测试的类,通过...

    Android :使用ViewTreeObserver进行监听测绘页面

    前一段时间,项目中有一个页面,如图所示 图片中的最下方的按钮,取消预约,这两个按钮,在正常的页面中是正常显示的,但是会出现头部的ToolBar会被顶出页面,也就是在弹出输入框的时候,然后测试小伙伴就给我提了bug,没有...

    android 监听软键盘.zip

    此外,Android API 16及以上版本提供了`ViewTreeObserver.OnGlobalLayoutListener`的非侵入式接口`ViewTreeObserver.GlobalLayoutListener`,可以使用Lambda表达式简化代码,如下所示: ```java rootView....

    ( Android 获取屏幕宽高的3种方式以及获取控件宽高等的方法 )的示例demo

    ViewTreeObserver vto = findViewById(android.R.id.content).getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() ...

    Android 软件盘弹出收缩监听Demo

    在这个Demo中,开发者使用了`ViewTreeObserver`和`OnGlobalLayoutListener`来达到这个目的。 `ViewTreeObserver`是Android中的一个接口,用于观察视图树的变化,比如视图的大小、位置或者是否可绘制等。而`...

    android获取根View的方法

    注意:从API 16开始,推荐使用ViewTreeObserver的removeOnGlobalLayoutListener()方法来避免内存泄漏。 四、通过Activity的DecorView获取 Activity的DecorView是所有窗口内容的顶级容器,它可以包含根View。我们...

    ViewTreeObserverTest

    在Android开发中,`ViewTreeObserver` 是一个非常重要的组件,它允许我们监听视图树中的各种变化。`ViewTreeObserverTest` 是一个专门用于测试`ViewTreeObserver`各种监听事件的示例项目,这对于理解和掌握`...

    Android软键盘返回键监听.zip

    另一种方法是观察根布局(通常为根LinearLayout或CoordinatorLayout)的变化,通过ViewTreeObserver的OnGlobalLayoutListener接口来判断软键盘的显示和隐藏。当软键盘弹出时,布局的高度会减少,因此可以通过比较...

    android获取控件宽高.rar

    正确做法是在`onWindowFocusChanged()`或在`ViewTreeObserver`的`onGlobalLayout()`回调中获取。 2. **`ViewTreeObserver`监听** 使用`ViewTreeObserver`可以监听到视图树的布局变化,当所有视图都已绘制完毕,...

    Android Listener侦听的N种写法

    注意:从Android API 23开始,应使用`addOnGlobalLayoutListener`的lambda表达式或`ViewTreeObserver.GlobalLayoutListener`接口。 八、TextWatcher(文本输入监听) 对于EditText,可以使用TextWatcher来监听文本...

    4种Android获取View宽高的方式

    ViewTreeObserver viewTreeObserver = tvTest.getViewTreeObserver(); viewTreeObserver .addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { tvTest....

    Android在OnCreate中获取控件的宽度和高度的实现代码

    下面是一个示例代码,展示如何在`OnCreate`中使用`ViewTreeObserver`监听器来获取控件的宽度和高度: ```java layout = (MetroLayout) findViewById(R.id.layout); ViewTreeObserver vto = layout....

Global site tag (gtag.js) - Google Analytics