Android适配难题全面总结

简介:

支持多种屏幕

Android 可在各种具有不同屏幕尺寸和密度的设备上运行。对于 应用,Android 系统在不同设备中提供一致的开发环境, 可以处理大多数工作,将每个应用的用户界面调整为适应其显示的 屏幕。同时,系统提供 API,可用于控制 应用适用于特定屏幕尺寸和密度的 UI,以针对 不同屏幕配置优化 UI 设计。例如,您可能想要不同于手机 UI 的 平板电脑 UI。

虽然系统为使您的应用适用于不同的屏幕, 会进行缩放和大小调整,但您应针对不同的屏幕尺寸和密度优化 应用。这样可以最大程度优化所有设备上的用户体验,用户会 认为您的应用实际上是专为他们的设备而设计,而不是 简单地拉伸以适应其设备屏幕。

按照本文档所述的做法,您可以创建 正常显示的应用,然后使用 一个 .apk 文件在所有支持的屏幕配置中提供优化的用户体验。

注:本文档中的信息假设您的 应用设计用于 Android 1.6(API 级别 4)或更高级别。

另请注意,Android 3.2 引入了新的 API,可用于更 精确地控制应用用于不同屏幕尺寸的布局资源。如果您要开发针对平板电脑优化的应用,这些新 功能特别重要。

屏幕支持概览

本节概述 Android 对多种屏幕的支持,包括: 本文档和 API 中所用术语和概述的简介、 系统支持的屏幕配置摘要,以及 API 和基本 屏幕兼容性功能的概述。

术语和概念

屏幕尺寸

按屏幕对角测量的实际物理尺寸。

为简便起见,Android 将所有实际屏幕尺寸分组为四种通用尺寸:小、 正常、大和超大。

屏幕密度

屏幕物理区域中的像素量;通常称为 dpi(每英寸 点数)。例如, 与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域的像素较少。

为简便起见,Android 将所有屏幕密度分组为六种通用密度: 低、中、高、超高、超超高和超超超高。

方向

从用户视角看屏幕的方向,即横屏还是 竖屏,分别表示屏幕的纵横比是宽还是高。请注意, 不仅不同的设备默认以不同的方向操作,而且 方向在运行时可随着用户旋转设备而改变。

分辨率

屏幕上物理像素的总数。添加对多种屏幕的支持时, 应用不会直接使用分辨率;而只应关注通用尺寸和密度组指定的屏幕 尺寸及密度。

密度无关像素 (dp)

在定义 UI 布局时应使用的虚拟像素单位,用于以密度无关方式表示布局维度 或位置。

密度无关像素等于 160 dpi 屏幕上的一个物理像素,这是 系统为“中”密度屏幕假设的基线密度。在运行时,系统 根据使用中屏幕的实际密度按需要以透明方式处理 dp 单位的任何缩放 。dp 单位转换为屏幕像素很简单: px = dp * (dpi / 160)。 例如,在 240 dpi 屏幕上,1 dp 等于 1.5 物理像素。在定义应用的 UI 时应始终使用 dp 单位 ,以确保在不同密度的屏幕上正常显示 UI。

支持的屏幕范围

从 Android 1.6(API 级别 4)开始,Android 支持多种屏幕尺寸和密度,反映设备可能具有的多种不同屏幕配置。 您可以使用 Android 系统的功能优化应用在各种屏幕配置下的用户界面 ,确保应用不仅正常渲染,而且在每个屏幕上提供 最佳的用户体验。

为简化您为多种屏幕设计用户界面的方式,Android 将实际屏幕尺寸和密度的范围 分为:

四种通用尺寸:小、正常、 大 和超大

注:从 Android 3.2(API 级别 13)开始,这些尺寸组 已弃用,而采用根据可用屏幕宽度管理屏幕尺寸的 新技术。如果为 Android 3.2 和更高版本开发,请参阅声明适用于 Android 3.2 的平板电脑布局以了解更多信息。

