Android 擷取螢幕高度,標題高度,狀態列高度(執行個體代碼)_Android

來源:互聯網
上載者:User

通過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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.