我的活动中有一个视图。由于任何操作(用户滚动,相对视图调整移动内容等),我想检测它何时在屏幕上移动。这应该是在一个库中,所以我可以查询层次结构,但我不控制它,除了添加事件监听器之外我也不能修改它。
有没有办法将此作为一个事件,而不是轮询?
答案 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