詳解px,dp,pt,sp,ppi,dpi及屏幕適配

2021-02-13 產品汪的成長路

本文結構如下:

px:

像素,構成圖片的最小單位,也是設計的最小單位;


像素沒有固定的物理長度,例如iPhone3和iphone4的物理尺寸完全一樣,但是iPhone3的解析度為480*320px,而iphone4的解析度為960*640px。

              

英寸:

固定的物理長度,1英寸=25.4毫米。

 

dpi:

屏幕點密度,我們可以將屏幕理解為是由一個又一個點組成的,dpi就是每英寸(長度)所包含點的數目;

dpi我們用的不多,只需了解即可。

 

ppi:

屏幕像素密度,即每英寸(長度)所包含的像素點數,該值越高,則屏幕越細膩;ppi可以用以下公式計算:

 

             


這個公式其實就是運用勾股定理算出手機對角線上有多少像素點,再除以手機對角線的長度,從而得到每英寸長度上所包含的像素點數。


我們用iphone6進行舉例:


根據蘋果官方數據,iphone6屏幕尺寸為4.7英寸,解析度為750*1334,PPI為326;


根據上計算公式,將解析度(px),屏幕尺寸(英寸)帶入數據得:

      

pt:

有兩種,第一種是來自於印刷行業,它是絕對長度單位,1pt=1/72英寸,約等於0.35毫米,在Photoshop,word中用於對文字大小進行描述,中文翻譯為「磅」。


另一種就是作為IOS開發中的最小開發長度單位,1pt表示屏幕像素點密度為163ppi時,1px的長度;因此pt也有自己固定的物理長度,1pt=1/163 英寸,約等於 0.156毫米。


dp:

安卓開發中的最小長度單位,1dp表示在屏幕像素點密度為160ppi時1px長度。


sp:

安卓的字體單位,和dp類似,表示當屏幕像素密度為160ppi,且字體大小為100%時,1sp=1px。


開發中為什麼用pt,dp而不用px?


既然有px,為什麼安卓和IOS要自己創建一個單位呢?


前面說過,px沒有固定的物理長度,如果用px作為設計單位,那麼在屏幕像素密度(ppi)不同的情況下,圖片顯示的大小是不一樣的。


以IOS手機屏為例,以下是兩塊物理尺寸相同的屏幕,都由10個點(pt)組成,如果我們用像素(px)為單位,那麼同樣為8*8px的圖,在PPI不同的情況下,在兩塊屏幕上的展示情況如下:



那麼問題來了,設計師出圖的時候,仍然以px為單位,那麼我們該如何保證圖片大小一樣呢?

1倍圖,2倍圖,3倍圖:

我們不要忘了,設計師在出圖的時候,會輸出1倍圖,2倍圖,3倍圖;這裡的1倍,2倍,3倍就是指屏幕中一個點(pt)中有1個像素,2個像素或3個像素。

接著上圖的例子,我們在1pt=1px的時候用1倍圖,在1pt=2px的時候用兩倍圖,這樣,在屏幕上顯示圖片的大小就一致了:

我們該如何判定什麼時候用1倍圖,什麼時候用2倍圖呢?


IOS規定屏幕ppi為163時,1pt=1px,此時用1倍圖,我們只需要看IOS手機屏幕的ppi和163的比值就行了(ppi的計算公式上面有)

同樣的,安卓規定屏幕ppi為160時,1pt=1px,我們只需要看屏幕ppi和160的比值即可,設計師一般會根據其手機像素密度,切5套圖(安卓品牌過多,這裡不舉出具體型號):

適配的原因

適配是為了讓同一個界面在不同尺寸、不同解析度的設備上具備相同的顯示效。


前文說了,設計師在出圖的時候,會根據屏幕ppi不同,已經輸出了1倍/2倍/3倍圖,為什麼還需要適配呢?

我們以iphone5和iphone6舉例,iphone5和iphone6的ppi一樣,也就是說iphone5和iphone6屏幕上一個點都對應2個像素,而這兩種型號也都使用兩倍圖,因此一個圖片在兩塊手機屏幕上展示出的物理大小也是一樣的;但是iphone5和iphone6的屏幕的物理尺寸不同:

iphone5的物理尺寸是4.0寸,iphone6的尺寸為4.7寸,因此還需要進行適配,以此來對屏幕中圖像進行調整。

適配原則

適配的原則其實很簡單,就一句話:所有要適配的圖放在同一倍率下,組件的尺寸和高度(多數情況)不變,改變組件的間距即可。


剛看到這句話可能會不太明白,我分情況舉例來說明:

1.改變間距

這種情況多適用於組件類,比如頂部搜索框,底部菜單欄等;底部菜單內的icon尺寸保持不變,改變icon的間距即可。

2.等比縮放

這種情況多適用於圖片,宮格類的元素,根據屏幕尺寸比例,進行等比縮放即可。

全面屏適配

為了追求更高的屏佔比,蘋果自iphoneX起陸陸續續推出了全面屏,如果我們不進行適配,可能就會出現按鈕被iphoneX底部的Home Indicator 遮擋的情況:

全面屏的適配也簡單,全面屏和普通屏的區別在於全面屏頂部有劉海,底部有Home Indicator,頂部劉海區高度為44pt,底部Home Indicator高度為34pt,我們只需要在頂部,底部分別預留出44pt、4pt,這樣就可以保證頁面的內容不會被遮擋。

以上就是關於適配的原則和名詞解釋,參考書籍:《爭論點》,若有不正確的地方,歡迎指正,共同進步。

