Android屏幕適配
來自: http://my.oschina.net/reborn87/blog/610406
關于屏幕適配,建議大家先看看一下幾篇大神的文章,相信會對適配有一個很詳細的了解:
看完以上五篇之后,講講在我的項目中是如何進行屏幕適配的:
其實我也是第一次做適配,也想使用最簡單的方式(AutoLayout),只可惜集成之后,不見效果,于是乎就只好求其次,使用第二篇文章講述的方式,該方式幾乎能匹配上市面上所有的手機,當然也會在個別手機上出現問題,譬如魅族以及底部含有虛擬按鍵的手機(主要是HTC)。
其實出現問題的原因,在于沒有找到對應的value文件夾,于是就找了一個接近的(匹配規則可查看:Android屏幕適配-資源文件夾命名與匹配規則)湊合,具體找了哪一個,這個真不好說,于是采用笨方法:刪除后添加的所有value文件夾及文件(首先做好備份),只保留默認的value文件夾,然后將認為可能的value文件夾中的文件丟到默認文件夾中,生成新的安裝包查看效果。這樣測試要測試到猴年馬月,于是繼續Google,最后發現這些失真都是因為底部虛擬按鍵的原因,導致匹配value文件夾的時候不會找對應的value文件夾,譬如:1920x1080屏幕,按道理屏幕適配的是,會自動尋找values-1920x1080目錄,但實際上并非如此,那么針對這樣情況該如何處理,其實重新生成一份values文件夾即可,不過高度不能再是1920,得剪去底部虛擬按鍵的高度,重新生成的value文件為values-1620x1080
,對于底部虛擬按鍵的高度,也沒詳細研究,我是這樣計算的1280->200,按照這樣比例計算,1920->300。
被屏幕適配折磨幾天,最后總算搞定,一邊嘗試一邊摸索,也得感謝各位大佬無私分享自己的經驗,讓自己少走一些彎路。
ps:對于高度的設置,有人認為直接使用@dimen/x...就可以,但這樣在有底部導航欄的時候就會出現問題,該適配主要是高度引起變化,因此此時的寬高不在是正常屏幕的寬高了,所以建議設置高度的時候,還是寫成如下:
android:layout_height="@dimen/x450"(不建議使用)
android:layout_height="@dimen/y450" (建議使用)
對于如何生成values文件,相應的jar下載鏈接:https://github.com/hongyangAndroid/Android_Blog_Demos/tree/master/blogcodes/src/main/java/com/zhy/blogcodes/genvalues
運行指令:java java -jar autolayout.jar 1440 2560 1080,1920_768,1280 (紅色標記的是你的原型圖的寬高,也可稱作values文件的基準屏幕)