日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andorid获取状态栏高度

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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获取状态栏高度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。