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