一、什么是屏幕适配
屏幕适配:为一组资源指定配置特定的备用资源。通俗的来讲,即指为应用程序适配不同尺寸的设备。
二、屏幕适配规则
在 res/ 中创建以 <resources_name>-<config_qualifier> 形式命名的新目录。
- <resources_name> 是相应默认资源的目录名称。
- <qualifier> 是指定要使用这些资源的各个配置的名称。
您可以追加多个 。以短划线将其分隔。
注意:追加多个限定符时,必须按照表中列出的相同顺序放置限定符。如果限定符的顺序错误,则该资源将被忽略。
配置 | 限定符值 | 描述 |
---|---|---|
MCC 和 MNC | 示例:mcc310 mcc310-mnc004 mcc208-mnc00 等等 | 移动设备国家代码 (MCC),(可选)后跟设备 SIM 卡中的移动设备网络代码 (MNC) |
语言和区域 | en、fr、en-rUS | 语言通过由两个字母组成的 ISO 639-1 语言代码进行定义,可以选择后跟两个字母组成的 ISO 3166-1-alpha-2 区域码(前缀用小写字母 r) |
布局方向 | ldrtl、ldltr | 应用的布局方向。ldrtl 是指“布局方向从右到左”。ldltr 是指“布局方向从左到右”(默认的隐式值) |
smallestWidth | swdp 示例:sw320dp、sw600dp、sw720dp等等 | 屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。具体而言,设备的 smallestWidth 是屏幕可用高度和宽度的最小尺寸(您也可将其视为屏幕的“最小可能宽度”)。无论屏幕的当前方向如何,您均可使用此限定符确保应用界面的可用宽度至少为 <N> dp。 |
可用宽度 | wdp 示例:w720dp、w1024dp等等 | 指定资源应使用的最小可用屏幕高度(以“dp”为单位,由 <N> 值定义)。当屏幕方向在横向和纵向之间切换时,此配置值也会随之变化,以匹配当前的实际高度。 |
屏幕尺寸 | small、normal、large、xlarge |
|
屏幕纵横比 | long、notlong |
|
圆形屏幕 | round、notround |
|
广色域 | round、notround | |
高动态范围 (HDR) | highdr、lowdr | |
屏幕方向 | port、land | |
界面模式 | car、desk、television、appliance、watch、vrheadset | |
夜间模式 | night、notnight | |
屏幕像素密度 (dpi) | ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi、nodpi、tvdpi、anydpi、nnndpi | |
触摸屏类型 | notouch、finger | – |
键盘可用性 | keysexposed、keyshidden、keyssoft | — |
主要的文本输入法 | nokeys、qwerty、12key | |
导航键可用性 | navexposed、navhidden | — |
主要的非触摸导航方法 | nonav、dpad、trackball、wheel | — |
平台版本(API 级别) | 示例:v3、v4、v7等等 | – |
三、限定符命名规则
以下是一些关于使用配置限定符名称的规则:
- 您可以为单组资源指定多个限定符,并使用短划线分隔。例如,drawable-en-rUS-land 适用于屏幕方向为横向的美国英语设备
- 这些限定符必须遵循表中列出的顺序。例如:
- 错误:drawable-hdpi-port/
- 正确:drawable-port-hdpi/
- 不能嵌套备用资源目录。例如,您的目录不能为 res/drawable/drawable-en/。
- 值不区分大小写。在处理之前,资源编译器会将目录名称转换为小写,以免不区分大小写的文件系统出现问题。名称中使用的所有大写字母只是为了便于认读。
- 每种限定符类型仅支持一个值。例如,若要对西班牙语和法语使用相同的可绘制对象文件,则您不能拥有名为 drawable-rES-rFR/ 的目录,而是需要两个包含相应文件的资源目录,如 drawable-rES/ 和 drawable-rFR/。
四、总结
文章中存在错误或不妥之处,请各位看官留言斧正,谢谢!
参考:https://developer.android.google.cn/guide/topics/resources/providing-resources