做Android開發(fā),一直會(huì)被問及到或者討論一個(gè)問題,關(guān)于屏幕適配的做法,如何做才是最好。我們?cè)囘^按照擺放組件,試過創(chuàng)建不同屏幕對(duì)應(yīng)的資源文件夾,這些或多或少都在一定程度上優(yōu)化了適配的問題。但是問題也是有的,android的手機(jī)屏幕計(jì)算尺寸的單位是dp,而一般設(shè)計(jì)師童鞋標(biāo)注的尺寸都是px,按照百分比來布局,要去不斷的換算對(duì)應(yīng)的關(guān)系,而且還依賴父容器。如果按照不同資源文件方式來適配,但是大量的文件夾以及android開源造成的各種想象不到的屏幕尺寸需要去對(duì)應(yīng),你可能不會(huì)瘋,我會(huì)瘋掉的。
后來在同事的介紹下使用了Autolayout,感覺這個(gè)輪子在一定程度上是一個(gè)神器,它很大程度上的解決了適配的問題。下面記錄介紹一下它的使用方法。
原理:就是把你不想做的px和dp換算過程交給這個(gè)輪子來計(jì)算(原理這東西都是簡(jiǎn)單的跟一加一等于三一樣)
目的:拿到UI設(shè)計(jì)圖,在處理對(duì)應(yīng)的布局文件時(shí),之間按照UI效果圖上標(biāo)注的px尺寸寫進(jìn)xml文件中,通過Autolayout自動(dòng)達(dá)到多屏幕的適配,讓你爽歪歪~
用法:
1、引入架包:一種下載Autolayout的開源庫(kù),或者在gradle中
dependencies {
compile project(':autolayout')
}
其代碼結(jié)構(gòu)如下:
自動(dòng)適配了FrameLayout、LinearLayout、RelativeLayout等常用容器。
在你的項(xiàng)目的AndroidManifest中注明你的設(shè)計(jì)稿的尺寸。
2、對(duì)應(yīng)的Antivity繼承AutoLayoutActivity,然后就可以開始愉快的玩耍了~
妥妥的~~~~
AutoLayoutActivity的用法實(shí)際上是完成了一件事:
LinearLayout -> AutoLinearLayout
RelativeLayout -> AutoRelativeLayout
FrameLayout -> AutoFrameLayout
如果繼承AutoLayoutActivity來使用,那么你就得像Google的百分比庫(kù)一樣,去用AutoXXXLayout代替系統(tǒng)原有的XXXLayout。當(dāng)然,你可以放心的是,所有的系統(tǒng)屬性原有的屬性都會(huì)支持,不過根布局上就不支持px的自動(dòng)百分比化了,但是一般根布局都是MATCH_PARENT,而上述的方式,根布局也是可以直接px的百分比化的。
需要注意的幾個(gè)點(diǎn):
對(duì)于listview中g(shù)etview中的view,因?yàn)闆]有繼承AutoLayoutActivity,所以沒有辦法自動(dòng)進(jìn)行適配,所以可以借助其:AutoUtils.autoSize(convertView);方法,來完成適配。
當(dāng)然了,這個(gè)不是最詳細(xì)的解釋說明,因?yàn)檩喿硬皇俏野l(fā)明的,我只是一個(gè)使用者,寫下來也算是對(duì)自己掌握知識(shí)的一個(gè)梳理。比較全面的傳送門如下:
http://blog.csdn.net/lmj623565791/article/details/49990941
http://blog.csdn.net/l970859633/article/details/51576534