ah_fragmentBottoma = (TextView)findViewById(R.id.ah_fragmentBottoma);
ah_fragmentBottoma.post(new Runnable() {
@Override
public void run() {
int width = ah_fragmentBottoma.getMeasuredWidth();
int height = ah_fragmentBottoma.getMeasuredHeight();
width = ah_fragmentBottoma.getWidth();
height = ah_fragmentBottoma.getHeight();
Log.e("test", "post width=" + width);
Log.e("test", "post height=" + height);
}
});
ViewTreeObserver observer = ah_fragmentBottoma.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ah_fragmentBottoma.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int width = ah_fragmentBottoma.getMeasuredWidth();
int height = ah_fragmentBottoma.getMeasuredHeight();
width = ah_fragmentBottoma.getWidth();
height = ah_fragmentBottoma.getHeight();
Log.e("test", "addOnGlobalLayoutListener width=" + width);
Log.e("test", "addOnGlobalLayoutListener height=" + height);
}
});
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = ah_fragmentBottoma.getMeasuredHeight();
int width = ah_fragmentBottoma.getMeasuredWidth();
width = ah_fragmentBottoma.getWidth();
height = ah_fragmentBottoma.getHeight();
Log.e("test", "addOnPreDrawListener width=" + width);
Log.e("test", "addOnPreDrawListener height=" + height);
return true;
}
});
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
int width = ah_fragmentBottoma.getMeasuredWidth();
int height = ah_fragmentBottoma.getMeasuredHeight();
width = ah_fragmentBottoma.getWidth();
height = ah_fragmentBottoma.getHeight();
Log.e("test", "onWindowFocusChanged width=" + width);
Log.e("test", "onWindowFocusChanged height=" + height);
}
}
结果:
addOnGlobalLayoutListener width=132
addOnGlobalLayoutListener height=88
addOnPreDrawListener width=132
addOnPreDrawListener height=88
post width=132
post height=88
onWindowFocusChanged width=132
onWindowFocusChanged height=88
addOnPreDrawListener width=132
addOnPreDrawListener height=88
addOnPreDrawListener width=132
addOnPreDrawListener height=88
其中addOnPreDrawListener会调很多次,需要留意。如果有特别的问题再记录。同时后面看源码会分析这个地方。
分析的不错的链接:
网友评论