android view可见性监听
时间: 2023-06-30 21:09:35 浏览: 363
要监听 Android View 的可见性,可以使用 View 的 `OnVisibilityChangedListener` 接口或 `ViewTreeObserver.OnGlobalLayoutListener` 接口。这两种方式都可以监听 View 的可见性变化,不同的是:
- `OnVisibilityChangedListener` 接口会在 View 的可见性状态发生变化时被调用,而且可以直接获取到可见性状态。
- `OnGlobalLayoutListener` 接口会在 View 的布局参数发生变化时被调用,也就是说,当 View 的宽高、位置等发生变化时也会触发回调。
下面是两种方式的具体实现:
1. 使用 `OnVisibilityChangedListener` 接口:
```java
view.setOnVisibilityChangedListener(new View.OnVisibilityChangedListener() {
@Override
public void onVisibilityChanged(View view, int visibility) {
if (visibility == View.VISIBLE) {
// View 可见
} else {
// View 不可见
}
}
});
```
2. 使用 `OnGlobalLayoutListener` 接口:
```java
ViewTreeObserver observer = view.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (view.getVisibility() == View.VISIBLE) {
// View 可见
} else {
// View 不可见
}
}
});
```
需要注意的是,如果使用 `OnGlobalLayoutListener` 接口,在回调中需要判断 View 的可见性状态,否则可能会多次触发回调。
阅读全文