Android 适配时资源限定符的说明

多说几句:

之前由于没有仔细研究适配,一直认为android不是有dpi么,只要保证mdpi等等的值设置好且正确就可以做到适配。但是在近期的项目中,需要适配平板和手机。计算了平板和手机,dpi都是属于xhdpi的,但是效果展示相差很大。还再纳闷,不是说dp可以自己根据屏幕大小调整适配么?经过查阅资料发现:在屏幕 尺寸相差不大的情况下,dp可以使不同分辨率的设备上展示效果相似。但是在屏幕尺寸相差比较大的情况下,dp就失去了这种效果。所以需要以下的限定符来约束,采用多套布局,数值等方式来适配。


原文地址:http://blog.csdn.net/wzy_1988/article/details/52932875

写的挺详细的。原作者辛苦了。但是为了方便查阅。我把重要的表格摘录出来了。有不明白的去查看原文。

在安卓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之后引入的,目前推荐使用的;

屏幕特性 限定符 描述
最小宽度限定符 sw<N>dp
例如sw600dp, sw720dp
屏幕的最小尺寸,就是屏幕可用区域的最小尺寸,是指屏幕可用高度或宽度的最小值(你可以默认是屏幕的最小宽度).你能用这个限定符确保,无论屏幕方向如何,这个限定符修饰下的布局需要的屏幕最小尺寸是Ndp.
例如,如果你的布局在运行时需要的最小屏幕宽度是600dp,则你可以利用这个限定符创建布局资源目录res/layout-sw600dp.只有当屏幕的最小宽度或最小高度是600dp时,系统才会使用这些布局文件或者资源文件.最小屏幕宽度是固定设备的特有屏幕尺寸,当屏幕方向发生变化时,设备的最小宽度值不变.
设备的最小宽度值要考虑屏幕的尺寸和系统UI.例如,如果在屏幕上有一些系统持久化UI元素,则系统的最小宽度值要比实现的屏幕尺寸小一些,因为这些系统的UI元素你的应用是无法使用到的.
当你使用之前的广义限定符是,你可以定义连续的一系列限定符.用最小宽度来决定广义屏幕尺寸是有意义的,是因为宽度是影响你UI设计的关键因素.UI在竖直方向上会经常滚动,但是在水平方向上往往是固定的布局.可见不论是适配手机或者平板,宽度往往都是布局的关键因素.因此,你需要关心你手机上的最小宽度值.
屏幕可用宽度 w<N>dp
Examples:
w720p
w1024p
指定资源使用时需要的最小宽度.当屏幕方向发生变化时,系统会调整这个值,使其始终为你UI显示的宽度.
这个属性经常被用来判断当前是否需要显示多屏布局,因为哪怕用户当前正在使用平板,你也可能不希望用户在平板竖屏时显示多个屏幕的布局样式.这时,你就可以使用这个限定符来标明你布局需要的最小宽度
屏幕可用高度 h<N>dp
Examples:
h720dp
h1024dp
etc.
标明资源使用时需要的最小高度.当屏幕发生旋转时,系统会自动选择当前大的一方作为高度值.大部分应用很少需要这个限定符,因此不做过多讲解

在不考虑屏幕方向只关注布局最小空间的前提下,使用sw<N>的方式更加简单.

例如:

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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值