Android多屏幕支持

Jed*_*ter 2 android android-screen-support

我需要一些支持多种屏幕大小的建议,

  1. 哪个会奏效
    • 运用

这个

values
values-hdpi
values-large
values-ldpi
values-mdpi
values-small
values-xhdpi
values-xlarge
Run Code Online (Sandbox Code Playgroud)

或这个

    values-sw360dp
    values-sw600dp-land
    values-sw600dp-v21
    values-sw720dp-land
    values-sw720dp
    values-v17
    values-v21
    values-2400dp
    values-w720dp-land
    values-w720dp
Run Code Online (Sandbox Code Playgroud)

我应该在res中创建什么值的文件夹?我想知道所有这些,如果可以的话

  1. 我是否需要以编程方式声明或仅将@ dimens/something放在布局xml中?

    3.DO我需要制作更多的布局文件夹以支持多屏幕尺寸或只需一个布局文件夹,并且使用@dimens足以处理多屏幕尺寸?

rf4*_*f43 8

首先,以下内容从Android 3.2(API 13)及以上版本中折旧...

values
values-hdpi
values-large
values-ldpi
values-mdpi
values-small
values-xhdpi
values-xlarge
Run Code Online (Sandbox Code Playgroud)

基本上,当您为运行低于Android 3.2(API 13)的设备开发时,您只需要使用这些.


最小宽度

 values-sw360dp
 values-sw600dp
 values-sw600dp-land
 values-sw600dp-v21
 values-sw720dp-land
 values-sw720dp
Run Code Online (Sandbox Code Playgroud)

"sw"表示最小宽度.操作系统将选择适合您的活动窗口可用的最小可用宽度的操作系统.因此,如果您有一个700dp宽的设备,它将使用values-sw600dp纵向和values-sw600dp-land横向的资源,因为600dp是您定义的"最小宽度"和720dp.例如,如果您想要在1024dp或更宽的屏幕上使用的drawable,那么您将创建一个名为的目录values-sw1024dp.命名方案如下:[resourcetype] -swdp-optionalFlag

注意:该可选标志告诉操作系统仅使用该特定实例的资源.例如,标志"-v21"表示如果OS是API级别21或更高,它应该仅使用那些资源.

可用的屏幕宽度

 values-w720dp-land
 values-w720dp
Run Code Online (Sandbox Code Playgroud)

这些指定了应使用资源的最小可用宽度.

Android文档描述它比我更好...

这对于确定是否使用多窗格布局通常很有用,因为即使在平板电脑设备上,您也常常不希望使用与横向相同的多窗格布局作为纵向方向.因此,您可以使用它来指定布局所需的最小宽度,而不是同时使用屏幕大小和方向限定符.

支持多个屏幕


问题2和3

我是否需要以编程方式声明或仅将@ dimens/something放在布局xml中?

您只需将上述目录放在/ res目录中.

所以,例如,你的布局目录...你会在你的/ res目录中放置这样的东西:

layout
layout-land
layout-v14
layout-land-v14
layout-sw600-land
layout-sw600dp-land
Run Code Online (Sandbox Code Playgroud)

对于你的绘图,你可能会有类似的东西(对于3.2之前的支持):

drawable
drawable-hdpi
drawable-hdpi-v11
drawable-mdpi
drawable-ldpi
Run Code Online (Sandbox Code Playgroud)

并为您的价值观:

values
values-v14
values-sw600dp
values-sw600dp-land
values-w820dp
values-w820dp-land
Run Code Online (Sandbox Code Playgroud)