本文基于 鴻洋大神 在csdn上發(fā)布的 Android 屏幕適配方案這一博文蜈缤,基于自己的學(xué)習(xí)理解拾氓,說說,記錄下(照抄不誤 -底哥,-)
首先屏幕適配在實(shí)際android項(xiàng)目開發(fā)過程中是一個(gè)讓人蛋疼無(wú)比的難題咙鞍,很多面試也會(huì)問到(ps:數(shù)月前房官,我在深圳找工作面的公司,十家有十二家會(huì)問到)
恩续滋,先從概念性的東西開始說吧翰守,在布局文件當(dāng)中,一般我們的做法是dp吃粒,但是潦俺,正如鴻洋大神所說,dp在物理設(shè)備的屏幕尺寸相差太大的情況下并沒有什么用徐勃,就好比你寫的1280x720在磚頭似的其他安卓機(jī)子上(例如:某族事示,某視等),這種情況對(duì)于我們開發(fā)者而言就很尷尬了僻肖,我們是希望一個(gè)程序無(wú)論在哪運(yùn)行肖爵,樣式ui都顯示一樣。
說下我以前的做法臀脏,編寫多套布局劝堪,每個(gè)分辨率下面一套layout,比如layout-480x800,layout-1280x720,1080x1080等揉稚。
看似很好解決秒啦,但是
你確定你寫這么多布局你不煩?
你確定設(shè)計(jì)師給你只標(biāo)注px你換算成dp不煩?
你確定產(chǎn)品經(jīng)理不會(huì)在原有功能上再要求加點(diǎn)什么控件什么的?
所以在被人擼了幾遍后搀玖,我果斷放棄了上述這種做法(寫也麻煩余境,改動(dòng)也麻煩)
百分比我認(rèn)為確實(shí)是適配的最優(yōu)方式,像web頁(yè)面(咨詢過前端人員)灌诅,web在這么多分辨率的電腦芳来,還要兼容各種屏幕的手機(jī)一樣完美展示,所以猜拾。即舌。。
andorid中的百分比是match_parent和wrap_content 顯然的是所有空間都用這兩個(gè)屬性并不能匹配我們產(chǎn)品經(jīng)理天馬行空的產(chǎn)品需求
因此挎袜,針對(duì)ui常常給我們的圖是px標(biāo)注顽聂,百分比適配屏幕最優(yōu)的做法,使用這種方法比較好宋雏。
建立多個(gè)values文件蕉陋,也就是常說的dimens適配
首先我們需要設(shè)立基準(zhǔn)试伙,最好以u(píng)i給出的px標(biāo)注圖為基準(zhǔn),這里我取480x320的分辨率為基準(zhǔn)(鴻洋大神原話:將任何分辨率的寬度取320份,取值x1-x320果港,高度取480份爬舰,取值y1-y480)
那么我們?cè)趯挾葹?80的屏幕上,它的x1就是 480/基準(zhǔn)值(320) = 1.5px
設(shè)置好了以后,在控件中奔浅,我們?cè)O(shè)置寬高的時(shí)候 width = "@dimens/x120" height = "@dimens/x120"即可
(這樣達(dá)到的效果是,無(wú)論在什么分辨率的機(jī)子上诗良,原控件在屏幕的百分比寬度汹桦,高度都是固定,從而實(shí)現(xiàn)適配屏幕)
編寫values文件也比較麻煩鉴裹,因此鴻洋大神給出了一個(gè)工具舞骆,xxx.jar 點(diǎn)擊即可自動(dòng)生成480x320的values文件夾(下面鏈接)
https://github.com/hongyangAndroid/Android_Blog_Demos/tree/master/blogcodes/src/main/java/com/zhy/blogcodes/genvalues
默認(rèn)基準(zhǔn)為480*320,當(dāng)然對(duì)于特殊需求径荔,通過命令行指定即可:
例如:基準(zhǔn) 1280 * 800 督禽,額外支持尺寸:1152 * 735;4500 * 3200总处;
按照
java -jar xx.jar width height width,height_width,height
上述格式即可狈惫。
到此,我們通過編寫一個(gè)工具鹦马,根據(jù)某基準(zhǔn)尺寸胧谈,生成所有需要適配分辨率的values文件,做到了編寫布局文件時(shí)荸频,可以參考屏幕的分辨率菱肖;在UI給出的設(shè)計(jì)圖,可以快速的按照其標(biāo)識(shí)的px單位進(jìn)行編寫布局旭从∶镒遥基本解決了適配的問題。