获取控件的宽度和高度的像素值的四种方法
/***
* 方法一
* @param view
*/
public void getWidthAndHeight_1(View view) {
int w = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
bt.measure(w, h);
int width = bt.getMeasuredWidth();
int height = bt.getMeasuredHeight();
System.out.println("宽1==" + width + ",高1==" + height);
}
/***
* 方法二
* @param view
*/
public void getWidthAndHeight_2(View view) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1000);
System.out.println("宽2==" + bt.getWidth() + ",高2=="
+ bt.getHeight());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
/***
* 方法三
* @param view
*/
public void getWidthAndHeight_3(final View view) {
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = view.getMeasuredHeight();
int width = view.getMeasuredWidth();
System.out.println("宽3==" + width + ",高3==" + height);
return true;
}
});
}
/***
* 方法四
* @param view
*/
public void getWidthAndHeight_4(final View view) {
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
System.out.println("宽4==" + view.getWidth() + ",高4=="
+ view.getHeight());
}
});
}