android view可见性监听
时间: 2023-08-14 15:07:40 浏览: 54
在 Android 中,可以通过 `View` 类提供的 `addOnAttachStateChangeListener()` 方法和 `setOnTouchListener()` 方法来监听视图的可见性。具体实现步骤如下:
1. 实现 `View.OnTouchListener` 接口,重写 `onTouch()` 方法,用于判断触摸事件是否发生在当前视图上,如果是,则表示当前视图可见;如果不是,则表示当前视图不可见。
```
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
Rect rect = new Rect();
view.getGlobalVisibleRect(rect);
if (!rect.contains((int)event.getRawX(), (int)event.getRawY())) {
// 当前视图不可见
} else {
// 当前视图可见
}
}
return false;
}
});
```
2. 实现 `View.OnAttachStateChangeListener` 接口,重写 `onViewAttachedToWindow()` 和 `onViewDetachedFromWindow()` 方法,用于判断当前视图是否可见。如果当前视图已经附加到窗口上,则表示当前视图可见;如果当前视图已经从窗口上分离,则表示当前视图不可见。
```
view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View view) {
// 当前视图可见
}
@Override
public void onViewDetachedFromWindow(View view) {
// 当前视图不可见
}
});
```
以上两种方法都可以监听视图的可见性,具体使用哪种方法取决于你的需求和场景。需要注意的是,这些监听器只会在视图的可见性状态发生变化时才会触发,而不是在视图每次绘制时都会触发。