學(xué)移動(dòng)端UI設計怎么調設計尺寸
初涉移動(dòng)端設計和開(kāi)發(fā)的同學(xué)們,基本都會(huì )在尺寸問(wèn)題上糾結好一陣子才能摸到頭緒。我也花了很長(cháng)時(shí)間才弄明白,感覺(jué)有必要寫(xiě)一篇足夠通俗易懂的教程來(lái)幫助大家。從原理說(shuō)起,理清關(guān)于尺寸的所有細節。
現象
首先說(shuō)現象,大家都知道移動(dòng)端設備屏幕尺寸非常多,碎片化嚴重。尤其是Android,你會(huì )聽(tīng)到很多種分辨率:480x800, 480x854, 540x960, 720x1280, 1080x1920,而且還有傳說(shuō)中的2K屏。近年來(lái)iPhone的碎片化也加劇了:640x960, 640x1136, 750x1334, 1242x2208。
不要被這些尺寸嚇倒。實(shí)際上大部分的app和移動(dòng)端網(wǎng)頁(yè),在各種尺寸的屏幕上都能正常顯示。說(shuō)明尺寸的問(wèn)題一定有解決方法,而且有規律可循。
像素密度
要知道,屏幕是由很多像素點(diǎn)組成的。之前提到那么多種分辨率,都是手機屏幕的實(shí)際像素尺寸。比如480x800的屏幕,就是由800行、480列的像素點(diǎn)組成的。每個(gè)點(diǎn)發(fā)出不同顏色的光,構成我們所看到的畫(huà)面。而手機屏幕的物理尺寸,和像素尺寸是不成比例的。最典型的例子,iPhone 3gs的屏幕像素是320x480,iPhone 4s的屏幕像素是640x960。剛好兩倍,然而兩款手機都是3.5英寸的。
所以,我們要引入最重要的一個(gè)概念:像素密度,也就是PPI(pixels per inch)。這項指標是連接數字世界與物理世界的橋梁。
Pixels per inch,準確的說(shuō)是每英寸的長(cháng)度上排列的像素點(diǎn)數量。1英寸是一個(gè)固定長(cháng)度,等于2.54厘米,大約是食指最末端那根指節的長(cháng)度。像素密度越高,代表屏幕顯示效果越精細。Retina屏比普通屏清晰很多,就是因為它的像素密度翻了一倍。
倍率與邏輯像素
再用iPhone 3gs和4s來(lái)舉例。假設有個(gè)郵件列表界面,我們不妨按照PC端網(wǎng)頁(yè)設計的思維來(lái)想象。3gs上大概只能顯示4-5行,4s就能顯示9-10行,而且每行會(huì )變得特別寬。但兩款手機其實(shí)是一樣大的。如果照這種方式顯示,3gs上剛剛好的效果,在4s上就會(huì )小到根本看不清字。
在現實(shí)中,這兩者效果卻是一樣的。這是因為Retina屏幕把2x2個(gè)像素當1個(gè)像素使用。比如原本44像素高的頂部導航欄,在Retina屏上用了88個(gè)像素的高度來(lái)顯示。導致界面元素都變成2倍大小,反而和3gs效果一樣了。畫(huà)質(zhì)卻更清晰。
在以前,iOS應用的資源圖片中,同一張圖通常有兩個(gè)尺寸。你會(huì )看到文件名有的帶@2x字樣,有的不帶。其中不帶@2x的用在普通屏上,帶@2x的用在Retina屏上。只要圖片準備好,iOS會(huì )自己判斷用哪張,Android道理也一樣。
由此可以看出,蘋(píng)果以普通屏為基準,給Retina屏定義了一個(gè)2倍的倍率(iPhone 6plus除外,它達到了3倍)。實(shí)際像素除以倍率,就得到邏輯像素尺寸。只要兩個(gè)屏幕邏輯像素相同,它們的顯示效果就是相同的。
Android的解決方法類(lèi)似,但更復雜一些。因為Android屏幕尺寸實(shí)在太多,分辨率高低跨度非常大,不像蘋(píng)果只有那么幾款固定設備、固定尺寸。所以Android把各種設備的像素密度劃成了好幾個(gè)范圍區間,給不同范圍的設備定義了不同的倍率,來(lái)保證顯示效果相近。像素密度概念雖然重要,但用不著(zhù)我們自己算,iOS與Android都幫我們算好了。
如圖所示,像素密度在120左右的屏幕歸為ldpi,160左右的歸為mdpi,以此類(lèi)推。這樣,所有的Android屏幕都找到了自己的位置,并賦予了相應的倍率:
? ldpi [0.75倍]
? mdpi [1倍]
? hdpi [1.5倍]
? xhdpi [2倍]
? xxhdpi [3倍]
? xxxhdpi [4倍]
各型號iPhone的倍率比較簡(jiǎn)單,我們后面會(huì )講到。那么Android手機那么多,具體怎么分?哪些手機是幾倍的倍率呢?我們先看一張表,這是友盟2014年10月到2015年03月的數據:
就目前市場(chǎng)狀況而言,各種手機的分辨率可以這樣粗略判斷。雖然不全面,但至少在1年內都還有一定的參考意義:
? ldpi 如今已絕跡,不用考慮
? mdpi [320x480](市場(chǎng)份額不足5%,新手機不會(huì )有這種倍率,屏幕通常都特別?。?/p>
? hdpi [480x800、480x854、540x960](早年的低端機,屏幕在3.5英寸檔位;如今的低端機,屏幕在4.7-5.0英寸檔位)
? xhdpi [720x1280](早年的中端機,屏幕在4.7-5.0英寸檔位;如今的中低端機,屏幕在5.0-5.5英寸檔位)
? xxhdpi [1080x1920](早年的高端機,如今的中高端機,屏幕通常都在5.0英寸以上)
? xxxhdpi [1440x2560](極少數2K屏手機,比如Google Nexus 6)
自然地,以1倍的mdpi作為基準。像素密度更高或者更低的設備,只需乘以相應的倍率,就能得到與基準倍率近似的顯示效果。
不過(guò)需要注意的是,Android設備的邏輯像素尺寸并不統一。比如兩種常見(jiàn)的屏幕480x800和1080x1920,它們分別屬于hdpi和xxhdpi。除以各自倍率1.5倍和3倍,得到邏輯像素為320x533和360x640。很顯然,后者更寬更高,能顯示更多內容。所以,即使有倍率的存在,各種Android設備的顯示效果仍然無(wú)法做到完全一致。
單位
不難發(fā)現,真正決定顯示效果的,是邏輯像素尺寸。為此,iOS和Android平臺都定義了各自的邏輯像素單位。iOS的尺寸單位為pt,Android的尺寸單位為dp。說(shuō)實(shí)話(huà),兩者其實(shí)是一回事。
單位之間的換算關(guān)系隨倍率變化:
? 1倍:1pt=1dp=1px(mdpi、iPhone 3gs)
? 1.5倍:1pt=1dp=1.5px(hdpi)
? 2倍:1pt=1dp=2px(xhdpi、iPhone 4s/5/6)
? 3倍:1pt=1dp=3px(xxhdpi、iPhone 6)
? 4倍:1pt=1dp=4px(xxxhdpi)
單位決定了我們的思考方式。在設計和開(kāi)發(fā)過(guò)程中,應該盡量使用邏輯像素尺寸來(lái)思考界面。設計Android應用時(shí),有的設計師喜歡把畫(huà)布設為1080x1920,有的喜歡設成720x1280。給出的界面元素尺寸就不統一了。Android的最小點(diǎn)擊區域尺寸是48x48dp,這就意味著(zhù)在xhdpi的設備上,按鈕尺寸至少是96x96px。而在xxhdpi設備上,則是144x144px。
無(wú)論畫(huà)布設成多大,我們設計的是基準倍率的界面樣式,而且開(kāi)發(fā)人員需要的單位都是邏輯像素。所以為了保證準確高效的溝通,雙方都需要以邏輯像素尺寸來(lái)描述和理解界面,無(wú)論是在標注圖還是在日常溝通中。不要再說(shuō)“底部標簽欄的高度是96像素,我是按照xhdpi做的”這樣的話(huà)了。
Web怎么辦
移動(dòng)端頁(yè)面的絕對單位仍然是px,至少代碼里這么寫(xiě),但它的道理也和app一樣。由于像素密度是設備本身的固有屬性,它會(huì )影響到設備中的所有應用,包括瀏覽器。前端技術(shù)可以善加利用設備的像素密度,只需一行代碼,瀏覽器便會(huì )使用app的顯示方式來(lái)渲染頁(yè)面。根據像素密度,按相應倍率縮放。
以iPhone 5s為例,屏幕的分辨率是640x1136,倍率是2。瀏覽器會(huì )認為屏幕的分辨率是320x568,仍然是基準倍率的尺寸。所以在制作頁(yè)面時(shí),只需要按照基準倍率來(lái)就行了。無(wú)論什么樣的屏幕,倍率是多少,都按邏輯像素尺寸來(lái)設計和開(kāi)發(fā)頁(yè)面。只不過(guò)在準備資源圖的時(shí)候,需要準備2倍大小的圖,通過(guò)代碼把它縮成1倍大小顯示,才能保證清晰。
實(shí)際應用
大家最關(guān)心的還是實(shí)際運用,畫(huà)布該怎么設置。我們就iOS、Android、Web三個(gè)平臺來(lái)分別梳理一下。不過(guò)在這之前,我要為使用PS進(jìn)行設計的朋友介紹一個(gè)小技巧。
之前我說(shuō)過(guò),我們要以邏輯像素尺寸來(lái)思考界面。體現到設計過(guò)程中,就是要把單位設置成邏輯像素。打開(kāi)PS的首選項——單位與標尺界面,把尺寸和文字單位都改成點(diǎn)(Point)。這里的點(diǎn)也就是pt,無(wú)論設計iOS、Android還是Web應用,單位都用它。當然,各平臺單位名稱(chēng)還是要記住的。這里我們用的只是它的原理,不用在意名稱(chēng)。
要調節倍率,則通過(guò)圖像大小里的DPI來(lái)控制。這個(gè)DPI,其實(shí)就是PPI,像素密度。有個(gè)常識大家都知道,屏幕上的設計DPI設成72,印刷品設計DPI設成300。為什么是這兩個(gè)數字?
首先說(shuō)300,這和人眼的分辨能力有關(guān)。由于1英寸是固定長(cháng)度,每1英寸有多少個(gè)像素點(diǎn)決定了畫(huà)質(zhì)清晰程度。之前說(shuō)過(guò),這就是像素密度,也就是DPI。DPI達到300以上,其細膩程度就會(huì )給人真實(shí)感,像真實(shí)世界中的物件。相反,DPI只有10的話(huà),在你一個(gè)食指指節大小的長(cháng)度內只有10個(gè)像素,這明顯就是馬賽克了。所以印刷品要設成300,才能保證清晰。
再說(shuō)72,這有一定的歷史原因。最早的圖形設計是在mac電腦上進(jìn)行的,mac本身的顯示器分辨率就是72。PS中把圖像DPI也設成72,就能保證屏幕上顯示的尺寸和打印尺寸相同,便于設計。72的PC顯示器分辨率逐漸成為一種默認的行業(yè)標準,這套規則就這么沿用下來(lái)。
現在回到正題,我們怎么通過(guò)DPI來(lái)調節倍率?既然屏幕本身的分辨率是72,DPI設成72剛好是1倍尺寸,那設成72的兩倍就是倍率為2的屏幕了,就這么簡(jiǎn)單。
下面來(lái)看看3個(gè)平臺各自的畫(huà)布設置:
iPhone
iPhone的屏幕尺寸各不相同,我說(shuō)的是邏輯像素尺寸,這確實(shí)是讓人很頭疼的事情。如果想用一套設計涵蓋所有iPhone,就要選擇邏輯像素折中的機型。
從市場(chǎng)占有率數據來(lái)看,目前最多的是iPhone5/5s的屏幕。倍率為2,邏輯像素320x568。上升勢頭最猛,未來(lái)有望登上第一的是iPhone 6的屏幕。倍率為2,邏輯像素375x667。
按照這兩種尺寸來(lái)設計,都是比較主流的做法??梢约骖櫠桃恍┑膇Phone 4s,大一點(diǎn)的6 plus也不會(huì )過(guò)于空曠。
不過(guò)在切圖的時(shí)候要注意,由于iPhone 6 plus的3倍圖是由2倍圖放大而來(lái),所以位圖要注意保證清晰。
Android
都說(shuō)Android碎片化嚴重,但它現在反而比iOS好處理。因為如今的Android屏幕邏輯像素已經(jīng)趨于統一了:360x640,就看你設成幾倍了。想以xhdpi為準,就把DPI設成72x2=144。想以xxhdpi為準,就把DPI設成72x3=216。
對于那些比較老的低端機,寬度是480px的那批,畫(huà)面確實(shí)會(huì )小一些,顯示內容會(huì )更少。稍微留意一下,重要內容盡量保持在界面中上部分。
當然,這些機型不出一年就會(huì )被邊緣化,基本淘汰?,F在能運轉的也是當作功能機在用,軟件多了必卡無(wú)疑,用戶(hù)體驗無(wú)從談起。不作考慮也是OK的。
Web
手機端網(wǎng)頁(yè)就沒(méi)有統一標準了,比較流行的做法是按照iPhone 5的尺寸來(lái)設計。倍率2,邏輯像素320x568。
這樣的做法比較實(shí)在,倍率2的屏幕無(wú)論在iOS還是Android方面都是主流,而且又是2倍屏幕中邏輯像素最小的。所以圖片的尺寸可以保持在較小的水平,頁(yè)面加載速度快。當然,缺點(diǎn)就是在倍率3的設備上看,圖片不是特別清晰。
如果追求圖片質(zhì)量,愿意犧牲加載速度,那么可以按照最大的屏幕來(lái)設計。也就是iPhone 6 plus的尺寸,倍率3,邏輯像素414x736。
總結
移動(dòng)端的尺寸比PC端復雜,關(guān)鍵就在倍率。但也正因為倍率的存在,把大大小小的屏幕拉回到同一水平線(xiàn),得以保證一套設計適應各種屏幕。站在這條水平線(xiàn)的角度看,會(huì )發(fā)現它很好理解。尺寸是UI設計學(xué)習者必須攻克的一個(gè)重要的知識點(diǎn),如何調整作品尺寸,在CGWANG的UI設計專(zhuān)業(yè)課程中都有專(zhuān)門(mén)的階段進(jìn)行強化介紹培訓,UI設計初學(xué)者必須重視設計過(guò)程中尺寸的處理與調整。