2012年6月27日 星期三

get android status (notification) bar height & system resolution

Android最麻煩的其中之一, 就是解析度的種類有夠多, 所以在寫程式時有時必須要依解析度去作動態換算.
這次需要的是取得status bar的高度, 在網路上找了好一陣子才找到...... 很不會寫程式(嘆)

範例如下
View rootView  = getRootView();  
Rect r = new Rect();  
rootView.getWindowVisibleDisplayFrame(r);  
statusBarHeight = r.top; 
要注意的只有一個小地方, 請依device不同來決定要取r的哪個部位. 手機是取top. 平板可能會取bottom, 但我沒試過.

順便附上取得系統resolution的方法
Display localDisplay = getSystemService("window").getDefaultDisplay();
DisplayMetrics localDisplayMetrics = new DisplayMetrics();
localDisplay.getMetrics(localDisplayMetrics);
float scale = localDisplayMetrics.density;
Log.d("Resolution", localDisplayMetrics.widthPixels + " " + localDisplayMetrics.heightPixels + " " + scale);
要注意的還是只有一個小地方, landscape的width/height與portrait的width/height是相反的, EX:landspace為 800/480, portrait時會變成 480/800, 取值計算時要注意.

沒有留言: