Android 狀態列,標題欄,螢幕高度獲取總結

2021-07-09 23:26:11 字數 2626 閱讀 8694

工作這麼久了,接觸到的東西也越來越多,有時候會發現 乙個誤區,很多東西記住了,一段時間不用就會忘記,繼續使用的時候又需要查詢相關的資料。後來發現很多技術性的東西不能只靠記憶,記憶的東西太久不用也會生疏,會忘記,特別是關於一些技術性的東西,忘記得更快。所以平時更應該學會一種解決問題的方法,在工作中鍛鍊這種能力,並且多總結,我想這就是我工作這麼久沒有這樣做,才進入了誤區。

在之前的專案中曾經要獲取狀態列和標題欄的高度,在此記錄一下,作為總結方便以後查閱

1. android應用顯示區域簡單介紹

狀態列:紅色區域

標題欄:黃色區域

內容顯示區域:綠色區域

狀態列

狀態列主要用來顯示一些系統圖示,應用的通知圖示和系統時間。

statusbar

模組就是控制和管理著這些圖示,以及通知資訊的顯示和一些系統開關的。

狀態列的通知功能(包括時間,通知,系統狀態等)

狀態列的日期顯示

標題欄

顯示應用的標題資訊

標題欄可以不顯示,不顯示標題欄的方法:

1. 在activity的oncreate()函式中設定,

requestwindowfeature(window.feature_no_title); // 去掉標題欄

必須在setcontentview(r.layout...)之前設定,否則會出錯。

2.在androidmanifest.xml檔案設定,在需要配置不顯示標題欄的具體activity中設定:

android:theme="@android:style/theme.notitlebar">
2. 獲取螢幕的寬和高

這裡有兩種方法可以獲取

1. 使用display類的getsize函式該方法返回螢幕的矩形大小,以畫素為單位。display提供關於螢幕尺寸和解析度的資訊,display物件可以使用getdefaultdisplay函式獲取,該方法返回在windowmanager例項上視窗的顯示引數。

point pt1 = new point();

windowmanager wm = mainactivity.this.getwindowmanager();

display dp = wm.getdefaultdisplay();

dp.getsize(pt1);

tvscreensize1.settext("螢幕寬高:" + pt1.x +" * " + pt1.y);

2.

使用getmetrics,該方法傳入displaymetrics物件,用來保描述此螢幕尺寸和解析度的資訊。

windowmanager wm = mainactivity.this.getwindowmanager();

displaymetrics dm = newdisplaymetrics();

// 獲取螢幕資訊

wm.getdefaultdisplay().getmetrics(dm);

tvscreensize2.settext("螢幕寬高:" + dm.widthpixels +" * " + dm.heightpixels);

3. 獲取應用程式顯示區域

應用程式通過函式getwindowvisibledisplayframe()來獲取,它接收乙個rect型別的引數,用來儲存獲取的區域資訊。getwindowvisibledisplayframe()是view類方法,該view的具體例項可以通過getwindow().getdecorview()獲取到,decorview是window中的最頂層view,在這裡我理解為可見的所有區域。**如下:

rect rt1 = new rect();

view view = mainactivity.this.getwindow().getdecorview();

view.getwindowvisibledisplayframe(rt1);

4. 獲取狀態列高度

狀態列的高度等於螢幕高度和應用顯示區域的差值,**如下:

intstatusheight = rt1.top;

tvstatusheight.settext("狀態列高度:" + statusheight);

6. 標題欄高度

inttitleheight = view.gettop() - statusheight;

tvtitleheight.settext("標題欄高度:" + titleheight);

完整測試**:

public class mainactivity extends activity 

@suppresslint("newapi")

@override

public void onwindowfocuschanged(boolean hasfocus)

}

Android去掉視窗標題欄 狀態列

android手機的最頂部為狀態列,狀態列下面是標題欄。1 去掉標題欄 a 在 中實現 一定要寫在 setcontentview 前面 requestwindowfeature window.feature no title b 在androidmanifest.xml中實現 註冊activity時...

android 獲取狀態列高度, 獲取標題欄高度

獲取狀態列高度 注 該方法在oncreate中獲取值為0 param activity return public static int statusbarheight activity activity 獲取狀態列高度 注 該方法在oncreate中獲取值為0 param resources re...

狀態列高度和標題欄高度

參考於 測試 得到狀態列的高度statusheight rect frame new rect getwindow getdecorview getwindowvisibledisplayframe frame int statusheight frame.top 得到標題欄的高度,為程式主題的to...