Android中关于dip和px以及转换的总结
我們在頁面布局的時候,經常會設置容器的長度,但是到底該使用哪個作為長度的單位而懊惱。在Android中支持的描述大小區域的類型有以下幾種:?px(pixels)——像素:不同的設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。?dip(device independent pixels)——設備獨立像素:這個和設備硬件有關,一般我們為了支持WCGA、HVGA和QVGA推薦使用這個,不依賴于像素。等同于dp。?sp(scaled pixels—best for text size)——主要用于字體顯示best for textsize。由此,根據 google 的建議,TextView 的字號最好使用 sp 做單位,而且查看TextView的源碼可知 Android 默認使用 sp 作為字號單位。?pt(points)——磅:是一個標準的長度單位,1pt=1/72英寸,用于印刷業,非常簡單易用; 在 Android 中,1pt 大概等于2.22sp以上供參考,如果 UI 能夠以sp為單位提供設計是最好的,如果設計中沒有sp的概念,則開發人員也可以通過適當的換算取近似值。?in(inches)——英寸?mm(millimeters)——毫米 過去,程序員通常以像素為單位設計計算機用戶界面。例如,定義一個寬度為300像素的表單字段,列之間的間距為5個像素,圖標大小為16×16像素 等。這樣處理的問題在于,如果在一個每英寸點數(dpi)更高的新顯示器上運行該程序,則用戶界面會顯得很小。在有些情況下,用戶界面可能會小到難以看清內容。?到底px和dip有什么區別呢?
dip != px主要是針對不同設備而言的。在Density是160的設備上,比如用AVDManager創建的默認模擬器,dip和px是一樣的但是如果同樣的代碼,換到不同Density的設備上,比如換到一個Density是240的設備上,dip和px體現出來的大小就不一樣了。px不管在什么樣的設備上都是那樣長,但是dip會根據設備變化;WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;density值表示每英寸有多少個顯示點,與分辨率是兩個概念。 當屏幕density=240時使用hdpi標簽的資源 當屏幕density=160時使用mdpi標簽的資源 當屏幕density=120時使用ldpi標簽的資源。 不加任何標簽的資源是各種分辨率情況下共用的。為了使用戶界面能夠在現在和將來的顯示器類型上正常顯示,建議大家始終使用sp作為文字大小的單位,將dip作為其他元素的單位。當然,也可以考慮使用矢量圖形,而不是用位圖。。 px和dp換算公式為: pixs =dips * (densityDpi/160). dips=(pixs*160)/densityDpi 如何獲得設備的屏幕分辨率和屏幕密度? 例如分辨率為480*800,密度為240的設備,方法如下:
| 1 2 3 4 | DisplayMetrics dm =getResources().getDisplayMetrics(); dm.densityDpi=240 dm.widthPixels=480 dm.heightPixels=800 |
歡醉
總結
以上是生活随笔為你收集整理的Android中关于dip和px以及转换的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zabbix启动无效,无法监听10051
- 下一篇: 计算机网络基础回顾