天天看點

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

出發點:Android系統本身是支援多種分辨率的,如圖1所示,一般情況下要适配不同尺寸的裝置隻需要做兩件事,1. 根據4種不同的螢幕尺寸提供4套UI布局(layout)。 2. 根據4種不同螢幕像素密度(機關英寸的像素值)提供4套界面元素的圖檔。

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

圖1 Android螢幕分類

而實際應用合并過程中存在的問題是:同一個應用對應的手機和平闆界面設計是完全不一樣的,如何根據螢幕的大小來決定提供哪一套界面是一件很頭疼的事情。

目的:根據分辨率來區分手機和平闆的不合理性在于:

1. 分辨率高但是實體螢幕尺寸小的裝置(比如三星5.3寸的galaxy NOTE1280*800 手機)采用平闆布局後的可點選界面元素太小,很難點中。

2. 分辨率小但是實體螢幕尺寸大的裝置采用手機布局後界面元素過大,顯得整體UI粗糙。

是以目前通過螢幕尺寸來區分手機和平闆相對合理,主要目的是驗證如下調整的可行性

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

分辨率與螢幕尺寸的換算:首先要了解Android分辨率相關基礎概念

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

手機像素密度(density)實際上是以機關英寸160個像素作為參考标準,主要密度有0.75,1,1.5和2,當密度為2時就表示1英寸有320個像素,Android中通過代碼可以擷取到螢幕的像素值和密度,根據這些值就可以反向算出螢幕的實體尺寸

螢幕尺寸=螢幕對角線的像素值/(密度*160)= 

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

  / (密度*160) 

實踐過程:

由于Android裝置中擷取的密度density本身是個約等于的數值,比如計算出密度的準确值density=1.575,實際在代碼中讀到的density=1.5, 需要實作一個簡單的計算螢幕尺寸的應用在不同裝置上驗證實體尺寸準确程度,具體代碼如下:

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

實踐結果:幾個不同裝置(手機和平闆)的測試結果如下:

Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性
Android平台根據分辨率計算螢幕尺寸,基于實體尺寸來驗證手機和平闆應用合并的可行性

結論:手機上根據分辨率反向算出的螢幕實體尺寸比較準确,平闆則誤差較大,但是結果基本上是大于6寸,以上根據實體尺寸區分手機和平闆的方法目前來看是可行的。

繼續閱讀