通過View提供的方法擷取高度方式有兩種:
1, 當前顯示的view中直接擷取當前view高寬
2, 通過Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)擷取系統當前顯示的 view根(是一個framelayout對象),android繪製會將要繪製的view放置在framelayout中繪製。
Display對象擷取螢幕高寬 :
擷取display對象 Activity中getWindowManager().getDefaultDisplay()
getWidth() 返回顯示介面寬度即螢幕寬度
getHeight() 返回顯示介面高度即螢幕高度
由display對象設定DisplayMetrics高寬值,通過DisplayMetrics對象擷取螢幕高寬,有點多此一舉 :
getWidth() 返回顯示介面寬度即螢幕寬度
getHeight() 返回顯示介面高度即螢幕高度
常用一些值計算:
螢幕高寬
Canvas對象 、display對象和DisplayMetrics可擷取螢幕的高寬
狀態列高度
View的getWindowVisibleDisplayFrame(Rect outRect)附值outRect後,outRect.top()即是狀態列高度
標題高度
View的getWindowVisibleDisplayFrame(Rect outRect1)附值outRect後,outRect.height()-view.getheight()即是標題高度。
1.擷取狀態列高度:
decorView是window中的最頂層view,可以從window中擷取到decorView,然後decorView有個getWindowVisibleDisplayFrame方法可以擷取到程式顯示的地區,包括標題列,但不包括狀態列。
於是,我們就可以算出狀態列的高度了。
複製代碼 代碼如下:
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
2.擷取標題列高度:
getWindow().findViewById(Window.ID_ANDROID_CONTENT)這個方法擷取到的view就是程式不包括標題列的部分,然後就可以知道標題列的高度了。
複製代碼 代碼如下:
int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的狀態列的高度
int titleBarHeight = contentTop - statusBarHeight