Andorid获取状态栏高度
生活随笔
收集整理的這篇文章主要介紹了
Andorid获取状态栏高度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在應用開發中,有時我們需要用代碼計算布局的高度,可能需要減去狀態欄(status bar)的高度。狀態欄高度定義在Android系統尺寸資源中status_bar_height,但這并不是公開可直接使用的,例如像通常使用系統資源那樣android.R.dimen.status_bar_height。但是系統給我們提供了一個Resource類,通過這個類我們可以獲取資源文件。下邊是在Activity中獲取的方法
?
?| 1 2 3 4 5 6 7 8 | public int getStatusBarHeight() { ??int result = 0; ??int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); ??if (resourceId > 0) { ??????result = getResources().getDimensionPixelSize(resourceId); ??} ??return result; } |
?
?
?
這里還有另外一種方法,大家都知道Android的所有資源都會有惟一標識在R類中作為引用。我們也可以通過反射獲取R類的實例域,代碼如下
?
?
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** ?* 獲得狀態欄的高度 ?* ?* @param context ?* @return ?*/ public static int getStatusHeight(Context context) { ????int statusHeight = -1; ????try { ????????Class<!--?--> clazz = Class.forName("com.android.internal.R$dimen"); ????????Object object = clazz.newInstance(); ????????int height = Integer.parseInt(clazz.getField("status_bar_height") ????????????????.get(object).toString()); ????????statusHeight = context.getResources().getDimensionPixelSize(height); ????} catch (Exception e) { ????????e.printStackTrace(); ????} ????return statusHeight; } |
?
我們可以看到得到的結果是一樣的。當然,獲取狀態欄的高度方法是不是就只有以上兩種呢,當然不是,下邊再介紹一種獲取狀態欄高度的方法,不過不推薦使用,因為這個方法依賴于WMS(窗口管理服務的回調)。
?
?| 1 2 3 4 | Rect rectangle= new Rect(); Window window= getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectangle); int statusBarHeight= rectangle.top; |
?
?
結伴旅游,一個免費的交友網站:www.jieberu.com
推推族,免費得門票,游景區:www.tuituizu.com
轉載于:https://www.cnblogs.com/rabbit-bunny/p/4265291.html
總結
以上是生活随笔為你收集整理的Andorid获取状态栏高度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【dp 贪心】bzoj4391: [U
- 下一篇: iOS UIWebView URL拦截