六种通用的密度:

ldpi(低)~120dpi

mdpi(中)~160dpi

hdpi(高)~240dpi

xhdpi(超高)~320dpi

xxhdpi(超超高)~480dpi

xxxhdpi(超超超高)~640dpi

通用的尺寸和密度按照基线配置(即正常尺寸和 mdpi(中)密度)排列。 此基线基于第一代 Android 设备 (T-Mobile G1) 的屏幕配置,该设备采用 HVGA 屏幕(在 Android 1.6 之前,这是 Android 支持的唯一屏幕配置)。

每种通用的尺寸和密度都涵盖一个实际屏幕尺寸和密度范围。例如, 两部都报告正常屏幕尺寸的设备在手动测量时,实际屏幕尺寸和 高宽比可能略有不同。类似地,对于两台报告 hdpi 屏幕密度的设备,其实际像素密度可能略有不同。 Android 将这些差异抽象概括到应用,使您可以提供为通用尺寸和密度设计的 UI,让系统按需要处理任何最终调整。 图 1 说明不同的尺寸和密度如何粗略归类为不同的尺寸 和密度组。  

Android 如何将实际尺寸和密度粗略地 对应到通用的尺寸和密度

图 1. 说明 Android 如何将实际尺寸和密度粗略地 对应到通用的尺寸和密度(数据并不精确)。

在为不同的屏幕尺寸设计 UI 时,您会发现每种设计都需要 最小空间。因此,上述每种通用的屏幕尺寸都关联了系统定义的最低 分辨率。这些最小尺寸以“dp”单位表示 — 在定义布局时应使用相同的单位 — 这样系统无需担心屏幕密度的变化。

超大屏幕至少为 960dp x 720dp

大屏幕至少为 640dp x 480dp

正常屏幕至少为 470dp x 320dp

小屏幕至少为 426dp x 320dp

注:这些最小屏幕尺寸在 Android 3.0 之前未正确定义,因此某些设备在正常屏幕与大屏幕之间变换时可能会出现分类错误的情况。 这些尺寸还基于屏幕的物理分辨率,因此设备之间可能不同 — 例如,具有系统状态栏的 1024×720 平板电脑因系统状态栏要占用空间,所以可供 应用使用的空间要小一点。

要针对不同的屏幕尺寸和密度优化应用的 UI,可为任何通用的尺寸和密度提供 替代 资源。通常,应为某些不同的屏幕尺寸提供替代布局,为不同的屏幕密度提供替代位图图像。 在运行时,系统会根据当前设备屏幕的通用 尺寸或密度对应用使用适当的资源。

无需为屏幕尺寸和 密度的每个组合提供替代资源。系统提供强大的兼容性功能,可处理在任何设备屏幕上 渲染应用的大多数工作,前提是您已经使用 可以适当调整大小的技术实现 UI(如下面的最佳做法所述)。

注:定义设备通用屏幕 尺寸和密度的特性相互独立。例如,WVGA 高密度屏幕 被视为正常尺寸屏幕,因为其物理尺寸与 T-Mobile G1 (Android 的第一代设备和基线屏幕配置)大约相同。另一方面,WVGA 中密度 屏幕被视为大尺寸屏幕。虽然它提供相同的分辨率(相同的 像素数),但 WVGA 中密度屏幕的屏幕密度更低,意味着每个像素 实际上更大,因此整个屏幕大于基线(正常尺寸)屏幕。

密度独立性

应用显示在密度不同的屏幕上时,如果它保持用户界面元素的物理尺寸(从 用户的视角),便可实现“密度独立性” 。

保持密度独立性很重要,因为如果没有此功能,UI 元素(例如 按钮)在低密度屏幕上看起来较大,在高密度屏幕上看起来较小。这些 密度相关的大小变化可能给应用布局和易用性带来问题。图 2 和 3 分别显示了应用不提供密度独立性和 提供密度独立性时的差异。  

不支持不同密度的示例应用在低、中、高密度屏幕上的显示情况

