移动APP测试-Android屏幕适配问题(一)

Android中适配问题,是最常见和最难解决的事情,下面笔者就带着大家来说一下适配的相关操作。(来源:千锋软件测试)

Android可以为当前的屏幕配置通过适当的方式管理应用程序的layout和bitmap drawables的表现,这种能力是Android支持多屏幕的基础。系统处理的应用程序屏幕适配的大部分工作,尽管如此,为了更妥善处理不同的屏幕配置,应该注意以下几点:

a99dd5ab25b34d23a3ee7e34de435d82.jpg

· 在清单文件中明确声明应用程序支持的所有屏幕尺寸

通过声明应用程序支持的屏幕尺寸,可以保证只有那些屏幕尺寸被应用程序支持的设备才可以下载该应用程序。声明对不同屏幕尺寸的支持,也可以影响系统如何在更大的屏幕展现应用程序—特别地,应用程序是否在屏幕兼容模式运行。声明应用程序支持的屏幕尺寸,应该在manifest文件中包括 <supports-screens>元素。

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

默认情况下,Android重新调整应用程序的布局,以适应当前的设备屏幕。在大多数情况下,这工作得很好。在其他情况下,用户界面可能看起来不太好,可能需要为不同屏幕尺寸的作调整。例如,在大屏幕上,可能要调整某些元素的位置和大小,充分利用额外的屏幕空间,或在一个较小的屏幕上,可能需要调整大小,让所有元素都可以在屏幕上显示。可以使用限定符来提供尺寸相关的资源,这些限定符包括small, normal, large, 和 xlarge。例如,一个超大大屏幕的布局,应该在layout-xlarge/。

从Android 3.2(API Level 13)开始,上述尺寸组已被弃用,应该使用sw<N>dp 限定符定义布局资源所需的最小可用宽度。例如,如果多窗格平板布局至少需要600dp屏幕的宽度,应该放置在layout-sw600dp/下。

· 为不同的屏幕尺寸提供不同的bitmap drawable

默认情况下,Android缩放bitmap drawables(.png, .jpg,和.gif文件)和Nine-Patch drawables(.9.png 文件),使它们在每台设备上呈现合适的物理尺寸。

例如,如果应用程序只为基准,中型屏幕密度(MDPI)屏幕提供了bitmap drawable,那么系统将会在高密度屏幕上放大它们,而在低密度屏幕上缩小它们。这种缩放可能会让位图产生失真。

为了让位图最好的展示,应该为不同屏幕密度提供不同分辨率的位图。

可以使用限定符来提供密度相关的资源,这些限定符包括ldpi (low), mdpi (medium), hdpi (high), 和 xhdpi (extra high)。例如,为高密度屏幕提供的位图应该放在drawable-hdpi/下。

与广义的尺寸和密度相对应的尺寸和密度限定符在上文的屏幕支持范围中有描述。

在运行时,系统为任何给定资源通过以下步骤来尽可能确保它们在当前屏幕的显示:

1. 系统使用适当的可选资源

当前屏幕的大小和密度的基础上,系统使用应用程序提供的任意尺寸和密度相关资源。例如,设备有一个高密度的屏幕并且应用程序请求一个drawable 资源,系统会寻找一个最匹配设备配置的drawable 资源目录。与其它可选资源相比,以hdpi 为限定符的资源目录(比如drawable-hdpi/)会最佳匹配,所以系统使用该目录下的drawable资源。

2. 如果没有匹配的资源是可用的,系统将使用默认的资源并且对其进行缩放来适应当前的屏幕尺寸和密度。 

“默认”的资源是那些没有配置限定符的资源。例如,在drawable/ 下的就是是默认的资源。系统假定默认资源是为基线屏幕尺寸和密度而设计的。正因为如此,系统对其采取缩放是比较可取的。

然而,当系统试图寻找一个密度相关的资源但是在密度相关的目录下没有找到时,系统并不总是使用默认资源。系统可能会改用其他密度相关的资源之一,以提供更好的缩放结果。 例如,当寻找一个低密度资源而没找到时,系统倾向于缩小高密度资源,因为系统可以通过缩放因子0.5轻松地将高密度资源缩小为低密度,这种缩放要比通过缩放因子0.75将中密度资源缩小为低密度不易失真。

猜你喜欢

转载自blog.csdn.net/IT_studied/article/details/89365211