若是你的開發環境的sdk版本是android3.2以及以上的版本即可以用這個sw屬性對設備進行區分。600dp的含義是:表明這個設備的最短的那一邊。以我手上的平板爲例(分辨率是1024x720,密度是1)。求這個設備的最短邊。可能有人說是720。這個答案是不正確的。答案是768,這個答案隨着設備不一樣而不一樣。 獲取設備的最短邊的代碼是:android
Configuration config = getResources().getConfiguration();
int smallestScreenWidth = config.smallestScreenWidthDp;
複製代碼
這樣就獲取了設備的最短邊了。這個時候拿smallestScreenWidth 與600想比較就能夠知道該設備可否讀取裏面的資源了。api
先解釋幾個概念:bash
即每英寸像素全部的android設備都會被分紅120(low)、160(medium)、240(high)、320(xhigh)四種,後來隨着市場上android設備愈來愈多,google官方又增長了213(Added in API level13),480(Added in API level16),640(Added in API level18),三種dpi。好比320x240分辨率的屏幕物理尺寸2英寸*1.5英寸,dpi=160;佈局
邏輯密度計算單位,與像素的換算方式爲px=dp*(dpi/160)。 在android3.2之前,全部的資源文件都有相應的xhdpi,hdpi,mdpi,ldpi四種文件來對應,android3.2之後,爲了提供更精準的對佈局文件的控制,能夠經過爲資源文件(res目錄下文件)增長後綴來指定該文件夾裏的xml佈局文件或color.xml,string.xml是爲哪一種大小的屏幕使用。google
如layout-sw600dp, values-sw600dp 這裏的sw表明smallwidth的意思,橫豎屏切換時較小的screenWidthDp。當你設備的smallestScreenWidth值大約N時,屏幕就會自動到帶sw600dp後綴的資源文件裏去尋找相關資源文件,每一個屏幕都是固定的,不會隨着屏幕橫向縱向改變而改變。spa
如layout-w600dp, values-w600dp 帶這樣後綴的資源文件的資源文件制定了getResources().getConfiguration().screenWidthDp大於Ndp的狀況下使用該資源文件,但它和swdp不一樣的是,當屏幕橫向縱向切換時,screenWidthDp是變化的,以變化後的寬度來與N相比,看是否使用此資源文件下的資源。code
如layout-h600dp, values-h600dp 這個後綴的使用方式和wdp同樣,隨着屏幕橫縱向的變化,屏幕高度也會變化,根據變化後的高度值來判斷是否使用hdp ,但這種方式不多使用,由於屏幕在縱向上一般可以滾動致使長度變化,不像寬度那樣基本固定,由於這個方法靈活性不是很好,google官方文檔建議儘可能少使用這種方式。xml