這是一篇關(guān)于app設(shè)計(jì)師去了解下如何做android多分辨率多密度下界面適配方案的原理解讀。如果你已經(jīng)知道了,可以不用再來(lái)閱讀了。本文25學(xué)堂只是為了給一些app設(shè)計(jì)小白掃盲。讓各位清楚的知道的android的UI界面到底是如何去解決適配問題的。
當(dāng)然,網(wǎng)上很多關(guān)于android界面適配的文章也有很多,大同小異。包括25學(xué)堂之前介紹過的Android APP設(shè)計(jì)教程與終極UI適配秘籍【圖文版】和Andriod界面設(shè)計(jì)的分辨率和尺寸適配全攻略
android界面適配的機(jī)制到底是咋樣的呢?
很通俗的點(diǎn)說就是:Android系統(tǒng)本身就提供了UI界面在多平臺(tái)的適配的完善的解決方案和機(jī)制。并不是我們移動(dòng)APP設(shè)計(jì)師去解決適配的問題?;蛘呤莂ndroid程序員自己冥思苦想出來(lái)的最佳解決適配方案。
因?yàn)檫M(jìn)行android開發(fā)的時(shí)候,系統(tǒng)默認(rèn)有這幾個(gè)文件夾,
無(wú)論是android設(shè)計(jì)師或者android程序員把對(duì)應(yīng)的ui設(shè)計(jì)資源放入對(duì)應(yīng)的文檔即可完成android UI 適配的最粗暴的解決方案!
Android適配機(jī)制原理如下:
Android適配機(jī)制就是在資源后面添加對(duì)這兩種因素的限定,通過不同的限定區(qū)分不同的平臺(tái)資源,Android在使用資源的時(shí)候會(huì)優(yōu)先選擇滿足本平臺(tái)限定的資源,再找最接近條件的,再找默認(rèn)(即不加限定),通過選擇適合當(dāng)前平臺(tái)的資源來(lái)完成不同平臺(tái)的適配。
屏幕尺寸分為:small,normal,large,xlarge分別表示小,中,大,超大屏
屏幕密度分為:ldpi,mdpi,hdpi,xhdpi,它們的標(biāo)準(zhǔn)值分別是:120dpi,160dpi,240dpi,320dpi
通俗點(diǎn)講就是:系統(tǒng)根據(jù)當(dāng)前的屏幕大小和密度,然后動(dòng)態(tài)的采用程序中提供特定的資源。
如今最新的android適配資源需要五種:
界面布局方面
需要根據(jù)物理尺寸的大小準(zhǔn)備5套布局
- layout: 放一些通用布局xml文件,比如界面中頂部和底部的布局,不會(huì)隨著屏幕大小變化,類似windos窗口的title bar
- layout-small: 屏幕尺寸小于3英寸左右的布局
- layout-normal: 屏幕尺寸小于4.5英寸左右
- layout-large: 4英寸-7英寸之間
- layout-xlarge: 7-10英寸之間
圖片資源方面
需要根據(jù)dpi值準(zhǔn)備5套圖片資源:
- drawable
- drawalbe-ldpi
- drawable-mdpi
- drawable-hdpi
- drawable-xhdpi
Android有個(gè)自動(dòng)匹配機(jī)制去選擇對(duì)應(yīng)的布局和圖片資源。
其實(shí)做法很簡(jiǎn)單,只需要在res目錄下創(chuàng)建不同的layout文件夾,比如layout-640x360,layout-800x480,所有的layout文件在編譯之后都會(huì)寫入R.java里,而系統(tǒng)會(huì)根據(jù)屏幕的大小自己選擇合適的layout進(jìn)行使用。
android?UI適配主要受到屏幕分辨率和屏幕尺寸的影響,也是取決這2個(gè)因素。
具體的android設(shè)計(jì)規(guī)范點(diǎn)擊查看
?Android設(shè)計(jì)規(guī)范以及android UI kits完整PSD下載
第二個(gè)大家需要注意的和疑問的:
當(dāng)我們使用切圖工具Cutterman來(lái)進(jìn)行安卓界面切圖的時(shí)候,會(huì)自動(dòng)生成10個(gè)文件夾。如圖所示:
主要是因?yàn)樽钚掳娴陌沧块_發(fā)軟件studio里面有了mipmap 目錄和drawable 目錄。兩者都是一樣的。
唯一的區(qū)別:用mipmap系統(tǒng)會(huì)在縮放上提供一定的性能優(yōu)化。
比如:Nexus 6 有 493 ppi,它剛好在 xxhdpi和xxxhdpi之間,所以顯示的時(shí)候需要對(duì)xxxhdpi的資源進(jìn)行縮小,如果你用了mipmap-xxxhdpi,那么這里會(huì)對(duì)sclae有一個(gè)優(yōu)化,性能更好,占用內(nèi)存更少。所以現(xiàn)在官方推薦使用mipmap:
最后再說下為什么在布局文件中使用 dp作為單位而不是使用px
dp是一個(gè)與屏幕ppi無(wú)關(guān)的參數(shù),同時(shí)也是一個(gè)事實(shí)上并不存在的虛擬單位。顯示時(shí)會(huì)根據(jù)具體屏幕的ppi進(jìn)行像素的映射,關(guān)系如下160ppi ? 1dp ? 1px120ppi ? 1dp ? 0.75px240ppi
1dp ? 1.5px320ppi ?1dp ?2px因此在布局文件中一般使用dp作為單位,這樣就能適應(yīng)不同ppi的屏幕,在各種ppi的屏幕上有一樣大的物理上的距離。
(可以看出1dp并不總是等于1px的,對(duì)于ppi高的屏幕肯能要等于2px,只是為了物理上看起來(lái)的距離是相等的)
全站高品質(zhì)素材免費(fèi)下載!