Android View onSizeChanged 后执行业务代码的几种方法
在 Android 中,可以使用以下几种方法来保证在 View 的 onSizeChanged 之后执行业务代码:
- 在 View 的 onSizeChanged 方法中直接调用业务代码:在 View 的 onSizeChanged 方法内部直接调用需要执行的业务代码,这样可以确保业务代码在 View 的大小改变后立即执行。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// 执行业务代码
doBusiness();
}
- 使用 post 方法延迟执行:在 View 的 onSizeChanged 方法中使用 post 方法将业务代码添加到 View 的消息队列中,以确保在 onSizeChanged 之后被执行。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// 使用 post 方法延迟执行业务代码
post(new Runnable() {
@Override
public void run() {
// 执行业务代码
doBusiness();
}
});
}
- 使用 ViewTreeObserver 监听 View 的布局变化:通过 ViewTreeObserver 可以监听 View 的布局变化事件,可以在 View 的 onSizeChanged 方法中添加一个监听器,在监听器中执行业务代码。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// 添加 ViewTreeObserver 监听器
getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// 执行业务代码
doBusiness();
// 移除监听器
getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
以上是几种常用的方法,根据具体的需求和场景选择适合的方式来保证在 View 的 onSizeChanged 之后执行业务代码。

原文地址: http://www.cveoy.top/t/topic/bk5I 著作权归作者所有。请勿转载和采集!