本文爲轉載文章,感謝原作者的分享,這裏本猿只做記錄。(出處http://www.apkbus.com/android-54624-1-1.html)
出發點:Android系統本身是支持多種分辨率的,如圖1所示,一般情況下要適配不同尺寸的設備只需要做兩件事,1. 根據4種不同的屏幕尺寸提供4套UI佈局(layout)。 2. 根據4種不同屏幕像素密度(單位英寸的像素值)提供4套界面元素的圖片。
圖1 Android屏幕分類
而實際應用合併過程中存在的問題是:同一個應用對應的手機和平板界面設計是完全不一樣的,如何根據屏幕的大小來決定提供哪一套界面是一件很頭疼的事情。
目的:根據分辨率來區分手機和平板的不合理性在於:
1. 分辨率高但是物理屏幕尺寸小的設備(比如三星5.3寸的galaxy NOTE1280*800 手機)採用平板佈局後的可點擊界面元素太小,很難點中。
2. 分辨率小但是物理屏幕尺寸大的設備採用手機佈局後界面元素過大,顯得整體UI粗糙。
所以目前通過屏幕尺寸來區分手機和平板相對合理,主要目的是驗證如下調整的可行性
[tr][td] |
[tr][td]
分辨率與屏幕尺寸的換算:首先要了解Android分辨率相關基礎概念
手機像素密度(density)實際上是以單位英寸160個像素作爲參考標準,主要密度有0.75,1,1.5和2,當密度爲2時就表示1英寸有320個像素,Android中通過代碼可以獲取到屏幕的像素值和密度,根據這些值就可以反向算出屏幕的物理尺寸
[/td][/tr][tr][td]
屏幕尺寸=屏幕對角線的像素值/(密度*160)=
/ (密度*160)實踐過程:
由於Android設備中獲取的密度density本身是個約等於的數值,比如計算出密度的準確值density=1.575,實際在代碼中讀到的density=1.5, 需要實現一個簡單的計算屏幕尺寸的應用在不同設備上驗證物理尺寸準確程度,具體代碼如下:
實踐結果:幾個不同設備(手機和平板)的測試結果如下:
結論:手機上根據分辨率反向算出的屏幕物理尺寸比較準確,平板則誤差較大,但是結果基本上是大於6寸,以上根據物理尺寸區分手機和平板的方法目前來看是可行的。