Android 支持多种配置限定符,可让您控制系统 如何根据当前设备屏幕的特性选择备用资源。配置限定符是可以附加到 Android 项目中资源目录的字符串,用于指定在其中设计资源的配置。

要使用配置限定符:

  1. 在项目的res/目录中新建一个目录,并使用以下 格式命名: <resources_name>-<qualifier>
    • <resources_name>是标准资源名称(例如drawablelayout)。
    • <qualifier>是下表 1 中的配置限定符,用于指定 要使用这些资源的屏幕配置(例如hdpixlarge)。

    您可以一次使用多个<qualifier>— 只需使用短划线分隔每个 限定符。

  2. 将适当的配置特定资源保存在此新目录下。这些资源 文件的名称必须与默认资源文件完全一样。

例如,xlarge是超大屏幕的配置限定符。将 此字符串附加到资源目录名称(例如layout-xlarge)时,它指向 要在具有超大屏幕的设备上使用这些资源的系统。

表 1.可用于为 不同屏幕配置提供特殊资源的配置限定符。

屏幕特性 限定符 说明
尺寸 small 适用于尺寸屏幕的资源。
normal 适用于正常尺寸屏幕的资源。(这是基线尺寸。)
large 适用于尺寸屏幕的资源。
xlarge 适用于超大尺寸屏幕的资源。
密度 ldpi 适用于低密度 (ldpi) 屏幕 (~120dpi) 的资源。
mdpi 适用于中密度 (mdpi) 屏幕 (~160dpi) 的资源。(这是基线 密度。)
hdpi 适用于高密度 (hdpi) 屏幕 (~240dpi) 的资源。
xhdpi 适用于超高密度 (xhdpi) 屏幕 (~320dpi) 的资源。
xxhdpi 适用于超超高密度 (xxhdpi) 屏幕 (~480dpi) 的资源。
xxxhdpi 适用于超超超高密度 (xxxhdpi) 屏幕 (~640dpi) 的资源。此限定符仅适用于 启动器图标,请参阅上面的注。
nodpi 适用于所有密度的资源。这些是密度独立的资源。不管当前屏幕的密度如何,系统都不会 缩放以此限定符标记的资源。
tvdpi 适用于密度介于 mdpi 和 hdpi 之间屏幕(约为 213dpi)的资源。它并不是 “主要”密度组,主要用于电视,而大多数应用都不 需要它 — 对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将根据需要对其进行 缩放。如果发现必须提供 tvdpi 资源,应以 1.33*mdpi 的系数 调整其大小。例如,mdpi 屏幕的 100px x 100px 图像应该相当于 tvdpi 的 133px x 133px。
方向 land 适用于横屏(长宽比)的资源。
port 适用于竖屏(高宽比)的资源。
纵横比 long 适用于纵横比明显高于或宽于(分别在竖屏 或横屏时)基线屏幕配置的屏幕的资源。
notlong 适用于使用纵横比类似于基线屏幕 配置的屏幕的资源。

注:如果是为 Android 3.2 和 更高版本开发应用,请参阅有关声明适用于 Android 3.2 的平板电脑布局的章节,了解 在为特定屏幕尺寸声明布局资源时应使用的 新配置限定符(而不是使用表 1 中的尺寸限定符)。

如需了解有关这些限定符如何粗略地对应于实际屏幕 尺寸和密度的更多信息,请参阅本文档前面的支持的屏幕范围。

例如,以下应用资源目录 为不同屏幕尺寸和不同可绘制对象提供不同的布局设计。使用mipmap/文件夹放置 启动器图标。

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

如需了解如何使用备用资源的更多信息以及 配置限定符的完整列表(不只是屏幕配置),请参阅提供备用资源。

请注意,当 Android 系统在运行时选择使用哪些资源时,它会使用 特定逻辑确定“最佳匹配”资源。也就是说,您使用的限定符无 需在所有情况下精确匹配当前屏幕配置,系统也可 使用它们。特别是,根据屏幕尺寸限定符选择资源时,如果没有更好的匹配资源,则系统将 使用专为小于当前屏幕的屏幕而设计的 资源(例如,如有必要,大尺寸屏幕将使用标准尺寸的屏幕 资源)。但是,如果唯一可用的资源于当前屏幕, 则系统不会使用这些资源,并且如果没有其他资源与设备 配置匹配,应用将会崩溃(例如,如果所有布局资源均用xlarge限定符标记, 但设备是标准尺寸的屏幕)。如需有关系统如何选择资源的更多信息,请参阅Android 如何查找最佳匹配资源。

提示:如果您有一些系统 应该永远不会缩放(或许是因为您在 运行时亲自对图像做一些调整)的可绘制对象资源,则应将它们放在有nodpi配置限定符的目录中。 使用此限定符的资源被视为与密度无关,系统不会缩放 它们。


更多相关文章

  1. 反编译APK 得到JAVA代码和资源文件源码
  2. Android Asyntask:对上下文使用弱引用以避免设备旋转屏幕
  3. Spring 3.0将文件注入资源
  4. Java - 获取ClassPath的路径和资源
  5. 试用资源Android Studio [重复]
  6. 自定义视图无法工作,直到我触摸屏幕

随机推荐

  1. findViewById()返回布局XML中自定义组件
  2. 基于Android6.0的RIL底层模块分析
  3. 在Webview上加载脱机更新页面
  4. 如何使用java RESTful Web服务将通知推送
  5. Java项目无法通过BufferedWriter向服务器
  6. Android无法加载第三方so的解决方法
  7. Android 打包VersionCode自增、APK文件名
  8. Android6.0的phone应用源码分析(5)——RIL
  9. 由Android架构图所想到的Android开发学习
  10. 在两台设备上播放一首音乐