Android Values 资源匹配规则

一、Android 资源匹配原则  
  

      在运行时,Android系统会根据当前的设备设置自动寻找合适的资源。为不同的设备提供不同的资源,主要是利用特殊命名的资源文件夹来实现的。  


  
二、资源文件命名

 
1. Android工程res目录下资源文件的命名格式:  


资源名-属性1-属性2-属性3-属性4  
  


资源名的取值有:drawable, values, layout, anim, raw, menu, color, animator等  
  
各属性的位置顺序必须遵守优先级从高到低排列,否则编译不过。以资源文件values为例,各属性按优先级从高到低的排序为:  


values-mcc310-en-sw320dp-w720dp-h720dp-large-long-port-car-night-ldpi-notouch-keysexposed-nokeys-navexp osed-nonav-v7  


2、属性说明:  


values-mcc310(sim卡运营商)-en(语言)-sw320dp(屏幕最小宽度)-w720dp(屏幕最佳宽度)-h720dp(屏幕最佳高度)-la rge(屏幕尺寸)-long(屏幕长短边模式)-port(当前屏幕横竖屏显示模式)-car(dock模式)-night(白天或夜晚)-ldpi(屏幕最佳dpi)-notouch(触摸屏模类型)-keysexposed(键盘类型)-nokey(硬按键类型)-navexposed(方向键是否可用)-nonav (方向键类型)-v7(android版本)

三、资源文件匹配  


- 匹配是从最高优先级别的属性开始,排除跟系统配置不同的资源文件,而不是优先选择匹配到的属性数量最多的资源文件,例如:系统配置为values-en-normal-hdpi的手机,values-en匹配比vaues-normal-hdpi更合适。

- 对于属性是屏幕大小 (screen size),系统的匹配规则是"向下最佳匹配",即如果找不到能跟当前屏幕匹配的资源,比当前更小的屏幕的资源就会被使用(比如,一个large-size屏幕将会在必要的时候使用normal-size屏幕的资源文件) 如果唯一可选的资源比当前的屏幕大,系统不会使用它们并且你的程序会崩溃。  


- 如果属性是屏幕像素密度dpi (device screen density),Android会选择最接近屏幕像素密度的一个,匹配规则如下图,可根据后面的测试结果对比。(Android比较偏向于将原始的大图片缩放成小的图片)。  


- 如果属性是分辨率 (如 480×800 ),向下读取与它最为接近的适配文件(即使向上会找到更为接近的,也取向下找到的结果)。  


- 多属性混合时,匹配的信息越详细,优先级越高. 假设现有一台手机的分辨率为 1080×1920 (xxhdpi),应用程序包含资源文件:

values,values-1080×1920,values-xxhdpi,values-xxhdpi-768x1280,values-hdpi-480x80 0,values-xxhdpi-1080x1920.

读取时这些资源文件的优先级为:

values-xxhdpi-1080x1920 > values-xxhdpi-768 x1280> values-xxhdpi > values-hdpi-480x800, values-1080x1920 > values

符合向下读取最接近的分辨率,并且其提供的信息相对于values-xxhdpi更加详细

参考链接:Android中values文件的使用 android values匹配规则_mob6454cc745a10的技术博客_51CTO博客

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值