1.Activity# onWindowFousChanged
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
int height = main_viewpager.getMeasuredHeight();
int width = main_viewpager.getMeasuredWidth();
}
}
多次调用在窗口得到焦点和失去焦点
2.view.post(runnable)
@Override
protected void onStart() {
super.onStart();
main_viewpager.post(new Runnable() {
@Override
public void run() {
int height = main_viewpager.getMeasuredHeight();
int width = main_viewpager.getMeasuredWidth();
}
});
}
3.ViewTreeObserver
@Override
protected void onStart() {
super.onStart();
ViewTreeObserver viewTreeObserver = main_viewpager.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
main_viewpager.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int height = main_viewpager.getMeasuredHeight();
int width = main_viewpager.getMeasuredWidth();
}
});
}
View 树的状态改变,onGlobalLayout 会被调用多次