如何检测View移动的时间?

时间:2012-03-08 07:47:54

标签: android

我的活动中有一个视图。由于任何操作(用户滚动,相对视图调整移动内容等),我想检测它何时在屏幕上移动。这应该是在一个库中,所以我可以查询层次结构,但我不控制它,除了添加事件监听器之外我也不能修改它。

有没有办法将此作为一个事件,而不是轮询?

2 个答案:

答案 0 :(得分:7)

的事件:View.getViewTreeObserver().addOnScrollChangedListener()

final ViewTreeObserver.OnScrollChangedListener mScrollChangedListener = ...;

@Override
protected void onAttachedToWindow() {
  super.onAttachedToWindow();
  getViewTreeObserver().addOnScrollChangedListener(mScrollChangedListener);
}

@Override
protected void onDetachedFromWindow() {
  super.onDetachedFromWindow();
  getViewTreeObserver().removeOnScrollChangedListener(mScrollChangedListener);
}

来源:Android源代码(4.0),android.view.SurfaceView.java:205

答案 1 :(得分:0)

您是否尝试过在视图中收听“拖动”事件?

尝试实施onDragListener,一个开始理解如何做的好地方就是Drag and Drop android教程:http://developer.android.com/guide/topics/ui/drag-drop.html