安卓屏幕適配框架的較量 dp & 限定符 & autolayout & autosize
這裏講的是google自帶的dp適配、比較久遠的限定符適配、鴻神的autolayout、今日頭條的autosize,下面大家就一起來看看他們的效果吧:(僅單一維度測試,數值也可能不標準,僅供參考,大家不要較真哦)
爲了突出兩個模擬器之間的差異明顯,我們用的是1440*2560 和 480*800 分辨率的模擬器。下面所有圖片,左邊爲1440*2560分辨率的模擬器,右邊爲480*800分辨率的模擬器。
首先上一個參考值,px的效果:
可見此圖差異明顯,兩者都是100*100px的尺寸,也突出了px的特點:不同的設備不同的顯示屏顯示效果是相同的,這是絕對像素,是多少就永遠是多少不會改變。
接下來測試dp的效果:
dp的單位相對px來說就好一些,但是看起來還是能明顯看出差別的,dp是google提出的適配方案,但是面對衆多的機型,有時候也是不能滿足我們的適配需求。
然後下面是傳統的限定符適配方案,不多說,上效果:
這個很多兄弟們都用了好久,相當年我學安卓的時候就是用的這個,實際效果還是不錯的,不過對比着下面這些新新框架,它可能稍微就臃腫麻煩一些了。
下面首先是我們鴻神的AutoLayout, 上效果:
我們看到效果還是不錯的,他這個框架的使用實際上是將LinearLayout、RelativeLayout、FrameLayout進行的封裝,也就是說在每個佈局文件裏都需要用com.zhy.autolayout.AutoXXX來替代我們佈局組件,然後在內部寫px值就可以了。
最後是字節跳動的技術大佬提出的一套方案,autosize,進一步簡化了適配難度:
效果出來差距僅僅在4個單位,也是牛的一批,他這個框架只需要在清單文件裏標註
<meta-data android:name="design_width_in_dp" android:value="375" /> <meta-data android:name="design_height_in_dp" android:value="667" /> <meta-data android:name="android.max_aspect" android:value="2.4" /> <!-- 適配華爲(huawei)劉海屏 --> <meta-data android:name="android.notch_support" android:value="true" /> <!-- 適配小米(xiaomi)劉海屏 --> <meta-data android:name="notch.config" android:value="portrait|landscape" />
就okl了,甚是簡單。
那麼對比全部做完了,大國哥也要給大家一個課後題,你覺得哪個框架更好呢?
最後附上測試實踐項目的git地址: