一、view的宽高
1.
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
mView.measure(w, h);
int height = mView.getMeasuredHeight();
int width = mView.getMeasuredWidth();
Log.i(TAG, "height=" + height + "width=" + width);
2.
mViewTreeObserver = mView.getViewTreeObserver();
mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int height =view.getMeasuredHeight();
int width =view.getMeasuredWidth();
Log.i(TAG, "height=" + height + "width=" + width);
}
});
3.
mViewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
mView.getViewTreeObserver().removeOnPreDrawListener(this);
int height =view.getMeasuredHeight();
int width =view.getMeasuredWidth();
Log.i(TAG, "height=" + height + "width=" + width);
return true;
}
});
二、屏幕的宽高
1.获取屏幕的宽高
DisplayMetrics dm = new DisplayMetrics();
//取得窗口属性
getWindowManager().getDefaultDisplay().getMetrics(dm);
//窗口宽度
int screenWidth = dm.widthPixels;
//窗口高度
int screenHeight = dm.heightPixels;
或
WindowManager manager = getWindowManager();
window_width = manager.getDefaultDisplay().getWidth();
window_height = manager.getDefaultDisplay().getHeight();
2.状态栏快高
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
绘制View本身的内容时,可以调用View.onDraw(Canvas canvas)方法。
绘制View子View的内容时,可以调用dispatchDraw函数。