祝大家新年快乐,新的一年技术涨涨涨~~
ViewTreeObserver 有五个监听接口:
interface ViewTreeObserver.OnGlobalFocusChangeListener
//当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnGlobalLayoutListener
//当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnPreDrawListener
//当一个视图树将要绘制时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnScrollChangedListener
//当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnTouchModeChangeListener
//当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
看注释很清楚可以看到几个接口的用处。主要都是用于监听控件的状态。
拿一个接口简要说明其使用方法(其实和点击事件的使用方法类似):
(一)在类上实现接口,实现对应方法,在监听方法内做相应的处理。
<span style="font-size:18px;">public class MainActivity extends AppCompatActivity implements ViewTreeObserver.OnTouchModeChangeListener</span>
需要监听的视图或者控件 view.getViewTreeObserver
增加相应的监听:view.addOnTouchModeChangeListener(this)
<span style="font-size:18px;">@Override
public void onTouchModeChanged(boolean isInTouchMode)
{
if (isInTouchMode)
tv_show.setText("In touch mode");
else
tv_show.setText("Not in touch mode");
}</span>
(二)直接对视图和控件的使用
<span style="font-size:18px;">listforlisten.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
System.out.println("开始滚动");
}
});</span>
view 先getViewTreeObserver,添加监听
整体和点击事件的监听类似。
原创文章,转载请注明出处:
http://blog.csdn.net/qq_33078541?viewmode=contents
简单使用demo,免积分下载
http://download.csdn.net/detail/qq_33078541/9434363