Android 资源匹配过程详解

本文详细探讨了Android应用程序中资源匹配的过程,解释了如何根据设备特性选择最佳资源。介绍了资源标签属性的优先级,如MCC/MNC、语言和地区、最小宽度、可用宽度和高度、屏幕大小等,并通过实例展示了匹配过程的两个阶段,帮助开发者更好地理解和适配多种设备。
摘要由CSDN通过智能技术生成

  针对大多数APK应用程序,开发人员都会提供各种不同的资源。比如对于同一张图片image.png,我们通常会提供高分辨率,中分辨率和低分辨率三个版本。

res/
    drawable/
            image.png
    drawable-hdpi/
            image.png
    drawable-mdpi/
            image.png
    drawable-ldpi/
            image.png

它们都必须以相同的名字存储在各个drawable目录下。当应用程序运行时,系统会根据当前设备的实际分辨率来选择最佳的资源。

那么系统运行时如何动态选择最合适的资源来使用呢?

理解最佳资源的匹配过程至少有两个好处:

  1. 当设计应用程序时,我们可以有针对性地提供正确的资源。
  2. 对于适配多种设备有重要的指导意义。

资源标签属性及优先级

  理解最佳资源匹配过程之前,我们先来看一下资源标签的属性和优先级。所谓优先级顺序指的是Android规定的资源标签属性的优先级。
  其实除了分辨率外,同种资源之间还可以有下面许多资源属性标签,它们在匹配过程中是有优先级顺序的。

以下资源标签修饰语按照优先级从高到低的顺序排列

  • MCC和MNC

      MCC(Mobile Country Code)和MNC(Mobile Network Code)是网络运营商的全球唯一编号。其中MCC指国家码,MNC指网络号。
    例如,MCC-310属于美国,MCC-460属于中国。460-00代表中国移动,460-01代表中国联通。一般情况下,SIM卡中存有此卡的主归属地。
      用作资源标签时,可以同时使用MCC和MNC 组合,也可以只使用MCC。例如,mcc460,mcc460-mnc00。程序编码时,可以使用Configuration类中的mcc和mnc属性来获取当前设备的这两个值。

  • 语言和地区

      Android系统采用ISO 639-1国际语言码,由两个字母组成。地区代码遵循3166-1-alpha-2标准执行,也由两个字母组成,是可选的。如何组合使用需要加”r”.例如en表示英语,fr表示法语,en-rUS表示英语和美国地区。程序中可以通过Configuration类的locale属性值来获取当前设备的语言地区信息。

  • 最小宽度(Smallest Width)

    格式为 sw<N>dp
    例如用res/layout-sw600dp来标志自己的布局资源,相当于告诉系统,屏幕的可显示尺寸必须在任何时刻都大于600dp(不管横屏还是竖屏)ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值