图 2. 不支持不同密度的示例应用在低、中、高密度屏幕上的显示情况。

良好支持不同密度(密度独立)的示例应用在低、中、高密度屏幕上的显示情况。

图 3. 良好支持不同密度(密度独立)的示例应用在低、中、高密度屏幕上的显示情况。

Android 系统可帮助您的应用以两种方式实现密度独立性:

系统根据当前屏幕密度扩展 dp 单位数

系统在必要时可根据当前屏幕 密度将可绘制对象资源扩展到适当的大小

在图 2 中,文本视图和位图可绘制对象具有以像素(px 单位)指定的尺寸,因此视图的物理尺寸在低密度屏幕上更大,在高密度 屏幕上更小。这是因为,虽然实际屏幕尺寸可能相同,但高密度屏幕 的每英寸像素更多(同样多的像素在一个更小的区域内)。在图 3 中,布局 尺寸以密度独立的像素(dp 单位)指定。由于 密度独立像素的基线是中密度屏幕,因此具有中密度屏幕的设备看起来 与图 2 一样。但对于低密度和高密度屏幕,系统 将分别增加和减少密度独立像素值,以适应 屏幕。

大多数情况下,确保应用中的屏幕独立性很简单,只需以适当的密度独立像素(dp 单位)或 “wrap_content” 指定所有 布局尺寸值。系统然后根据适用于当前屏幕密度的缩放比例适当地缩放位图可绘制对象,以 适当的大小显示。

但位图缩放可能导致模糊或像素化位图,您或许已经在上面的屏幕截图中 发现了这些问题。为避免这些伪影,应为 不同的密度提供替代的位图资源。例如,应为高密度 屏幕提供分辨率较高的位图,然后系统对中密度 屏幕将使用这些位图,而无需调整位图大小。下一节详细说明如何为 不同的屏幕配置提供替代资源。

如何支持多种屏幕

Android 支持多种屏幕的基础是它能够管理针对当前屏幕配置 以适当方式渲染应用的布局和位图 可绘制对象。系统可处理大多数工作,通过适当地 缩放布局以适应屏幕尺寸/密度和根据屏幕密度缩放位图可绘制对象 ,在每种屏幕配置中渲染您的应用。但是,为了更适当地处理不同的屏幕配置 ,还应该:

在清单中显式声明您的应用 支持哪些屏幕尺寸

通过声明您的应用支持哪些屏幕尺寸,可确保只有 其屏幕受支持的设备才能下载您的应用。声明对 不同屏幕尺寸的支持也可影响系统如何在较大 屏幕上绘制您的应用 — 特别是,您的应用是否在屏幕兼容模式中运行。

要声明应用支持的屏幕尺寸,应在清单文件中包含 supports-screens 元素。

为不同屏幕尺寸提供不同的布局

默认情况下,Android 会调整应用布局的大小以适应当前设备屏幕。大多数 情况下效果很好。但有时 UI 可能看起来不太好,需要针对 不同的屏幕尺寸进行调整。例如,在较大屏幕上,您可能要调整 某些元素的位置和大小,以利用其他屏幕空间,或者在较小屏幕上, 可能需要调整大小以使所有内容纳入屏幕。

可用于提供尺寸特定资源的配置限定符包括 small、normal、large 和 xlarge。例如,超大屏幕的布局应使用 layout-xlarge/。

从 Android 3.2(API 级别 13)开始,以上尺寸组已弃用,您 应改为使用 swdp 配置限定符来定义布局资源 可用的最小宽度。例如,如果多窗格平板电脑布局 需要至少 600dp 的屏幕宽度,应将其放在 layout-sw600dp/ 中。声明适用于 Android 3.2 的平板电脑布局一节将进一步讨论如何使用新技术声明布局资源。

为不同屏幕密度提供不同的位图可绘制对象

