iOS、Android 開發(fā)單位換算及 UI 切圖要求

常用單位

在移動端 UI 設計中,經常會用到的單位有 4 種:px、pt、dp 和 sp,很多人分辨不清這幾種單位及其換算關系,以及 iOS 和 Android 的切圖要求,我在這里做下簡單的介紹,希望大家讀完后能有所收獲(如有錯誤,歡迎糾正)。


一、常用單位

1. px (像素)

px 即 pixel,像素點,電子屏幕上組成圖像的最基本單位,在描述屏幕分辨率時也會使用該單位。1px 表示一個像素,例如 iPhone 8 的尺寸為 750px × 1334px,表示在該手機屏幕上,水平方向每行有 750 個像素點,垂直方向每列有 1334 個像素點。

2. pt (磅)

pt 即 point,有兩個含義:一是印刷行業(yè)常用單位,是一個標準長度單位,絕對大小,1pt = 1/72 英寸 = 0.35mm;二是 iOS 開發(fā)用的基本單位,當設計師以 1 倍尺寸進行設計 (375pt × 667pt) 并給出標注稿時,開發(fā)人員無需除以 2 便可直接使用。

3. dp (也稱 dip)

dp 是安卓開發(fā)用的基準單位,在 dpi (屏幕像素密度,即每英寸包含的像素點) 為 160 的屏幕為上,1dp = 1px。為了簡單起見,Android 把屏幕密度分為了 5 種:mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi,下文會詳細介紹其換算關系。

4. sp (可縮放獨立像素)

在安卓系統(tǒng)里,sp 與 dp 類似,不同的是 sp 可以根據用戶的字體大小首選項進行縮放,而 dp 則不會。 盡量使用 dp 作為空間大小單位,sp 作為文字相關大小單位,例如:新聞類和短信類等大篇幅文本,推薦使用 sp 為單位。


二、pt 與 px 換算

iOS 開發(fā)

1. pt = (ppi / dpi) px

在 iOS 開發(fā)中,不同機型的 iPhone 設備需要用到不同倍率的切圖,下表格為各 iPhone 機型顯示屏參數對比:

機型 X 8+/7+/6+ 8/7/6/6s 5/5s 4/4s
屏幕尺寸(inch) 5.8 5.5 4.7 4 3.5
物理尺寸(px) 1125 × 2436 1080 × 1920 750 × 1334 640 × 1136 640 × 960
設計尺寸(px) 1125 × 2436 1242 × 2208 750 × 1334 640 × 1136 640 × 960
開發(fā)尺寸(pt) 375 × 812 414 × 736 375 × 667 320 × 568 320 × 480
ppi 458 401 326 326 326
dpi 163 154 163 163 163
倍率 @3x @3x @2x @2x @2x

這里再簡單了解下兩個概念,ppi 和 dpi。

ppi (iOS):即 pixel per inch,屏幕像素密度,表示每英寸所包含的像素點,該值越高,屏幕越細膩。
dpi (iOS) :開發(fā)像素密度,表示每英寸所包含的開發(fā)像素點。

在 iOS 開發(fā)中,規(guī)定以 ppi = 163,dpi = 163 作為開發(fā)基準,

當 ppi = 163,dpi = 163 時,則 1pt = 1px;
當 ppi = 326,dpi = 163 時,則 1pt = 2px;
當 ppi = 401,dpi = 154 時,則 1pt = 2.6px ≈ 3px。
(為什么 iPhone 8+/7+/6+ 的開發(fā)基準是154?可能要問問蘋果了...)

依此類推,得出換算公式一:

pt = (ppi / dpi) px

若有小數,四舍五入即可。

2. iOS 切圖要求

圖 2-1

在 iOS 開發(fā)中,目前只需要 @2x 和 @3x 兩種切圖,所以導出 2 倍和 3 倍的 png 圖片即可。導出前注意檢查切圖是否存在半像素、毛邊等情況,保證對齊像素,這樣才能有效避免上線后頁面上的 icon 出現虛邊的問題,提高細節(jié)質量。

另外補充一點:從整體開發(fā)尺寸看,iPhone 8 是 375 × 667 pt (@2x),而 iPhone X 是 375 × 812 pt (@3x),同樣的寬度,一個用 @2x 圖,一個用 @3x 圖,iPhone X 表現出了更高的清晰度,如圖 2-1 所示。


三、dp 與 px 換算

Android 開發(fā)

1. dp = (dpi / 160) px

在 Android 開發(fā)中,因為機型參差不齊,需要用屏幕密度來區(qū)分設計。

屏幕密度 mdpi hdpi xhdpi xxhpdi xxxhdpi
代表設計像素 320 × 480 px 480 × 800 px 720 × 1280 px 1080 × 1920 px 1440 × 2256 px
dpi 160 240 320 480 640
基準dpi 160 160 160 160 160
倍率 @1x @1.5x @2x @3x @4x

注意,這里的 dpi (Android) 和上文的 dpi (iOS) 是不同的概念,dpi (iOS) 是開發(fā)像素密度,而 dpi (Android) 即 dot per inch,表示屏幕像素密度,類似 iOS 開發(fā)里的 ppi。

Android 中,規(guī)定以 dpi = 160 為開發(fā)基準,

當 dpi = 160,基準dpi = 160,1dp = 1px;
當 dpi = 240,基準dpi = 160,1dp = 1.5px;
當 dpi = 320,基準dpi = 160,1dp = 2px。

依此類推,得出換算公式二:

dp = (dpi / 160) px

2. Android 切圖要求

圖 3-1

在設計圖標時,對于 5 種主流的屏幕像素密度 (mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi) 應按照 2:3:4:6:8 的比例進行縮放,如圖 3-1 所示。

例如,一個啟動圖標的尺寸為 48 × 48 dp,這表示在 mdpi 的屏幕上其實際尺寸應為 48 × 48 px;在 hdpi 的屏幕上其實際大小是 mdpi 的 1.5 倍 (72 × 72 px);在 xhdpi 的屏幕上其實際大小是 mdpi 的 2 倍 (96 × 96 px),依此類推。

點九圖

在某些況行下,還需要提供一種特殊的切圖:點九圖 (上圖所示)。點九圖是 Android 開發(fā)中用到的一種特殊格式的圖片,文件名以 “.9.png” 結尾。

這種圖片能告訴程序,圖像哪一部分可以被拉升,哪一部分不能被拉升需要保持原有比列。運用點九圖可以保證圖片在不模糊變形的前提下做到自適應,比如對話框背景圖片就會用到點九圖。

--
以上是全部內容,感謝你的閱讀!
End

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容