常用尺寸單位:
px:即像素(pixel)。是屏幕的絕對像素,屏幕有多少個像素就是多少像素。不同的手機設備上,像素的物理大小不一樣。
inch:英寸,1 英寸約等於2.54厘米,用對角線(diagonal)的長度來描述手機屏幕的大小。
ppi:(pixels per inch,每英寸像素),每英寸上的物理像素數數目,即 "像素密度“。ppi越大,顆粒感越弱,顯示效果就越細膩。手機對角線ppi計算公式如下:
拿一台5英寸,分辨率為1920px*1080px的手機來說(1920px就是公式里的縱向,1080px就是公式里的橫向了),計算結果是440.581434。
iOS專有尺寸單位:
pt:(point),邏輯分辨率。注意區分印刷行業的pt(“磅”),詳見下文中Android專有尺寸單位中的pt。
早期的iPhone3GS的屏幕分辨率是320*480(PPI=163),在該設備上 1 point = 1 pixel(Point Per Inch=Pixel Per Inch=PPI)
后來在iPhone4中,同樣大小(3.5 inch)的屏幕采用了Retina顯示技術,橫、縱向方向像素密度都被放大到2倍,像素分辨率提高到(320x2)x(480x2)= 960x640(PPI=326),
顯像分辨率提升至iPhone3GS的4倍(1個Point被渲染成1個2x2的像素矩陣)。
但是對於開發來說,iOS繪制圖形的API依然以point為單位(measured in points)。
1 point對應scale factor個pixel(在iPhone3GS中,縮放因子scale factor=1;在iPhone4~6中,縮放因子scale factor=2;在iPhone6+中,縮放因子scale factor=3)。
手機 | 邏輯分辨率 寬x高(point) | 設備分辨率 寬x高(px) | PPI | Scale Factor | 屏幕尺寸(對角線) | 發布時間 |
iPhone 12 | 390x844 | 1170x2532 | 460 | 3 | 6.06" | 2020-10-13 |
iPhone 11 Pro | 375x812 | 1125x2436 | 458 | 3 | 5.85" | 2019-09-20 |
iPhone 11 | 414x896 | 828x1792 | 326 | 2 | 6.1" | 2019-09-20 |
iPhone X | 375x812 | 1125x2436 | 458 | 3 | 5.85" | 2017-11-03 |
iPhone 8 Plus | 414x736 | 1080x1920 | 401 | 3 | 5.5" | 2017-09-22 |
iPhone 8 | 375x667 | 750x1334 | 326 | 2 | 4.7" | 2017-09-22 |
iPhone 6s Plus | 476x847 | 1242x2208 | 401 | 3 | 5.5" | 2015-09-25 |
iPhone 6s | 375x667 | 750x1334 | 326 | 2 | 4.7" | 2015-09-25 |
iPhone 6 | 375x667 | 750x1334 | 326 | 2 | 4.7" | 2014-09-19 |
iPhone 3GS | 320x480 | 320x480 | 163 | 1 | 3.5" | 2009-06-19 |
iPad 8th gen | 810x1080 | 1620x2160 | 264 | 2 | 10.2" | 2020-09-18 |
iPad mini 2 | 768x1024 | 1536x2048 | 326 | 2 | 7.9" | 2013-11-12 |
iPad 4th gen | 768x1024 | 1536x2048 | 264 | 2 | 9.7" | 2012-11-12 |
iPad mini | 768x1024 | 768x1024 | 163 | 1 | 7.9" | 2012-11-02 |
iPad 2 | 768x1024 | 768x1024 | 132 | 1 | 9.7" | 2011-03-11 |
更多請參考: iOS Resolution
Android專有尺寸單位:
dp(dip):即設備無關像素(device independent pixels),這種尺寸單位在不同設備上的物理大小相同。開發者為UI控件指定以dp為單位的size后,在不同屏幕密度的Android設備上便能夠具有相同的物理尺寸。
sp:獨立比例像素(scale-independent pixel),與dp相似,但它主要用作字體的尺寸單位,與dp的區別是:Android系統支持用戶設定字體大小(基准大小),因而sp的實際大小還會根據用戶設定在原基礎上進行縮放。
推薦使用12sp、14sp、18sp、22sp作為字體設置的大小,不推薦使用奇數和小數,容易造成精度的丟失問題;小於12sp的字體會太小導致用戶看不清。
adb shell settings put system font_scale 1.15 // 將字體改為缺省的1.15倍。 // android 10: 小-0.85, 默認-1.0, 大-1.15, 最大-1.30
pt:即:“磅”,用於印刷行業。通常用來作為字體的尺寸單位,1 pt相當於1/72英寸,約等於0.0353厘米。
dpi:(dots per inch,每英寸點數),即屏幕密度。密度越大,每英寸內容納的點數就越多。很多時候,dpi被稱為ppi
但dpi並不是物理定義的,而是系統文件寫進去的,所以這個值是可以被修改的
想得到實際的ppi,可獲取寬高像素大小和手機實際物理尺寸來計算得出
對於Android手機來說,常見的dpi有如下幾種:
屏幕密度 | 具體定義 | 比例 | 大小 |
ldpi(低密度)【120】 | 每英寸有[0,120]個像素點 | 0.75 | 36x36像素 = 36/120 = 0.3英寸 = 0.762厘米 |
mdpi(中密度)【160】 | 每英寸有[120,160]個像素點 | 1.0【基准】 | 48x48像素 = 48/160 = 0.3英寸 = 0.762厘米 |
hdpi(高密度)【240】 | 每英寸有[160,240]個像素點 | 1.5 | 72x72像素 = 72/240 = 0.3英寸 = 0.762厘米 |
xhdpi(超高密度)【320】 | 每英寸有[240,320]個像素點 | 2.0 | 96x96像素 = 96/320 = 0.3英寸 = 0.762厘米 |
xxhdpi(超超高密度)【480】 | 每英寸有[320,480]個像素點 | 3.0 | 144x144像素 = 144/480 = 0.3英寸 = 0.762厘米 |
xxxhdpi(超超超高密度)【640】 | 每英寸有[480,640]個像素點 | 4.0 | 192x192像素 = 192/640 = 0.3英寸 = 0.762厘米 |
獲取手機dpi:
方法①:adb shell wm density
Physical density: 480 // 小米6設備屏幕密度為480dpi
如果使用命令修改過,那輸出可能是:
Physical density: 480 Override density: 320 // 表明設備的屏幕密度缺省是480dpi,當前被修改為 320dpi
注1:可通過adb shell wm density 320來將當前設備的dpi修改為320
注2:通過adb shell wm density reset將當前設備的dpi還原為缺省設置
方法②:adb shell getprop ro.sf.lcd_density來獲取設備的缺省屏幕密度
通過adb shell wm density將dpi設大后,被認為是高分屏,會使用分辨率更高的圖標,因此圖標會變大
通過adb shell wm density將dpi設小后,被認為是低分屏,會使用分辨率更低的圖標,因此圖標會變小
屏幕分辯率(又稱物理分辨率,Physical Size)
屏幕分辨率為手機屏幕的固有屬性。
方法①:adb shell wm size
Physical size: 1080x1920 // 小米6的屏幕分辨率
寬高比
手機 | 寬 x 高(px) | 寬高比 |
iPhone 12 Pro Max | 1284 x 2778 | 9:19 |
iPhone 11 | 828 x 1792 | 9:19 |
iPhone 8 (8, 7, 6S, 6) | 750 x 1334 | 9:16 |
小米10 | 1080 x 2340 | 9:19 |
小米6 | 1080 x 1920 | 9:16 |
紅米4 | 720 x 1280 | 9:16 |
獲取小米10相關參數
① 通過java代碼獲取
import android.util.DisplayMetrics; DisplayMetrics metrics = getResources().getDisplayMetrics();
注:左邊130為導航欄,右邊90為挖孔攝像頭
② 通過AIDA64工具獲取:
顯示分辯率(顯卡輸出分辨率)
顯卡分辯率的上限為屏幕分辨率。
游戲常常通過降低顯示分辨率來提升渲染速度。例如:渲染場景時輸出720x1280,然后拉伸顯示在1080x1920的手機屏幕上
adb shell wm size 540x960 // 將小米的顯示分辨率設置為540x960
adb shell wm size // 如果被修改過,分辨率如下
Physical size: 1080x1920 Override size: 540x960
adb shell wm size reset // 將小米的顯示分辨率重置為缺省(即:屏幕分辨率)
Android應用圖標
APK包res目錄中包含各種dpi下的圖標資源(里面包括游戲安裝后的App圖標Icon.png)
IOS應用圖標
注:Assets.car文件使用AssetCatalogTinkerer來打開
UE4下Android圖標配置
UE4下iOS圖標配置
參考