默认情况下,Android 会缩放位图可绘制对象(.png、.jpg 和 .gif 文件)和九宫格可绘制对象(.9.png 文件),使它们以适当的 物理尺寸显示在每部设备上。例如,如果您的应用只为 基线中密度屏幕 (mdpi) 提供位图可绘制对象,则在高密度 屏幕上会增大位图,在低密度屏幕上会缩小位图。这种缩放可能在 位图中造成伪影。为确保位图的最佳显示效果,应针对 不同屏幕密度加入不同分辨率的替代版本。

可用于密度特定资源的配置限定符(在下面详述) 包括 ldpi(低)、mdpi(中)、 hdpi(高)、xhdpi(超高)、xxhdpi (超超高)和 xxxhdpi(超超超高)。例如,高密度屏幕的位图应使用 drawable-hdpi/。

注:仅当要在 xxhdpi 设备上提供比正常位图大的启动器图标时才需要提供 mipmap-xxxhdpi 限定符。无需为所有应用的图像提供 xxxhdpi 资源。

有些设备会将启动器图标增大 25%。例如,如果您的最高 密度启动器图标已是超超高密度,缩放处理会降低其 清晰度。因此应在 mipmap-xxxhdpi 目录中提供更高密度的启动器图标,系统将改为增大较小 的图标。

请参阅提供 xxx-高密度启动器图标以了解详细信息。对启动程序图标以外的 UI 元素不应使用 xxxhdpi 限定符。

注:将您的所有启动器图标放在 res/mipmap-[density]/ 文件夹中,而非 res/drawable-[density]/ 文件夹中。无论安装应用的设备屏幕分辨率如何,Android 系统都会将资源保留在这些密度特定的文件夹中,例如 mipmap-xxxhdpi。此 行为可让启动器应用为您的应用选择要显示在主 屏幕上的最佳分辨率图标。如需了解有关使用 mipmap 文件夹的详细信息,请参阅管理项目概览。

尺寸和密度配置限定符对应于 前面支持的屏幕范围中所述的通用尺寸和密度。

在运行时,系统通过 以下程序确保任何给定资源在当前屏幕上都能保持尽可能最佳的显示效果:

系统使用适当的替代资源

根据当前屏幕的尺寸和密度,系统将使用您的应用中提供的任何尺寸和 密度特定资源。例如,如果设备有 高密度屏幕,并且应用请求可绘制对象资源,系统将查找 与设备配置最匹配的可绘制对象资源目录。根据可用的其他 替代资源,包含 hdpi 限定符(例如 drawable-hdpi/)的资源目录可能是最佳匹配项,因此系统将使用此 目录中的可绘制对象资源。

如果没有匹配的资源,系统将使用默认资源,并按需要向上 或向下扩展,以匹配当前的屏幕尺寸和密度。

“默认”资源是指未标记配置限定符的资源。例如,drawable/ 中的资源是默认可绘制资源。 系统假设默认资源设计用于基线屏幕尺寸和密度,即 正常屏幕尺寸和中密度。 因此,系统对于高密度屏幕向上扩展默认密度 资源,对于低密度屏幕向下扩展。

当系统查找密度特定的资源但在 密度特定目录中未找到时,不一定会使用默认资源。系统在缩放时可能 改用其他密度特定资源提供更好的 效果。例如,查找低密度资源但该资源不可用时, 系统会缩小资源的高密度版本,因为 系统可轻松以 0.5 为系数将高密度资源缩小至低密度资源,与以 0.75 为系数 缩小中密度资源相比,伪影更少。

如需有关 Android 如何通过使配置 限定符与设备配置匹配来选择替代资源的更多信息,请参阅 Android 如何 查找最佳匹配资源。

使用配置限定符

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

要使用配置限定符:

在项目的 res/ 目录中新建一个目录,并使用以下 格式命名: <resources_name>-<qualifier>

<resources_name> 是标准资源名称(例如 drawable 或 layout)。

<qualifier> 是下表 1 中的配置限定符,用于指定 要使用这些资源的屏幕配置(例如 hdpi 或 xlarge)。

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

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