——————————END——————————

往期文章

如何對打雜說:「NO」

需求分析與需求優先級排列模型

   產品經理的自我修養(項目管理)

   產品經理的自我修養(用戶訪談)

如果有用,幫忙點個「再看」哦~

相關焦點

  • px,ppi;dot,dpi;sp,dp;pt
    我們很多時候遇到px,ppi;dot,dpi;sp,dp;pt,這些時候,經常一臉懵逼,聽課的時候也感覺是上了一堂數學課,各種換算啊理解,怕自己不會是個傻子吧
  • 網際網路小白也能看懂的APP適配及基礎概念
    ,等於1/72英寸,iOS開發長度單位;dp:density-independent pixel,安卓開發長度單位,獨立密度像素,與dpi無關,1dp表示在屏幕像素密度為160ppi時1px的長度;(補充了解:sp:scale-independent pixel,安卓開發字體大小單位)3.硬體系統相關概念ppi:pixel per inch,像素密度
  • Android屏幕適配之dp(最直觀的解讀)
    Android屏幕適配由來已久,關鍵在於屏幕尺寸與屏幕解析度的變化巨大。在成千上百種機型面前,px單位已難以適應。第一個問題:同樣尺寸但是不同解析度的屏幕該如何適配?dp是什麼?px:像素單位,1px代表1個像素dpi:像素密度,單位英寸上的像素數量,公式是dpi=屏幕對角線像素總數px/屏幕對角線長度indensity:屏幕密度,規定以160dpi的屏幕其屏幕密度為1,反過來說就是屏幕密度為1的屏幕上1in
  • 行動裝置適配基礎知識速成
    這裡面還不包括安卓設備各種奇葩的屏幕解析度,還有什麼dpi、ppi、pt、dp、sp等等各種單位,以及複雜的計算公式,對於剛接觸移動端設計的設計師來說,早就被搞的暈頭轉向。而實際上看似複雜的東西當你掌握了規律以後,你會發現原來是這麼的簡單。
  • 移動端適配(一)設備獨立像素1px問題,前端需要知道
    絕對長度單位:pt;pt point,點,印刷行業常用單位,等於1/72英寸。相對長度單位:px、em、rem、vw、vh;px pixel指一張圖片中最小的點。plus1080*1920iphoneX1125*2436屏幕像素密度(dpi或ppi): 屏幕上每英寸可以顯示的像素點的數量。
  • 那些值得你去細細研究的Drawable適配(上)
    其實在Android中,將屏幕密度為160dpi的中密度設備屏幕作為基準屏幕,在這個屏幕中,1dp=1px。其他屏幕密度的設備按照比例換算,具體如下表:由上表不難計算1dp在hdpi設備下等於1.5px,同樣的在xxhdpi設備下1dp=3px。這裡我們從dp到px解釋了Android中不同屏幕密度之間的像素比例關係。
  • Android解析度適配寶典
    3.屏幕密度:表示屏幕每英寸有多少個像素。        4.單位:        px:像素(設計師都知道像素是什麼)。        dp:Android開發中用於描述尺寸和間距。        sp:和dp一樣,只是用於描述字號和行距。
  • 一種粗暴快速的Android全屏幕適配方案
    面對市面上五花八門的屏幕大小與解析度,Android基於dp與res目錄名稱來適配的方案已無法滿足一次編寫全屏幕適配的需求,為了達到最優的視覺效果,開發過程中總是需要花費較多資源進行適配。也有開發者給出了一些自己的解決方案。首先來分析一下一些常見的解決方案的現狀:1.官方適配方案
  • 像素,解析度和適配
    其實這裡的英寸是指屏幕對角線的長度,英寸實際上是長度單位。解析度可以分為兩種,ppi和dpi。ppi:每英寸(長度)所包含的像素點數目。dpi:每英寸(長度)所包含點的數目。對於dpi,我覺得只要了解就可以了,ppi才是比較重要的。
  • 屏幕單位 密度 解析度區分
    、橫方向像素個數Milestone是854*480DPI(dot per inch)每英寸像素數,如120dpi,160dpi等,假設QVGA(320*240)解析度的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160可以反映屏幕的清晰度,用於縮放UI的Density(密度)
  • 出於好奇而對iPhone 6+ 1920X1080PX解析度的分析
    對於iphone 6+ 的屏幕,這次蘋果不得不做出妥協,但坦白說這步棋走得很聰明。蘋果決定在它迄今為止最大的iPone上採用1242px×2208px的解析度。這樣一個屏幕尺寸足夠展現比iPhone 5S 和 iphone6 都豐富的界面內容。然而實際上,它僅僅體現在軟體方面。硬體方面,蘋果只能使用低解析度1080p的面板來顯示成像。
  • 說說DPI與PPI的那點事
    簡而言之,它能定義獨立於設備的像素比的大小,這會包含在不同角色(如設計師和工程師)之間的討論規則中。繼續說前面「Jim」按鈕的例子。 Jim在標準的非Retina屏幕上寬度為44px,在Retina屏幕上是88px。從技術上給Jim添加20px的padding,在Retina上 padding是40px。
  • 關於移動端適配,你必須要知道的
    iOS的尺寸單位為 pt, Android的尺寸單位為 dp, ReactNative中沒有指定明確的單位,它們其實都是設備獨立像素 dp。在使用 ReactNative開發 App時, UI給我們的原型圖一般是基於 iphone6的像素給定的。