DPI/PPI/dp/sp/px/pt 移動(dòng)設(shè)計(jì)手冊(cè)
做移動(dòng)設(shè)計(jì)的同學(xué),不管是原生app或者web app,應(yīng)該對(duì)字體字號(hào)都是很頭痛的問題。根本原因是,我們用唯一分辨率的電腦,設(shè)計(jì)各個(gè)不同尺寸大小分辨率的設(shè)備,那簡(jiǎn)直要瘋掉了。
但不要著急,我們先來理解一下一些名詞:
我們一般會(huì)碰到的度量單位主要有:dpi、ppi、dp、sp、px、pt、in。其中,px應(yīng)該各位最熟悉的單位,也是我們主要使用的photoshop或者axure等工具用的度量單位,而它在移動(dòng)端時(shí),的確已經(jīng)“過時(shí)”了。但不要著急把它丟掉,因?yàn)樗墙酉聛矸浅V匾膿Q算單位(所有手機(jī)參數(shù)還是用px在表達(dá))。
dpi和ppi這兩個(gè)是密度單位,不是度量單位,而這兩個(gè)恰恰是我們換算中重要的分母。簡(jiǎn)單理解一下:
- ppi (pixels per inch):圖像分辨率 (在圖像中,每英寸所包含的像素?cái)?shù)目)
- dpi (dots per inch): 打印分辨率 (每英寸所能打印的點(diǎn)數(shù),即打印精度)
dpi主要應(yīng)用于輸出,重點(diǎn)是打印設(shè)備上
我們?cè)谝苿?dòng)應(yīng)用中提到ppi和dpi其實(shí)都一樣(概念不同,但對(duì)設(shè)計(jì)來講沒有特別需要深入了解),所以我們先忽略掉dpi。而ppi的運(yùn)算方式是: 舉個(gè)簡(jiǎn)單的栗子,iphone5的ppi是多少?ppi=√(1136px2 + 640px2)/4 in=326ppi(視網(wǎng)膜Retina屏).這樣大家就能夠明白ppi和px的關(guān)系。 這里還提到in(英寸)這個(gè)詞,這個(gè)非常重要,因?yàn)楝F(xiàn)實(shí)中我們經(jīng)常提到4英寸手機(jī)或者5.5英寸大屏手機(jī),而這個(gè)尺寸是用戶真正感受到的物理大小,所有提到不同尺寸的屏幕不僅僅是分辨率或者像素,而更多的是英寸。 好,現(xiàn)在關(guān)鍵的來了,dp、sp、pt,是我們?cè)O(shè)計(jì)中的關(guān)鍵。 dp*ppi/160 = px sp 與 px 的換算公式: 是不是看起來dp和sp一樣,在Android設(shè)計(jì)原則中,有提到這兩個(gè)單位,他建議文字的尺寸一律用sp單位,非文字的尺寸一律使用dp單位。例如textSize=”16sp”、layout_width=”60dp”。 為什么要把sp和dp代替px?最簡(jiǎn)單的原因是他們不會(huì)因?yàn)閜pi的變化而變化,在相同物理尺寸和不同ppi下,他們呈現(xiàn)的高度大小是相同。也就是說更接近物理呈現(xiàn),而px則不行。 但問題來了,ps或者axure里面沒有sp或者dp這個(gè)選項(xiàng)啊,怎么辦?看到網(wǎng)上有人說用pt去替換px(pt是物理高度,1in=72pt)。補(bǔ)充一下自己推算的pt轉(zhuǎn)換px的公式,不一定對(duì),可以參考:例如9pt,再96dpi下,那么就是9 * 1/72 * 96 =12px。而在72ppi下,9pt=9px。 好,我們?cè)賮砜纯矗陔娔X上直接截圖web頁(yè)之后對(duì)比的效果: 但我再截一下用iphone訪問web之后的圖: 好吧,這時(shí)候,你就發(fā)現(xiàn)72ppi是見鬼了,因?yàn)檫@個(gè)字體在手機(jī)上看到完全地小了,所以做移動(dòng)設(shè)計(jì)不要傻乎乎地還用72ppi了,不然你很難判斷效果。(當(dāng)然你也可以借助我之前提到的同屏工具來映像到移動(dòng)設(shè)備上查看效果,但這個(gè)其實(shí)會(huì)很麻煩很麻煩很麻煩…) 但是到底是選160ppi還是135ppi呢?如果選了135ppi那在別人的電腦上會(huì)怎么樣呢?是不是又要重新調(diào)?其實(shí)不用,我借用另外一臺(tái)Retina的macbook pro做了相同的測(cè)試,你會(huì)發(fā)現(xiàn),其實(shí)和屏幕ppi無關(guān),而是和你在ps里設(shè)定的分辨率有關(guān)。 [補(bǔ)充,有位專家指出我的不對(duì),就是在點(diǎn)和px上我搞錯(cuò)了,我又嘗試了一下,如果是px的話,不同ppi下字體大小是不變的,而點(diǎn)(pt)的話會(huì)有變化。 并且如果是用pt來代替px的話,為了整除方便,那么ppi一定要設(shè)置成72的倍數(shù),比如144ppi,上圖里面160ppi則會(huì)除不盡,所以上圖其實(shí)160ppi的字體還是和截圖字體有些許差異。] 然后有專家提出,iOS下是用pt作為字體單位,而Android是以sp作為字體單位,而且web app還是以px作為字體單位。怎么樣讓設(shè)計(jì)和輸出單位是一致的?我之前給出的解決方案并不十分嚴(yán)謹(jǐn)易懂,所以我重新編輯了一下。 為了求證移動(dòng)字號(hào)的問題,跑了一圈同事,最后只能暫時(shí)得出一些“不一定正確”的結(jié)論: 1. 字號(hào)行業(yè)標(biāo)準(zhǔn)幾乎沒有,不像web一樣,宋體12px、14px這樣很清楚。我唯一找到的只有Android的設(shè)計(jì)建議: 圖中原作者還換算了一下在240ppi下對(duì)應(yīng)的px值。 而我問了一圈同事,基本上現(xiàn)在設(shè)定字號(hào)都是憑感覺做事的。當(dāng)然你也可以參考Android這個(gè)標(biāo)準(zhǔn)。 2. 如何在電腦上快速預(yù)覽高清內(nèi)容是否排版合理,我想到最簡(jiǎn)單的一點(diǎn)就是縮放psd,縮放的比例很關(guān)鍵,要達(dá)到物理尺寸,首先你得知道你電腦的分辨率,我的分辨率是135ppi,如果要看分辨率是326的iphone上的效果,就縮小到135/326≈41.4%,你就會(huì)發(fā)現(xiàn)物理尺寸非常接近??梢钥纯匆恍┡虐嫔系膯栴}。當(dāng)然你也可以裝一些工具來達(dá)到更好的效果。 3. 怎么和開發(fā)溝通你的字體大?。课乙矝]有特別好的辦法,就簡(jiǎn)單分成3塊來說: 有關(guān)字體字號(hào)的研究已經(jīng)有同事在做,以后有結(jié)論了再和大家分享。 [以上都是本人自己瞎弄的,如果正確純屬偶然,所以請(qǐng)那些“笨蛋”閉嘴,我歡迎專業(yè)上的討論和交流,但不喜歡人品低下地謾罵。] 文章來源:Pre-alpha 第二篇:Android手機(jī)UI設(shè)計(jì)分辨率基礎(chǔ)知識(shí)(DPI,DIP計(jì)算) 術(shù)語(yǔ)和概念 DPI值計(jì)算 比如:計(jì)算WVGA(800*480)分辨率,3.7英寸的密度DPI,如圖1所示 Diagonal pixel表示對(duì)角線的像素值(=),DPI=933/3.7=252 根據(jù)手機(jī)屏幕密度(DPI)或屏幕尺寸大小分為以下3類,如圖2所示 圖2 手機(jī)屏幕分類和像素密度的對(duì)應(yīng)關(guān)系如表1所示: 表1 手機(jī)尺寸分布情況(http://developer.android.com/resources/dashboard/screens.html)如圖3所示,目前主要是以分辨率為800*480和854*480的手機(jī)用戶居多 圖3 從以上的屏幕尺寸分布情況上看,其實(shí)手機(jī)只要考慮3-4.5寸之間密度為1和1.5的手機(jī) 從開發(fā)角度講,應(yīng)用程序會(huì)根據(jù)3類Android手機(jī)屏幕提供3套UI布局文件,但是相應(yīng)界面圖標(biāo)也需要提供3套,如表2所示 表2 需要根據(jù)物理尺寸的大小準(zhǔn)備5套布局 需要根據(jù)dpi值準(zhǔn)備5套圖片資源: Android有個(gè)自動(dòng)匹配機(jī)制去選擇對(duì)應(yīng)的布局和圖片資源 via:www.suerb.com
比如1dp x 320ppi/160 = 2px
sp*ppi/160 = px我再來做個(gè)小小的實(shí)驗(yàn):
我用的都是arial 14點(diǎn)(注:專家指正這里不是px而是pt,點(diǎn))的字體,但在320ppi、160ppi、135ppi(我自己的)以及標(biāo)準(zhǔn)72ppi下的大小,截然不同。
你會(huì)驚訝的發(fā)現(xiàn),只有72ppi是正常的,其他字體都不對(duì)了,因?yàn)樵镜膚eb設(shè)計(jì)是不用考慮dp、sp或者ppi的,它是直接px作為物理單位的,而點(diǎn)在72ppi下(1pt x 1/72 x 72dpi=1px)是正常顯示的。所以我們以前做web的時(shí)候根本不用擔(dān)心自己的設(shè)計(jì)在別人電腦上看起來會(huì)很大或很小。當(dāng)然其實(shí)像firefox是用96dpi,也就是9pt=12px。
手機(jī)屏幕的分類
UI設(shè)計(jì)
如何做到自適應(yīng)屏幕大小呢?
界面布局方面?
圖片資源方面
完全看暈
?
給我一塊磚,我拍死自己吧… ??
??
看了兩遍,感覺很懵 ?
我看睡著了。 ? ? ? ?