例如,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/ 文件夹放置 启动器图标。

 
 
  1. res/layout/my_layout.xml // layout for normal screen size (“default”) 
  2. res/layout-large/my_layout.xml // layout for large screen size 
  3. res/layout-xlarge/my_layout.xml // layout for extra-large screen size 
  4. res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation 
  5. res/drawable-mdpi/graphic.png // bitmap for medium-density 
  6. res/drawable-hdpi/graphic.png // bitmap for high-density 
  7. res/drawable-xhdpi/graphic.png // bitmap for extra-high-density 
  8. res/drawable-xxhdpi/graphic.png // bitmap for extra-extra-high-density 
  9. res/mipmap-mdpi/my_icon.png // launcher icon for medium-density 
  10. res/mipmap-hdpi/my_icon.png // launcher icon for high-density 
  11. res/mipmap-xhdpi/my_icon.png // launcher icon for extra-high-density 
  12. res/mipmap-xxhdpi/my_icon.png // launcher icon for extra-extra-high-density 
  13. res/mipmap-xxxhdpi/my_icon.png // launcher icon for extra-extra-extra-high-density  

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

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

设计替代布局和可绘制对象

您应该创建的替代资源类型取决于应用的需求。 通常,您应该使用尺寸和方向限定符提供替代布局资源 ,并且使用密度限定符提供替代位图可绘制对象资源。

以下各节摘要说明您可能要如何使用尺寸和密度限定符 来分别提供替代布局和可绘制对象。

替代布局

一般而言,在不同的屏幕配置上测试应用后,您会知道 是否需要用于不同屏幕尺寸的替代布局。例如:

在小屏幕上测试时,可能会发现您的布局不太适合 屏幕。例如,小屏幕设备的屏幕宽度可能无法容纳一排 按钮。在此情况下,您应该为小屏幕提供调整 按钮大小或位置的替代布局。

在超大屏幕上测试时,可能会发现您的布局无法 有效地利用大屏幕,并且明显拉伸填满屏幕。 在此情况下,您应该为超大屏幕提供替代布局,以提供 针对大屏幕(例如平板电脑)优化、重新设计的 UI。

虽然您的应用不使用替代布局也能在大屏幕上正常运行,但 必须让用户感觉您的应用看起来像是专为其 设备而设计。如果 UI 明显拉伸,用户很可能对 应用体验不满意。

而且,对比横屏测试和竖屏测试时 可能会发现,竖屏时置于底部的 UI 在横屏时应位于屏幕右侧。

简而言之,您应确保应用布局:

适应小屏幕(让用户能实际使用您的应用)

已针对大屏幕优化,可以利用其他屏幕空间

已同时针对横屏和竖屏方向优化

如果 UI 使用的位图即使在系统缩放 布局后也需要适应视图大小(例如按钮的背景图片),则应使用九宫格位图文件。九宫格文件基本上是一个指定可拉伸的二维区域的 PNG 文件。 当系统需要缩放使用位图的视图时,系统 会拉伸九宫格位图,但只拉伸指定的区域。因此,您无 需为不同的屏幕尺寸提供不同的可绘制对象,因为九宫格位图可 调整至任何大小。但您应该为不同的屏幕密度提供 九宫格文件的替代版本。

替代可绘制对象

支持每种密度的 位图可绘制对象的相对大小。

图 4. 支持每种密度的 位图可绘制对象的相对大小。

基本上每个应用都应该具有不同密度的替代可绘制对象 资源,因为基本上每个应用都有启动器图标,而且该图标应该在 所有屏幕密度中看起来都很好。同样,如果您的应用中包含其他位图可绘制对象(例如 应用中的菜单图标或其他图形),则应该为不同密度提供替代版本或 每种密度一个版本。

注:您只需要为 位图文件(.png、.jpg 或 .gif)和九宫格文件 (.9.png) 提供密度特定的可绘制对象。如果您使用 XML 文件定义形状、颜色或其他可绘制对象资源,应该 将一个副本放在默认可绘制对象目录中 (drawable/)。

