Android 系統(83) 螢幕尺寸

2021-08-20 11:57:23 字數 2547 閱讀 6242

隨著android廠商對系統的不斷定製,android出現越來越多不同尺寸的手機,由於尺寸和解析度等不同,從而導致android的適配成為乙個老大難的問題,今天我們就來聊聊android中的螢幕尺寸。

我們先了解一下幾個重要的概念:

什麼是螢幕尺寸、螢幕解析度、螢幕畫素密度? 

什麼是dp、dip、dpi、sp、px?他們之間的關係是什麼? 

什麼是mdpi、hdpi、xdpi、xxdpi?如何計算和區分?

螢幕尺寸指螢幕的對角線的長度,單位是英吋,1英吋=2.54厘公尺,

比如常見的螢幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。

螢幕解析度是指在橫縱向上的畫素點數,單位是px,1px=1個畫素點。一般以縱向畫素*橫向畫素,如1960*1080。

螢幕畫素密度是指每英吋上的畫素點數,單位是dpi,即「dot per inch」的縮寫。螢幕畫素密度與螢幕尺寸和螢幕解析度有關,在單一變化條件下,螢幕尺寸越小、解析度越高,畫素密度越大,反之越小。

(1)px我們應該是比較熟悉的,前面的解析度就是用的畫素為單位,大多數情況下,比如ui設計、android原生api都會以px作為統一的計量單位,像是獲取螢幕寬高等。

(2)dip和dp是乙個意思,都是density independent pixels的縮寫,即密度無關畫素,上面我們說過,dpi是螢幕畫素密度,假如一英吋裡面有160個畫素,這個螢幕的畫素密度就是160dpi,那麼在這種情況下,dp和px如何換算呢?在android中,規定以160dpi為基準(320*480),1dip=1px,如果密度是320dpi,則1dip=2px,以此類推,關係式:px = dp * (dpi / 160)。

假如同樣都是畫一條320px的線,在480*800解析度手機上顯示為2/3螢幕寬度,在320*480的手機上則佔滿了全屏,如果使用dp為單位,在這兩種解析度下,160dp都顯示為螢幕一半的長度。這也是為什麼在android開發中,寫布局的時候要盡量使用dp而不是px的原因。

(3)而sp,即scale-independent pixels,與dp類似,但是可以根據文字大小首選項進行放縮,是設定字型大小的御用單位。

我們先來看兩張不同dpi對應的大致解析度。

其中: 

ldpi:mdpi:hdpi:xhdpi:xxhdpi:***dpi = 0.75:1:1.5:2:3:4 = 3:4:6:8:12:16

這個比值乘以12就得到對應螢幕密度手機桌面icon圖示大小。

先看兩個計算公式: 

(1)dpi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英吋數 

(2)px = dp * (dpi / 160)

在專案開發過程中,遇到螢幕很大的手機,結果顯示的圖示卻很小,和預期不一致,例如華為機型mt1-u06。 

原因是:真機螢幕的dpi會取和谷歌標準最相近的標準dpi,然後density按照最相近的dpi來定。

部分機型螢幕尺寸、解析度計算:

(1)一加a1001 ,主屏尺寸:5.5英吋,1920×1080畫素,測試為xxdpi:

dpi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英吋數 = √(1920² + 1080²) / 5.5 =√ 3686400 + 1166400 /5.5 = √ 4852800 /5.5 = 2202.9 /5.5 =440.6 

density = dpi/160 = 440.6/160 = 2.75 

就近原則,對應dpi為xxdpi,與測試結果一致。

(2)nexus 5,螢幕尺寸:4.95英吋,解析度是1920×1080畫素(fhd),測試為xxdpi :

dpi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英吋數 =2202.9 /4.95 =445 

density = dpi/160 = 445/160 = 2.78 

同理,就近原則,對應dpi為xxdpi,與測試結果一致。

(3)華為mt1-u06,螢幕:6.1英吋(機身尺寸:64.8*129*7.69mm),畫素1280×720px,對應hdpi:

dpi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英吋數 = √(1280² + 720²) / 6.1 =√ 1638400 + 518400 /6.1 = √ 2156800 /6.1 = 1468.6 /6.1 =240.75 

density = dpi/160 = 240.75 /160 = 1.5 

這個數值,剛剛好是hdpi。

(4)三星galaxy s4 ,主屏:5英吋,1920x1080畫素,xxdpi:

dpi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英吋數 =2202.9 /5 =440.6 

density = dpi/160 = 440.6/160 = 2.75 

同理,就近原則,對應dpi為xxdpi,與測試結果一致。

這就說明了之前為什麼螢幕大,但是圖示很小的情況了。

Android各種螢幕尺寸

下文 qvga即 quarter vga 顧名思義即vga的四分之一尺寸,亦即在液晶螢幕 lcd 上輸出的解析度是240 320畫素。qvga支援螢幕旋轉,可以開發出相應的程 序,以顯示旋轉90 180 270 螢幕位置。由handera公司發布。多用於手持 移動裝置。需要說明的是有些 把qvga螢...

Android各種螢幕尺寸

下文 qvga即 quarter vga 顧名思義即vga的四分之一尺寸,亦即在液晶螢幕 lcd 上輸出的解析度是240 320畫素。qvga支援螢幕旋轉,可以開發出相應的程 序,以顯示旋轉90 180 270 螢幕位置。由handera公司發布。多用於手持 移動裝置。需要說明的是有些 把qvga螢...

Android 修改螢幕尺寸

一些時候我們做的軟體對螢幕尺寸有要求的,如下修改,就可以得到對應的螢幕尺寸 a rk3368h device rockchip rk3368 hra project sn22 2g lcm panel c b rk3368h device rockchip rk3368 hra project sn...