作者: JeremyWei
原文地址:http://weizhifeng.net/you-should-know-about-dpi.html
像素(Pixel)對(duì)于WEB開發(fā)者來(lái)說(shuō)很是熟悉假夺,在PC互聯(lián)網(wǎng)時(shí)代沒(méi)少與其打交道。進(jìn)入移動(dòng)互聯(lián)網(wǎng)之后帐我,隨著移動(dòng)設(shè)備屏幕的解析度越來(lái)越高,衍生了一些關(guān)于屏幕和像素的一些新概念,比如DPI屈藐,DP竞思,PT程奠,Retina逢艘,4K等等旦袋,本文對(duì)這些概念做一個(gè)簡(jiǎn)單的介紹骤菠。
DPI與PPI
DPI(Dots Per Inch)是印刷行業(yè)中用來(lái)度量空間點(diǎn)密度用的它改,這個(gè)值是打印機(jī)每英寸可以噴的墨汁點(diǎn)數(shù)。計(jì)算機(jī)顯示設(shè)備從打印機(jī)中借鑒了DPI的概念商乎,由于計(jì)算機(jī)顯示設(shè)備中的原子單位不是墨汁點(diǎn)而是像素央拖,所以就創(chuàng)造了PPI(Pixels Per Inch),這個(gè)值是屏幕每英寸的像素?cái)?shù)量鹉戚,即像素密度(Screen density)鲜戒。由于各種原因,目前PPI(主要是iOS)和DPI(比如在Android中)都會(huì)用在計(jì)算機(jī)顯示設(shè)備的參數(shù)描述中抹凳,不過(guò)二者的意思是一樣的遏餐,都是代表像素密度。
高PPI屏幕顯示的元素會(huì)比較精細(xì)(看起來(lái)會(huì)比較杏住)失都,低PPI屏幕顯示的元素相對(duì)來(lái)說(shuō)就比粗糙(看起來(lái)會(huì)比較大),我們通過(guò)一幅圖來(lái)看看在不同PPI下元素顯示的區(qū)別:
HD與4K
現(xiàn)在移動(dòng)設(shè)備幸冻、智能電視宣傳最多的兩個(gè)關(guān)鍵詞估計(jì)就是HD粹庞、4K,這二者都是用來(lái)描述顯示設(shè)備分辨率的標(biāo)準(zhǔn)洽损,到底二者之間有什么區(qū)別庞溜?
HD(High-Definition)的分辨率要高于1280x720px或者720p。
Full HD的分辨率要高于1920x1080px碑定,目前是主流電視以及高端手機(jī)(比如Galaxy SIV, HTC one, Sony Xperia Z, Nexus5等)采用的是這個(gè)分辨率流码。
4K(也叫做Quad HD或者Ultra HD)的分辨率從3840x2160起步,主要是現(xiàn)在高端電視的分辨率延刘;其還有一個(gè)更高的4096x2160的標(biāo)準(zhǔn)漫试,主要用于電影放映機(jī)或者專業(yè)相機(jī)。
Retina
Retina display即視網(wǎng)膜屏幕访娶,是蘋果發(fā)布iPhone 4時(shí)候提出的商虐,之所以叫做視網(wǎng)膜屏幕觉阅,是因?yàn)槠聊坏腜PI太高,人的視網(wǎng)膜無(wú)法分辨出屏幕上的像素點(diǎn)秘车。iPhone 4/S的PPI為326典勇,是iPhone 3G/S的兩倍,如下圖:
由于屏幕在寬和高的像素?cái)?shù)量提高了整整一倍叮趴,所以之前非Retina屏幕上的一個(gè)像素渲染的內(nèi)容在Retina屏幕上會(huì)用4個(gè)像素去渲染:1x1px(non Retina) = 2x2px(Retina)
割笙,這樣元素的內(nèi)容就會(huì)變得精細(xì),比如:
注意眯亦,Retina display
是蘋果注冊(cè)的命名方式伤溉,其他廠商只能使用HI-DPI或者其他的命名方式,不過(guò)意思都是一樣的妻率,就是屏幕的PPI非常高乱顾。
DP/PT/SP
隨著移動(dòng)設(shè)備屏幕PPI的不斷提高,對(duì)于開發(fā)者來(lái)說(shuō)以前用物理像素(Physical Pixel)來(lái)度量顯示元素的方法已經(jīng)不奏效了宫静。為了解決這個(gè)問(wèn)題走净,兩大平臺(tái)都提出了抽象像素的概念:iOS叫做PT(Point,顯示點(diǎn))孤里,Android中叫做DP/DiP(Device independent Pixel伏伯,設(shè)備無(wú)關(guān)像素),如果沒(méi)有特殊說(shuō)明捌袜,以下統(tǒng)一用DP來(lái)進(jìn)行描述说搅。
舉個(gè)例子,44x44dp的元素在非Retina屏幕中等于44x44px虏等,在Retina屏幕中等于88x88px(變?yōu)?倍)弄唧。
SP(Scale-independent pixel)是縮放無(wú)關(guān)的像素,與DP和PT一樣都是抽象像素博其,只不過(guò)用于描述字體的大小套才。
iOS中處理PPI
iOS中處理不同PPI顯示的方法很簡(jiǎn)單:首先規(guī)定在多高的PPI下1DP等于1px,并以這個(gè)PPI作為基準(zhǔn)(1x multiplier)慕淡,如果顯示設(shè)備的PPI是基準(zhǔn)PPI的2倍背伴,那么1DP等于2px(2x multiplier),其實(shí)就是簡(jiǎn)單的小學(xué)乘法峰髓。
在iPhone系列中傻寂,3G/S為1x multiplier,其他為2x multiplier:
在iPad系列中携兵,iPad 1代和2代為1x multiplier疾掰,其他為2x multiplier:
在iPad Mini系列中,iPad Mini一代為1x multiplier徐紧,其他為2x multiplier:
在iOS中静檬,同一個(gè)應(yīng)用在非Retina屏幕和Retina屏幕顯示的資源是不同的炭懊,其規(guī)則是: name.png
為非Retina資源,name@2x.png
為Retina資源拂檩,所以對(duì)于設(shè)計(jì)人員來(lái)說(shuō)侮腹,在你設(shè)計(jì)的時(shí)候需要考慮到Retina屏幕和非Retina屏幕,看下面這個(gè)例子:
Android中處理PPI
由于Android系統(tǒng)是開放的系統(tǒng)稻励,要適配的PPI非常多父阻,所以它對(duì)PPI劃分的非常細(xì):
- ldpi (low) ~120dpi
- mdpi (medium) ~160dpi
- hdpi (high) ~240dpi
- xhdpi (extra-high) ~320dpi
- xxhdpi (extra-extra-high) ~480dpi
- xxxhdpi (extra-extra-extra-high) ~640dpi
你需要把對(duì)應(yīng)dpi的資源放到對(duì)應(yīng)的目錄就可以了,Android會(huì)根據(jù)dpi自動(dòng)選擇資源望抽,目錄規(guī)則如下:
- drawable-mdpi/asset.png
- drawable-hdpi/asset.png
- drawable-xhdpi/asset.png
- ...
可以看出Android中mdpi與iOS中的1x multiplier所代表的PPI是一樣的加矛,xhdpi與iOS的2x multiplier所代表的PPI一樣,如圖: