一.劃分手機和平板
人為判斷方法:
大於6英吋的就是平板。小於6英吋的都是手機
平板尺寸:
6英吋、7英吋、10英吋、14英吋…
android系統支援多配置資源檔案,我們可以追加新的資源目錄到你的android專案中。命名規範: 資源名字-限制符
layout/drawble資料夾 說明
layout 預設中等螢幕
layout-small 小螢幕
layout-large 大螢幕
layout-xlarge 特大螢幕
layout-land 橫屏
layout-port 豎屏
drawable 預設中等密度
drawable-hdpi 高密度 240dpi
drawable-mdpi 中等密度 160dpi
drawable-xhdpi 更高密度 ~320dpi
drawable-nodpi 所有密度資源,無論什麼密度螢幕都會適配
drawable-tvdpi 介於mdpi~hdpi 約213dpi 主要應用在電視
官方說明:
xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
上面是定義廣義大小布局資源適配的乙個範圍,大家可以根據自己的裝置知道系統會匹配那個檔案的布局。
如果手上有個山寨華為的賣的比較火的mediapad,大家知道解析度1280*800 密度尺寸7寸
通過勾股定了和解析度可以得出其密度為215.69。然後根據dp=px/(dpi/160),可以得出個範圍593.471。所以這個裝置系統會匹配layout-large這個資源布局檔案。
注:如果沒有指定橫屏或豎屏,則上面的布局和點陣圖都適配橫豎屏。如果要指定橫屏,例如:drawable-land-hdpi豎屏drawable-port-hdpi,還有關鍵是drawable-xlarge和layout-xlarge,對api level都要求在9之上,等於說,你用android2.2系統的平板或者手機根本不匹配layout-xlarge。因為api level是8。drawable-tvadpi這個api等級需要13以上。
layout-large這個目錄其實是個範圍。當系統根據當前螢幕的大小和密度,決定程式應該匹配那個目錄。你也可以單獨定製某些不符合谷歌標準的山寨版layout-l024x600(中間的符合是英文下的x字母),其中1024和600的單位是dp。你可以根據你裝置的解析度和密度,來判斷你的裝置需要定義那個檔案。
但是,官方推薦使用尺寸來表示資源layout-large,不推薦使用解析度layout-1024*600
運用場景:
為了同時適配手機和平板。
我們在res/目錄下建立,layout-large和layout的package,然後我們可以建立乙個與layout下相同的activity_main.xml檔案
,系統就會根據螢幕解析度匹配指定的layout中的xml
二.平板-tablet
android手機系統是2.x,4.x,5.x等,但是android系統的tablet裝置是從3.0開始的,且3.x系統只有平板才有。android3.0是專門為平板服務的系統。但是從4.0以後,看起來能執行於手機的也同樣能執行於平板。但是,如果使用手機適配的方法用於平板是不可行的。通過查詢google文件可知,android平板的適配要使用限定符sw***dp。
原因:手機螢幕的適配是根據資源限定符value-mdpi-***或者value-ldpi-***。在values資料夾下的dimens檔案裡沒有預設值也沒有關係,系統會最匹配原則。但是tablet裝置資源查詢的限定符不是mdpi、ldmpi這樣的限定符。而是sw***dp限定符查詢。所以如果使用手機螢幕適配的方法來適配,系統不認識mdpi資料夾下的尺寸,會去找values資料夾下的dimens檔案裡的尺寸。沒有找到sw***dp也沒有找到預設尺寸,就會報資源找不到異常。
三.螢幕尺寸限定符sw
對於android3.0的平板,宣告平板tablet的正確方式是將資源放在有xlarge配置限定符的目錄,本質上是使用螢幕尺寸限定符,例如res/layout-xlarge/。為適應多螢幕尺寸,android3.2引入了更具體的螢幕尺寸指定資源的方式。
裝置tablet在3.0系統時可以使用螢幕限定符small、normal、large、xlarge等命名備用資源,從3.2以後,tablet使用新的限定符smallestwidth,限定符值為swdp。
選擇乙個寬度並將其設計為最小尺寸(基本上這個最小寬度要跟ui溝通好,可用ui的設計基準作為最小寬度),或者在布局設計玩完成後測試其支援的最小寬度。
swdp:最小寬度限定符。
例如:(取兩個尺寸的最短者)
裝置1024x480mdpi=sw480dp
裝置1024x600mdpi=sw600dp
裝置480x600mdpi =sw480dp
裝置480x640mdpi=sw480dp
裝置2560x1440mdpi=sw1440dp
sw480dp:中間平板電腦,例如streak(480x800mdpi)
sw600dp:7英吋平板電腦(600x1024mdpi)
sw720dp:10英吋平板電腦(720x1280mdpi、800x1280mdpi等)
下面附上android中解析度,dpi,dp與px對應關係
| 寬×高(標準值)| 240×320| 320×480| 480×800|720×1280|1080×1920|1440×2560|
| ------------- |:-------------? -----?
| dpi等級 | ldpi | mdpi| hdpi|xhdpi|xxhdpi|***hdpi|
|dpi數值|120|160|240|320|480|640|
|對應比例|3|4|6|8|12|16|
|1dp=?px|0.75|1|1.5|2|3|4
綜上得出:
***pi/160=px 比如ppi=240,19201200的swdp=sw(1200/(240/160))=sw800dp
例子:layout-sw600dp、layout-w600dp和layout-h600dp的區別
一、layout-sw600dp
這裡的sw代表smallwidth的意思,當你的螢幕的絕對寬度大於600dp時,螢幕就會自動呼叫layout-sw600dp資料夾裡面的布局。
注意:這裡的絕對寬度是指手機的實際寬度,即與手機是否橫屏沒關係,也就是手機較小的邊的長度
二、layout-w600dp
當你的螢幕的相對寬度大於600dp時,螢幕就會自動呼叫layout-w600dp資料夾裡面的布局。
注意:這裡的相對寬度是指手機相對放置的寬度;即當手機豎屏時,為較小邊的長度;當手機橫屏時,為較長邊的長度。
三、layout-h600dp
與layout-w600dp的使用一樣,只是這裡指的是相對的高度。
當你的螢幕的相對高度大於600dp時,螢幕就會自動呼叫layout-w600dp資料夾裡面的布局。
注意:這裡的相對高度是指手機相對放置的高度;即當手機豎屏時,為較長邊的長度;當手機橫屏時,為較小邊的長度。但這種方式很少使用,因為螢幕在相對高度上,即在縱向上通常能夠滾動導致長度變化,而不像橫向那樣基本固定,因而這個方法靈活性差,google官方文件建議盡量使用這種方式,這裡的單位必須是dp單位。資源使用「最小寬度限定符」swdp用於指定螢幕兩邊的最小值,而不管裝置當前的方向如何。因此使用swdp是指定 布局可用於整體螢幕尺寸的簡便方法,它會忽略螢幕的方向。ps:當橫豎屏切換時,width和height值也會交換。。
總結:
Android適配手機與平板螢幕尺寸
人為判斷方法 大於6英吋的就是平板。小於6英吋的都是手機 平板尺寸 6英吋 7英吋 10英吋 14英吋 android系統支援多配置資源檔案,我們可以追加新的資源目錄到你的android專案中。命名規範 資源名字 限制符 layout drawble資料夾 說明layout 預設中等螢幕 layou...
Android 適配不同螢幕 手機,平板
如果程式能夠根據裝置的解析度或者螢幕的大小在執行時來決定載入那個布局,那我們發揮的空間就更多了。因此本節我們就來 android中動態載入布局,限定符的使用 為了同時適配手機和平板。我們在res 目錄下建立,layout large的package,然後我們可以建立乙個與layout下相同的acti...
Android多屏適配
螢幕分類 android1.6以上 xlarge 至少960dp 720dp large 至少640dp 480dp normall 至少470dp 320dp small 至少426dp 320dp android3.2以後以上定義被廢棄,取而代之採用的是 xhdpi hdpi mdpi ldpi...