獲取系統的高度和寬度android
/** * 獲取顯示屏幕的高度 * @return */ private int getScreenHeight() { WindowManager windowManager = mainActivity.getWindowManager(); Display display = windowManager.getDefaultDisplay(); Point point = new Point(); display.getSize(point); int SCREEN_WIDTH = point.x; int SCREEN_HEIGHT = point.y; // 或者 DisplayMetrics dm = new DisplayMetrics(); display.getMetrics(dm); int SCREEN_WIDTH = dm.widthPixels; int SCREEN_HEIGHT = dm.heightPixels; return SCREEN_HEIGHT; } /** * 獲取頂部status bar高度 * @return */ private int getStatusBarHeight() { Resources resources = mContext.getResources(); int resourceId = resources.getIdentifier("status_bar_height", "dimen","android"); int height = resources.getDimensionPixelSize(resourceId); return height; } /** * 獲取底部 navigation bar 高度 * @return */ private int getNavigationBarHeight() { Resources resources = mActivity.getResources(); int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android"); int height = resources.getDimensionPixelSize(resourceId); return height; }
獲取控件的高度和寬度ide
1)安裝佈局監聽器佈局
mView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout(){ mViewHeight = mView.getHeight(); //OnGlobalLayoutListener可能會被屢次觸發,因此註銷掉 mView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } });
2)view的UI線程post
mView.post(new Runnable() { @Override public void run() { mViewHeight = mView.getMeasuredWidth()); } } );
3)重寫Activity的方法this
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); int[] location = new int[2]; mView.getLocationOnScreen(location); mViewHeight = location[1]; }
系統調用順序爲線程
Activity.oncreate()→Activity.onResume()→ →TestImageView.onMeasure()→TestImageView.onLayout()→onGlobalLayoutListener()→ →Activity.onWidnowFocusChanged()→.....→ →TextImageView.onDraw()