android 资源限定符,Android 適配時資源限定符的說明

多說幾句:

之前由於沒有仔細研究適配,一直認為android不是有dpi么,只要保證mdpi等等的值設置好且正確就可以做到適配。但是在近期的項目中,需要適配平板和手機。計算了平板和手機,dpi都是屬於xhdpi的,但是效果展示相差很大。還再納悶,不是說dp可以自己根據屏幕大小調整適配么?經過查閱資料發現:在屏幕 尺寸相差不大的情況下,dp可以使不同分辨率的設備上展示效果相似。但是在屏幕尺寸相差比較大的情況下,dp就失去了這種效果。所以需要以下的限定符來約束,采用多套布局,數值等方式來適配。

寫的挺詳細的。原作者辛苦了。但是為了方便查閱。我把重要的表格摘錄出來了。有不明白的去查看原文。

在安卓3.2之下的適配  限定符

屏幕特性

限定符

描述

屏幕尺寸

small

小屏幕

normal

基准屏幕

large

大屏幕

xlarge

超大屏幕

屏幕密度

ldpi

<=120dpi

mdpi

<= 160dpi

hdpi

<= 240dpi

xhdpi

<= 320dpi

xxhdpi

<= 480dpi

xxhdpi

<= 640dpi(只用來存放icon)

nodpi

與屏幕密度無關的資源.系統不會針對屏幕密度對其中資源進行壓縮或者拉伸

tvdpi

介於mdpi與hdpi之間,特定針對213dpi,專門為電視准備的,手機應用開發不需要關心這個密度值.

屏幕方向

land

橫向

port

縱向

屏幕寬高比

long

比標准屏幕寬高比明顯的高或者寬的這樣屏幕

notlong

和標准屏幕配置一樣的屏幕寬高比

例如:

res/layout/my_layout.xml // layout for normal screen size ("default")

res/layout-large/my_layout.xml // layout for large screen size

res/layout-xlarge/my_layout.xml // layout for extra-large screen size

res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation

res/drawable-mdpi/graphic.png // bitmap for medium-density

res/drawable-hdpi/graphic.png // bitmap for high-density

res/drawable-xhdpi/graphic.png // bitmap for extra-high-density

res/drawable-xxhdpi/graphic.png // bitmap for extra-extra-high-density

res/mipmap-mdpi/my_icon.png // launcher icon for medium-density

res/mipmap-hdpi/my_icon.png // launcher icon for high-density

res/mipmap-xhdpi/my_icon.png // launcher icon for extra-high-density

res/mipmap-xxhdpi/my_icon.png // launcher icon for extra-extra-high-density

res/mipmap-xxxhdpi/my_icon.png // launcher icon for extra-extra-extra-high-density

android3.2之后引入的,目前推薦使用的;

屏幕特性

限定符

描述

最小寬度限定符

swdp例如sw600dp, sw720dp

屏幕的最小尺寸,就是屏幕可用區域的最小尺寸,是指屏幕可用高度或寬度的最小值(你可以默認是屏幕的最小寬度).你能用這個限定符確保,無論屏幕方向如何,這個限定符修飾下的布局需要的屏幕最小尺寸是Ndp.例如,如果你的布局在運行時需要的最小屏幕寬度是600dp,則你可以利用這個限定符創建布局資源目錄res/layout-sw600dp.只有當屏幕的最小寬度或最小高度是600dp時,系統才會使用這些布局文件或者資源文件.最小屏幕寬度是固定設備的特有屏幕尺寸,當屏幕方向發生變化時,設備的最小寬度值不變.設備的最小寬度值要考慮屏幕的尺寸和系統UI.例如,如果在屏幕上有一些系統持久化UI元素,則系統的最小寬度值要比實現的屏幕尺寸小一些,因為這些系統的UI元素你的應用是無法使用到的.當你使用之前的廣義限定符是,你可以定義連續的一系列限定符.用最小寬度來決定廣義屏幕尺寸是有意義的,是因為寬度是影響你UI設計的關鍵因素.UI在豎直方向上會經常滾動,但是在水平方向上往往是固定的布局.可見不論是適配手機或者平板,寬度往往都是布局的關鍵因素.因此,你需要關心你手機上的最小寬度值.

屏幕可用寬度

wdpExamples:w720pw1024p

指定資源使用時需要的最小寬度.當屏幕方向發生變化時,系統會調整這個值,使其始終為你UI顯示的寬度.這個屬性經常被用來判斷當前是否需要顯示多屏布局,因為哪怕用戶當前正在使用平板,你也可能不希望用戶在平板豎屏時顯示多個屏幕的布局樣式.這時,你就可以使用這個限定符來標明你布局需要的最小寬度

屏幕可用高度

hdpExamples:h720dph1024dpetc.

標明資源使用時需要的最小高度.當屏幕發生旋轉時,系統會自動選擇當前大的一方作為高度值.大部分應用很少需要這個限定符,因此不做過多講解

在不考慮屏幕方向只關注布局最小空間的前提下,使用sw的方式更加簡單.

例如:

res/layout/main_activity.xml #手機布局

res/layout-sw600dp/main_activity.xml #7寸平板布局

res/layout-sw720dp/main_activity.xml #10寸平板布局

再補充一點:

設備寬度的dp計算方法:

dp = 屏幕像素寬度/(屏幕像素密度/160)   160是基准屏幕像素密度    這個用來計算以上的sw后面的數值

通用公式:

dp = px/(dpi/160)

px = dp*(dpi/160)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值