fromwww.lephone.net
下面先引用從網路上摘抄過來的一段話,來解釋一下android上常用的乙個長度單位——dip。
我們常見的長度單位有:px, dip, sp
1. px (pixels)畫素:這個大家用得比較多, 一般我們hvga代表320x480畫素。
2. dip或dp (device independent pixels)裝置獨立畫素:這個和裝置硬體有關,一般我們為了支援wvga、hvga和qvga cwj推薦使用這個,不依賴畫素。
3. sp (scaled pixels — best for text size)放大畫素: 主要處理字型的大小。
下面的不經常用到:
4. in (inches)英吋
5. mm (millimeters)公釐
6. pt (points)點
下面言歸正傳,來講一下如何計算android平台下statusbar的高度。
在預設情況下,statusbar的高度是25dip,這個值是不會變的,不管你的螢幕是240*320的還是600*800的或者還是其它解析度的,statusbar的高度都是25dip。
也許有的同學會說,怎麼可能嘛,值600*800的裝置上statusbar的高度明顯要高很多嘛!
不錯,值600*800這樣的裝置上,statusbar的高度看起來確實比240*320的螢幕上高很多,但是它的的確確也是25dip,只不過此時它並不是25px。
在240*320解析度的裝置上,25dip,在裝置上顯示的時候,它的長度或者說高度就是25個畫素,也就是25px;但是在600*800的裝置上,這25dip就不再是25px了。
displaymetrics metrics = getresources().getdisplaymetrics();
int status_bar_height = (int) math.ceil( 25 * metrics.density);
實際上,我們要做的就是把這個25dip的高度轉換成px即可,因為我們在**裡需要的高度都是以px為單位的。
以480*800解析度的螢幕為例:上面的語句中得到的 metrics.density 值是1.5,用這個1.5乘以statusbar的高度25,最後在做乙個取整,得到的高度就是38,這個高度也就是在480*800的解析度下,statusbar的高度。
這裡需要特別說明一下,在取整的運算中,我用的是math.ceil(),但實際是應該按照四捨五入法取整,還是進一法取整,還是什麼其它規則,我沒有驗證,有需要的同學可以自己驗證一下。
Android獲取StatusBar高度的原理
獲取statusbar工具類 常見的獲取狀態列高度的工具類如下 public static int getstatusbarheightcompat context context if result 0 return result 這裡的status bar height是 來的呢?statusb...
如何使用StatusBar控制項
我們來看下 定義 public class statusbar system.windows.forms.control system.windows.forms 的成員 摘要 表示 windows 狀態列控制項。從工具欄中拽乙個statusbar 控制項在它的屬性中 panels 中 新增3項 並...
獲取其他程序中StatusBar的文字
說明 window2000 delphi6除錯通過 設計 zswang 支援 wjhu111 21 日期 2005 02 22 uses mctrl function getstatusbartext mhandle thandle string var vbuffer array 0.1000 o...