Android是運(yùn)行在各種提供不同的屏幕尺寸和密度的設(shè)備。Android系統(tǒng)提供跨設(shè)備的統(tǒng)一開發(fā)環(huán)境和處理大部分的工作,以調(diào)整每個(gè)應(yīng)用程序的用戶界面,以在其上顯示的畫面。?同時(shí),該系統(tǒng)提供了API,允許您控制您的應(yīng)用程序的UI特定的屏幕尺寸和密度,以優(yōu)化你的用戶界面設(shè)計(jì),不同的屏幕配置。作為設(shè)計(jì)師也要最大程度地為所有設(shè)備的體現(xiàn)良好的用戶體驗(yàn)或是方便使用閱讀,而不是簡(jiǎn)單地拉伸以適應(yīng)屏幕上的設(shè)備。
25學(xué)堂跟大家分享這篇Android界面設(shè)計(jì)適配不同屏幕的尺寸和密度的問題。有幾個(gè)知識(shí)點(diǎn)需要解讀下。
第一個(gè)知識(shí)點(diǎn)解讀:APPUI設(shè)計(jì)中的48dp定律原則
如下圖,是用像素(px)為單位的按鈕和圖片分別在低分辨率、中分辨率和高分辨的顯示效果,可以看出來物理大小是發(fā)生變化的。
在看看下圖,使用了dp作為單位,物理大小就沒有發(fā)生太大的變化。
反正搞安卓開發(fā)的,一般都會(huì)用dp來規(guī)定一個(gè)組件的大小。當(dāng)然偶爾也有人會(huì)用像素(px)來規(guī)定組件大小,可能是個(gè)新手、也可能是此人的程序不想兼容更多的設(shè)備。
上面解釋了什么是dp,dp就是一種基本上和設(shè)備無關(guān)的單位,可以保證一套UI在不同機(jī)器上面的適配,而顯示效果不會(huì)出現(xiàn)很大的偏差。那什么是48dp定律?
在通常情況下48dp在物理屏幕上差不多是9毫米的大小,而在UI設(shè)計(jì)中所有觸摸類控件的推薦大小在7毫米到10毫米之間,因?yàn)樵谶@個(gè)值之間會(huì)使控件的點(diǎn)中率大大增加,在視覺上也會(huì)比較舒服。
所以當(dāng)你的可觸摸控件的高度和寬度大于等于48dp時(shí),一方面可以保證你的控件在任何設(shè)備上都不會(huì)小于7毫米,同時(shí)也能夠保證控件中的內(nèi)容看起來比較舒服,也不會(huì)出現(xiàn)誤觸的現(xiàn)象。這就是所謂的48dp定律,當(dāng)然這一切是個(gè)推薦值,定律在心中,實(shí)際情況靈活處理,而不是被定律束縛,才是一個(gè)優(yōu)秀的APPUI設(shè)計(jì)師。
同時(shí)一定要注意控件之間最好至少有8dp的留白
例如下圖, 左邊的鉛筆圖片控件的大小是48dp*48dp ,右邊按鈕控件的高度為48dp,寬度為48*3dp,大小完全符合48dp定律。 圖片和按鈕之間的間距為8dp,保證了圖片和按鈕合適的間距,按鈕的內(nèi)容和按鈕控件最邊緣間隔為4dp,這樣如果兩個(gè)按鈕控件上下并排放在一起,也能保證兩個(gè)按鈕內(nèi)容間的間距為8dp ,從而保證了其美觀性,內(nèi)容居中對(duì)齊之類的就不多說了,這是最基本的。
第二個(gè)知識(shí)點(diǎn)解讀:Android中dp和px之間進(jìn)行轉(zhuǎn)換
在xml布局文件中,我們既可以設(shè)置px,也可以設(shè)置dp(或者dip)。一般情況下,我們都會(huì)選擇使用dp,這樣可以保證不同屏幕分辨率的機(jī)器上布局一致。但是在代碼中,如何處理呢?很多控件的方法中都只提供了設(shè)置px的方法,例如setPadding,并沒有提供設(shè)置dp的方法。這個(gè)時(shí)候,如果需要設(shè)置dp的話,就要將dp轉(zhuǎn)換成px了。
第二個(gè)知識(shí)點(diǎn)解讀:如何讓android做到適配
Android的多屏幕支持的基礎(chǔ)是它能夠管理應(yīng)用程序的布局和位可繪制對(duì)象的渲染以適當(dāng)?shù)姆绞綄?duì)當(dāng)前屏幕配置的能力。 該系統(tǒng)處理的大部分工作由布局縮放以適合屏幕尺寸/密度和縮放位圖可繪制在屏幕密度正確呈現(xiàn)您的應(yīng)用程序在每個(gè)屏幕的配置(如適用)。 為了更妥善地處理不同的屏幕配置,但是,你也應(yīng)該:
顯式聲明在屏幕尺寸應(yīng)用程序支持的清單
通過聲明它的屏幕尺寸應(yīng)用程序支持,可以確保與您所支持的屏幕只有設(shè)備可以下載你的應(yīng)用程序。 針對(duì)不同的屏幕尺寸,宣布支持也可能會(huì)影響系統(tǒng)如何吸引你的應(yīng)用程序在更大屏幕上,具體而言,您的應(yīng)用程序是否在運(yùn)行屏幕兼容模式 。
申報(bào)屏幕尺寸的應(yīng)用程序支持,則應(yīng)該包括<supports-screens>在你的manifest文件的元素。
提供不同的布局,不同的屏幕大小
默認(rèn)情況下,Android的重新調(diào)整你的應(yīng)用程序的布局,以適應(yīng)當(dāng)前設(shè)備屏幕。 在大多數(shù)情況下,這工作得很好。 在其他情況下,你的用戶界面可能不看的好,可能需要不同的屏幕大小調(diào)整。 例如,在更大的屏幕上,你可能需要調(diào)整一些元素的位置和大小來采取額外的屏幕空間的優(yōu)勢(shì),或者在一個(gè)較小的屏幕上,你可能需要調(diào)整大小,這樣一切都可以適合在屏幕上。
配置預(yù)選賽你可以用它來 ??提供粒度特定資源small , normal , large和xlarge 。 例如,布局超大屏幕應(yīng)該在layout-xlarge/ 。
采用Android 3.2(API級(jí)別13)起,上述尺寸組棄用,您應(yīng)該改用sw<N>dp配置限定符來定義您的布局資源所需的最小可用寬度。 例如,如果您的多窗格平板電腦布局至少需要600dp屏幕寬度的,你應(yīng)該把它放在layout-sw600dp/ 。 使用新技術(shù)來聲明資源布局在有關(guān)章節(jié)中進(jìn)一步討論宣告平板布局為Android 3.2 。
為不同的屏幕密度不同的位圖可繪
默認(rèn)情況下,Android的擴(kuò)展你的可繪制對(duì)象的位圖( .png , .jpg ,和.gif文件)和九補(bǔ)丁可繪( .9.png文件),使它們呈現(xiàn)在每個(gè)設(shè)備上相應(yīng)的物理尺寸。 例如,如果您的應(yīng)用程序只為基線提供位圖可繪,中密度屏幕(MDPI),那么系統(tǒng)擴(kuò)展起來的高密度屏幕上時(shí),和縮放下來低密度屏幕上時(shí)。 這個(gè)比例可以引起位圖的文物。 為確保您的位圖看起來是最好的,你應(yīng)該包括替代版本在不同的屏幕密度不同的分辨率。
配置合格者可用于密度的特定資源ldpi (低), mdpi (中等), hdpi (高),和xhdpi (特高)。 例如,位圖高密度的屏幕應(yīng)該在drawable-hdpi/ 。
Android界面設(shè)計(jì)適配不同屏幕的尺寸和密度表格解讀
屏幕特性 | 預(yù)選賽 | 描述 |
---|---|---|
大小 | small |
資源為小尺寸屏幕。 |
normal |
資源為正常大小的屏幕。?(這是基線的大小。) | |
large |
資源為大尺寸屏幕。 | |
xlarge |
資源,?超大尺寸的屏幕。 | |
密度 | ldpi |
低密度(LDPI)屏幕的資源(?120DPI)。 |
mdpi |
用于中密度(MDPI)屏幕的資源(?160dpi的)。?(這是基線密度。) | |
hdpi |
對(duì)于高密度(HDPI)屏幕的資源(?240DPI)。 | |
xhdpi |
額外的高密度(xhdpi)屏幕的資源(?320dpi)。 | |
nodpi |
資源的所有密度。?這些是與密度無關(guān)的資源。?該系統(tǒng)不能擴(kuò)展標(biāo)記用此修飾符的資源,無論當(dāng)前屏幕的密度。 | |
tvdpi |
資源屏幕MDPI和HDPI介于兩者之間;約213dpi。?這不被視為一個(gè)“主”密度組。?它主要用于電視和大多數(shù)應(yīng)用程序并不需要它,提供MDPI和HDPI資源足以滿足大多數(shù)的應(yīng)用程序,系統(tǒng)將擴(kuò)展他們?yōu)楹线m。?如果您認(rèn)為有必要提供tvdpi資源,你應(yīng)該調(diào)整它們的大小為1.33 * MDPI的一個(gè)因素。?例如,一個(gè)100像素x 100像素的圖像為MDPI屏幕應(yīng)該是133px x 133px的tvdpi。 | |
方向 | land |
資源在橫向(寬屏)屏幕。 |
port |
資源在縱向(高寬比)屏幕。 | |
長(zhǎng)寬比 | long |
資源有較基線屏幕配置一個(gè)顯著高或更大的寬高比(以縱向或橫向時(shí),分別)屏幕。 |
notlong |
資源具有的縱橫比,它類似于基線屏幕配置使用的屏幕。 |
全站高品質(zhì)素材免費(fèi)下載!