工作這麼久了,接觸到的東西也越來越多,有時候會發現 乙個誤區,很多東西記住了,一段時間不用就會忘記,繼續使用的時候又需要查詢相關的資料。後來發現很多技術性的東西不能只靠記憶,記憶的東西太久不用也會生疏,會忘記,特別是關於一些技術性的東西,忘記得更快。所以平時更應該學會一種解決問題的方法,在工作中鍛鍊這種能力,並且多總結,我想這就是我工作這麼久沒有這樣做,才進入了誤區。
在之前的專案中曾經要獲取狀態列和標題欄的高度,在此記錄一下,作為總結方便以後查閱
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;6. 標題欄高度tvstatusheight.settext("狀態列高度:" + statusheight);
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...