1.dp是什麼?為什麼要用dp
2.drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxdpi是什麼?
3.layout-large、layout-xlarge、layout-xxlarge 、values-w820dp是什麼?為什麼我看到別人的**裡有這些東西。
1.首先要解決這些問題首先要了解px(pixel),dpi(dots per inch),dp/dip(device independent pixels ),是什麼,以及他們之間的聯絡。
1.1 px想必大家都清楚,就是顯示裝置的乙個畫素點。
1.2 dpi(dots per inch)
如果直譯的話就是每英吋長度有多少個畫素點,也就是畫素點的密度,通常自從iphone4賈伯斯提出視網膜屏(326ppi)的概念後以後中國的手機廠商會經常提到ppi(pixels per inch)畫素密度,我記得魅族mx4 pro的ppi值都超500了,也就是說一英吋(2.54cm)的長度就會需要500多個畫素點來連線,所以我現在很驚嘆現在的工業製造水平。(暫且說ppi和dpi的區別現在可以認為他們是乙個意思)。
1.3 dp/dip(device independent pixels)裝置非關聯先畫素(單位)
可以這樣認為:這是乙個和裝置沒有關係的長度單位,是乙個虛擬的長度單位,android用他來避免和消除使用同樣的長度在不同的裝置上顯示效果差異過大。其和px以及dpi的轉換關係為dp = px/(dpi/160) 他是以160dpi為基準來將畫素轉換為dp值,可以說在160dpi的螢幕如果用px做單位和用dp做單位效果是相同的。
下面為幾張例項圖便於理解dp/dip
可以看到不同螢幕密度的螢幕下px和dp的顯示效果是不同的。只有160(mdpi)下px和dp顯示效果相同。160px在各個螢幕上長度只能為160px,但是160dp在三個不同
的螢幕上分別代表(利用公式px= dp*(dpi/160))160*(160/160) =160px,160*(240/160)=240px,160*(320/160)=320px
但是為什麼說有了dp/dip可以消除或者避免同乙個尺寸在不同螢幕上效果差異過大呢?
首先句兩個例子
但是下面這個例子表現並不同於上面兩個
可以看到,320dp在寬度為720畫素螢幕畫素密度為320ppi時並沒有充滿螢幕。因為通過上面的公式px= dp*(dpi/160)可以得出此紅色矩形寬度為640px,而螢幕實際寬度為720px。
2.其次需要理解ldpi、mdpi、hdpi、xhdpi、xxdpi、***dpi
這6種型別的dpi為android抽象出的6種基準螢幕密度,他們的螢幕的密度分別為120dpi、160dpi、240dpi、320dpi、480dpi、640dpi。開發人員可以更具需要對相應的
螢幕尺寸進行適配。具體可以表現為將不同尺寸的放置於不同的drawable資料夾下,android會根據執行時的硬體選取相應的資源資料夾下的drawable檔案。
但是如果說乙個螢幕螢幕密度為326ppi,系統會怎麼選取不同drawable下的drawable檔案呢?android提供了乙個歸類的規範。如圖:
可以大致歸納出:螢幕密度的範圍和各種抽象的螢幕密度標準對應關係 ldpi =(0,120dpi] 、mdpi(120dpi,240dpi]/ hdpi(240dpi,320dpi]、xhdpi(320dpi,480dpi].
也就是說326dpi的螢幕會被android當做xhdpi來對待,會優先選擇drawable-xhdpi中的drawable檔案。
3.layout-large、layout-xlarge、layout-xxlarge怎麼理解?
類似的android將各種不同的寬度的螢幕也歸為small,normal,large,xlarge四種規範
我們可以按照官方
這幾種規範判來配置我們的layout檔案以及values內的檔案例如dimens.xml檔案
android螢幕適配
1 配置android應用程式適配在不同的手機上,需要在androidmanifest.xml檔案的manifest標籤中新增子元素 1 2 3 4 5 6 7 8 9 10 manifestxmlns android supports screens android smallscreens tr...
Android螢幕適配
在sdk中的幫助文件中。develpe training best practices supporting multiple screens 這裡有多屏適配的介紹。現做簡單記錄。screen size small 至少 426dp x 320dp normal 至少 470dp x 320dp l...
android螢幕適配
ui在不同的螢幕畫素或大小中顯示效果可能會不同 1 建議使用盡量使用線性布局和相對布局,基本上不會產生螢幕大小不適應的問題 2 設定控制項寬高的時候使用單位dip dp 是根據當前裝置大小比例計算出來的 3 文字設定盡量使用sp單位 4 盡量不使用px設定大小 畫素px和dip相互轉換工具,實現兩種...