關於手機分辨率相關術語和概念 android
屏幕尺寸:實際的物理尺寸,屏幕的對角線測量。爲了方便,android把全部的屏幕尺寸分爲了4個廣義的大小:小,正常,大,特大。 api
屏幕密度:屏幕的物理面積內像素的數量,一般稱爲DPI(每英寸點數)。爲了方便,android把全部的實際屏幕密度分爲:低,中,高,特高。 佈局
方向:從用戶的角度來看,就是屏幕的方向,就是橫向或者縱向的意義。 spa
分辨率:屏幕上面的物理像素總數。(官方說法,應用程序應該只關注屏幕大小和密度) .net
密度無關像素: 一個虛擬像素單元(官方說法,你應該使用密度無關像素定義UI的佈局,來表達佈局尺寸或位置,系統默認假設「中等」的密度屏幕爲基準,其屏幕密度至關於一個160dpi的屏幕。在運行時,系統根據實際中的屏幕密度對DP單位進行縮放。DP單位轉換爲屏幕像素可用PX = DP *(DPI / 160)這個方法。那麼在一個160dpi屏幕上,1DP==1PX。在一個240 dpi屏幕上,1 DP==1.5PX。那麼在定義佈局時,應該使用DP單位,以確保不一樣密度的屏幕上合理的顯示用戶界面) 設計
關於支持屏幕的範圍 orm
官方定義4種廣義尺寸:小,正常, 大,更大。四種密度:低,中型, 高,特高。廣義尺寸和密度均可以跨越一系列的尺寸和密度(官方截圖上傳不了權限不夠一週<img title=」[android 屏幕適配]關於android分辨率兼容問題(一)[轉]」 src=」http://static.blog.csdn.net/xheditor/xheditor_emot/default/wronged.gif」 alt=」委屈」 />) blog
關於密度的獨立性 圖片
官方說法保證密度的獨立性是很是重要的,若是沒有它,你應用程序中的系統控件可能會在物理尺寸相同,密度不一樣的屏幕上面顯示異常。 資源
Android系統幫助密度獨立有兩種方式:
1.使用DP單位。
2.位圖資源縮放,能夠致使像素模糊的位圖,能夠根據當前屏幕密度,提供不一樣分辨率的位圖。官方提示,若是提供一套圖至少提供更高分辨率高密度的位圖而不是提供哪些中等密度設計的位圖。
關於如何支持多個屏幕
官方說法確保系統在適配多個屏幕作了不少工做,可是爲了更妥善處理不一樣的屏幕配置,咱們也須要作些工做:
1.在程序中顯示聲明你的應用程序支持屏幕尺寸的清單。
<span style=」font-family:KaiTi_GB2312;font-size:16px;」>
android:resizeable=[「true」|」false」]
android:smallScreens=[「true」|」false」]
android:normalScreens=[「true」|」false」]
android:largeScreens=[「true」|」false」]
android:xlargeScreens=[「true」|」false」]
android:anyDensity=[「true」|」false」]/></span>
2.根據不一樣屏幕尺寸,提供不一樣佈局
默認狀況下面,android會自動調整應用程序的佈局,可是大多數狀況下面,根據廣義尺寸,小,正常,大,更大去增長不一樣的佈局資源。好比,若是須要對大小爲large的屏幕提供支持,須要在res目錄下新建一個文件夾layout-large/並提供layout。固然,也能夠在res目錄下創建layout-port和layout-land兩個目錄,裏面分別放置豎屏和橫屏兩種佈局文件,以適應對橫屏豎屏自動切換。
3.提供不一樣的屏幕密度和不一樣的位圖drawables
默認狀況下面系統會自動調整和縮放位圖,可是不免拉伸位圖,爲了保證你的位圖是最好看的,根據廣義密度,低,中型, 高,特高去添加不一樣的位圖資源。好比,如需對密度爲low的屏幕提供合適的圖片,需新建文件夾drawable-ldpi/。應儘可能使用點9格式的圖片,圖片大小的肯定:low:medium:high:extra high比例爲3:4:6:8。舉例來講,對於中等密度(medium)的屏幕你的圖片像素大小爲48×48,那麼低密度(low)屏幕的圖片大小應爲36×36,高(high)的爲72×72,extra high爲96×96。
關於系統怎麼動態的尋找替代資源?
1.系統根據當前的屏幕大小和密度,而後動態的採用程序中提供特定的資源。
2.若是沒有匹配的資源,系統會使用默認的資源進行縮放從而符合當前屏幕的資源,「默認」的資源是那些沒有標籤配置限定符。
(這塊只是簡單的說法,詳細關於介紹尋找替代資源下章在說吧)
關於系統的資源配置的目錄(我只列出一些大概,默認項目會有一些資源配置目錄)
Android系統支持多配置資源文件,咱們能夠追加新的資源目錄到你的Android項目中。命名規範: 資源名字-限制符
注:若是沒有指定橫屏或豎屏,則上面的佈局和位圖都適配橫豎屏。若是要指定橫屏,例如: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。
建議你們多看文檔,官方說明:
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這個資源佈局文件。