要为不同的密度创建替代位图可绘制对象,应遵循六种通用密度之间的 3:4:6:8:12:16 缩放比率。例如,如果您的 位图可绘制对象是对中密度屏幕使用 48×48 像素,则所有不同的尺寸应为:

36×36 (0.75x) 用于低密度

48×48(1.0x 基线)用于中密度

72×72 (1.5x) 用于高密度

96×96 (2.0x) 用于超高密度

144×144 (3.0x) 用于超超高密度

192×192 (4.0x) 用于超超超高密度(仅限启动器图标;请参阅上面的 注)

如需了解有关设计图标的更多信息,请参阅图标设计指南, 其中包含各种位图可绘制对象(例如启动器图标、菜单 图标、状态栏图标、选项卡图标等)的大小信息。

声明适用于 Android 3.2 的平板电脑布局

对于第一代运行 Android 3.0 的平板电脑,声明平板电脑 的正确方式是将它们放在有 xlarge 配置限定符的目录(例如 res/layout-xlarge/)中。为适应其他类型的平板电脑和屏幕 尺寸 — 特别是 7 英寸平板电脑 — Android 3.2 引入了为更具体的屏幕尺寸指定资源 的新方式。新技术基于布局需要的空间量 (例如 600dp 宽),而不是尝试让您的布局容纳通用化的尺寸组 (例如大或超大)。

使用通用化的尺寸组时,为 7 英寸平板电脑设计很棘手的原因在于, 7 英寸平板电脑在技术上与 5 英寸手机属于同一个组(大组)。虽然 这两种设备在尺寸上似乎很接近,但用于 应用 UI 的空间量明显不同,用户交互的方式也是如此。因此,7 英寸和 5 英寸 屏幕不一定使用相同的布局。为便于您为这两种屏幕提供不同的 布局,Android 现在允许您 根据实际适用于应用布局的宽度和/或高度指定布局资源( 以 dp 单位数指定)。

例如,在设计要用于平板电脑样式设备的布局之后,您可能 发现该布局在屏幕宽度小于 600dp 时不适用。此阈值 于是变成平板电脑布局需要的最小尺寸。因此,您现在可以指定应仅当至少有 600dp 宽度供应用的 UI 使用时才使用这些布局资源。

应选择一个宽度并将其设计为最小尺寸,或者在布局设计完成后测试 其支持的最小宽度。

注:请记住,这些新尺寸 API 使用的所有数据是密度独立的像素 (dp) 值,您的布局尺寸也应始终 使用 dp 单位定义,因为您关注的是系统 考虑屏幕密度后可用的屏幕空间量(与使用原始像素分辨率相反)。如需了解 密度独立像素的更多信息,请参阅本文档前面的术语和概念 。

使用新尺寸限定符

因为微信字数限制,请点击左下角原文链接阅读完整内容。





本文作者:佚名
来源:51CTO
目录
相关文章
|
4月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
56 2
|
6月前
|
Android开发
Android 全屏适配刘海机型
Android 全屏适配刘海机型
102 0
|
6天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
17天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
20 1
|
6月前
|
安全 API 开发工具
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?(下)
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?(下)
327 0
|
6月前
|
存储 缓存 安全
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
261 0
|
7月前
|
存储 5G API
Android 11 来袭,一起来看看怎么适配(三)
Android 11 来袭,一起来看看怎么适配
|
7月前
|
安全 Shell 测试技术
Android 11 来袭,一起来看看怎么适配(二)
Android 11 来袭,一起来看看怎么适配
|
4月前
|
Java 物联网 Android开发
Android 12 蓝牙适配 Java版(下)
Android 12 蓝牙适配 Java版(下)
|
4月前
|
传感器 Java 定位技术
Android 12 蓝牙适配 Java版(上)
Android 12 蓝牙适配 Java版(上)
133 0