關於android屏幕自適應的個人心得


這是一些博主自己對安卓的屏幕自適應的理解,有什么不到之處也別噴。

 

  首先,觀察新建的項目res文件夾,大家估計都能找到drawable文件夾有很多個,如drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi,這些文件夾是谷歌公司為屏幕自適應做的准備,意思說各位朋友在做屏幕自適應之前應該准備5套資源圖片來出來該問題。相應的比例關系大概是 1 : 0.5 : 0.75 : 1.5 : 2 ,而現在大部分4.0的機子不再適用於240*320和320*480的屏幕了,而轉向如480*800、720*1280等一些更大的屏幕所以作圖可以只做1  : 1.5  : 2 即可。

  介紹問drawable文件夾下來該說說values文件夾了,同樣讀者可以看到也是對應的有許多類似文件夾(如果沒有手動新建也是可以的),values 、values-large、values-xlarge等,這些文件夾的作用也是為了自適應屏幕大小而准備的。其中重要的一個文件就是dimens。

  還有就是layout多個文件,詳細讀者應該都熟悉這些文件夾的作用,這里不再細細解讀。

  好了現在手里可用的資源就是上面介紹的,進入正題。

  博主在處理屏幕自適應的問題上想到了三種(1)多套layout布局(建議使用頻率降低)、(2)多套圖和多套dimens配合使用,(3)多套布局、多套圖、多套dimens混合使用。

  方法一:

  建立layout、layout-large、layout-xlarge三個文件夾(如果還想適應240*320和320*480的話還可以建立layout-small、layout-middle),假設layout文件夾下新建一個test.xml的文件,定義該文件下所有的數量值基准為1,所有的控制大小、間距、填充的量值全部寫死,比如padding10、margin10,layout_width=100等。在layout-large文件夾下,也新建一個文件命名與layout下的文件同名也叫test.xml,但是該文件的量值應該全部是layout文件夾下量值的1.5倍,這樣大屏的適配就基本算是完成了。依葫蘆畫瓢也可以完成超大屏的適配。完成之后再做檢查,將集中不合適的量值修改即可完成粗略的屏幕自適應。等到項目在真機上跑起來的時候,安卓系統會根據當前屏幕大小來決定,那一套layout資源在屏幕上顯示。如果想划分得更細讀者還可以建立多個layout資源文件,在原基准之上添加1.15、1.25、1.35、1.45倍數的layout布局。這樣屏幕自適應越趨於完美,只能說無限接近完美,而達不到完美。這種方法理解起來相對並不困難,就是處理的布局較多時,此方法帶來的工作量就會成幾何級的速率增長,建議慎用。

 

 

 

 

 

 

 

 

 

 

 

  方法二:一套layout布局,多套量值適應

  這種方法操作就相對簡單了,以做出一套layout布局來適應480*800的屏幕也就是說,適應基准屏幕即可,但是其中所有的例如padding、margin、width、height、textsize就不能寫死了,全部變為引用值,引用值在values文件夾下的dimens中建立,dimens文件里面可以定義尺寸和字體大小,例如官方給出的例子                <dimen name="activity_horizontal_margin">16dp</dimen> 定義的尺寸。values文件夾下的dimens文件對應的基准設為1,相應的其他dimens對應的為1.5和2 。例如在values-large下的dimens文件內定義<dimen name="activity_horizontal_margin">24dp</dimen>、在values-xlarge下的dimens定義<dimen name="activity_horizontal_margin">32dp</dimen> 。這樣在layout布局下控件大小、padding、margin等的值應該寫成例如android:layout_width="@dimen/activity_horizontal_margin"這樣的形式,就是引用了一個變量來作為控件的寬度,目的是讓安卓系統自己去判斷該怎么顯示。這個方法是博主之前用的方法,效果還不錯。下面給出圖示:

  這是values目錄下的dimens,定義了許多字體大小

下面是在values-lagre下定義的字體大小

下面是在values-xlarge下dimens中字體帶下的定義

可以看出名稱沒有變化,只是量值發生了變化,這樣就可以大概結局屏幕自適應的問題,其他一些需要改動的另行設置即可。

  方法三:混合使用

  在前兩種方法的基礎之上,部分做多布局,部分做多變量,這樣可以最大程度的解決自適應的方法,就是在做的過程中需要時刻抓住該怎樣的界限,這個方法博主也在嘗試,不過完全可以預期此方法的好處。

  總結,以前經常看到一些文章提到了屏幕密度,屏幕尺寸的問題,博主感覺應該是把問題復雜化而后扯遠了。只要跟着谷歌公司的意圖來做,應該不會出太大的意外。好了時間不早了,洗洗睡吧,有問題請留言。勿噴!!!

 

 

 

QQ群號433409373 ->老夫在此等候小伙伴一起學習探討交流~~~共建學習平台php初學者

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM