【问题标题】:What layout folders are required to support all Android Devices?支持所有 Android 设备需要哪些布局文件夹?
【发布时间】:2015-03-19 06:48:40
【问题描述】:

我正在开发一个具有纵向模式相对布局的计算器应用程序。所有 Buttons 和 TextViews 都被放置在这个单一的相对布局和相同的 Land 模式下的相对布局中。我已经在网上挖掘了将近 15 天,但没有发现任何相关内容。我的应用程序也支持平板电脑。 MinSDKVer 为 14,Target 为 v21。

目前我正在尝试这些 Layouts 文件夹

1:layout-sw400dp(用于 Note 3 和 Mate 7)

2:layout-sw600dp(用于 7" 平板电脑)

3:layout-sw720dp(用于 8.9" 和 10" 平板电脑)

4:layout-small-ldpi

5:layout-normal-ldpi

6:layout-normal-mdpi

7:layout-large-mdpi(适用于屏幕 >5" 的 480×800 手机,如 Pantech Sky Vega Note)

8:layout-normal-hdpi

9:layout-large-hdpi(适用于 Galaxy Note 2、Galaxy Note 和 Galaxy Mega)

10:layout-normal-xhdpi

11:layout-normal-xxhdpi

12:layout-large-xxhdpi(适用于 Galaxy Note 4)

13:layout-normal-xxxhdpi(适用于 Nexus 6 和其他 QFHD 手机)

所有这些布局都有陆地模式。

我放置 (layout-sw400dp) 时出现问题。 Nexus 6、Note 4、Note 2、Galaxy Mega 和大型 480×800 手机开始使用此布局而不是预期布局。

这是因为 swdp 的优先级高于 layout-normal-xxxx 或 layout-large-xxxx。

Note 3 和 Mate 7 是 400dpi 设备,这就是我放置 layout-sw400dp 的原因。在此之前,除了 Note 3 和 Mate 7 之外,所有设备都可以正常工作。

其他问题是分辨率为 540×960 的设备。

我已经尝试过 layout-320dp。通过使用这个 xhdpi 设备和 xxhdpi 设备开始使用这个布局。

我也尝试过这些 540×960 的布局,但即使为 layout-long-port-800×480 制作了单独的文件夹,这些布局也不起作用。

1:布局-h960dp-w540dp

2:layout-long-port-960×540

3:layout-normal-960×540

我通过创建具有实际规格的不同设备从 Android Virtual Device Manager 读取所有屏幕。

我尝试在 java 文件中手动设置 540×960 设备的布局并成功,但我不想这样做,我也不想使用线性布局。

我深入研究了《Android异屏支持及提供资源》。

请告知布局所需的所有文件夹的名称以支持所有 android 设备或使用 java 执行此操作的任何其他有效方式。

我已经上传了Mediafire上的所有资源文件,你可以下载Calculator Layout.zip

任何建议和解决方案将不胜感激提前谢谢

对不起,英语不是我的母语。

【问题讨论】:

  • 有这么多的布局有点矫枉过正。大多数更改可以通过引用不同的dimensions 来实现。
  • @Lamorak 举例说明如何使用维度实现我想要的目标,因为维度只不过是包含可以从任何地方引用的维度值的单个文件。如果手机没有选择预期的布局,那么我该如何提供正确的高度和宽度...我不能使用填充父级或包装内容
  • 通常当您希望布局适应不同的屏幕尺寸时,主要的变化是视图的尺寸。您可以只参考尺寸,而不是拥有两个相似的布局。没有一个维度文件,您可以在values-normal-hdpi 等文件夹中拥有其中的几个。
  • @Lamorak 你最后的建议很好,但你不认为在这种情况下设备也可以选择意想不到的尺寸
  • 好吧,至少机会等于选择了一个意想不到的布局,但您将避免大量重复的代码和工作。您的计算器布局是否如此复杂,以至于担心屏幕大小?

标签: android android-layout android-relativelayout


【解决方案1】:

不要使用这么多简单的布局文件夹,而是使用以下文件夹。

适用于智能手机

1.layout:普通

2.layout-hdpi:使用Nexus one,Nexus S

3.layout-xhdpi : 使用 Nexus 4

4.layout-xxhdpi : 使用 Nexus 5

5.layout-xxxhdpi : 使用 Nexus 6

平板电脑

1.layout-large : 使用 Nexus 7

2.layout-xlarge:使用 Nexus 9

3.layout-xxlarge:使用 Nexus 10

【讨论】:

  • 注意:从 Android 3.2(API 级别 13)开始,这些尺寸组(大、大等)已被弃用,取而代之的是一种基于可用屏幕宽度管理屏幕尺寸的新技术。如果您正在为 Android 3.2 及更高版本进行开发,请参阅为 Android 3.2 声明平板电脑布局以获取更多信息。参考:link
【解决方案2】:

不要使用这么多布局文件夹,而是使用以下文件夹

适用于智能手机和平板手机

  • 布局-mdpi
  • 布局-hdpi
  • 布局-xhdpi
  • 布局-xxhdpi

适用于 7 英寸平板电脑

  • layout-sw600dp

适用于 10 英寸平板电脑

  • 布局-sw720dp

如果您专注于创建如此多的布局文件夹并最终创建如此多的布局文件,那么对于添加到 Android 家族中的每个新设备/屏幕规格来说,这将成为一个繁琐的过程。

相反,请专注于优化您正在创建的布局以适应这些存储桶。例如在 dp 中提供值并避免为 size/margin/padding 提供硬编码值,以有效的方式使用 dimens 资源文件等。

希望这会节省您的一些多余的努力。

【讨论】:

  • 这些文件夹并未涵盖所有设备,您可以在我的问题中看到这些
  • 如何为 8.9' 平板电脑创建 drawable 文件夹?现在 8.9' 平板电脑从 drawable-sw720dp 获取图像,但这些图像对于这些平板电脑来说是巨大的。
【解决方案3】:

我只使用三个文件夹布局

- layout-sw600dp(适用于平板电脑)。
- layout-sw360dp(适用于中型手机)。
- 布局(适用于所有最小宽度小于 360 的)。

【讨论】:

    【解决方案4】:

    对于不同的屏幕尺寸,以下是应用程序中的资源文件夹列表,为小、中、高和超高密度屏幕的不同屏幕尺寸提供不同的布局设计。

    res/layout/my_layout.xml             // layout for normal screen size ("default")
    res/layout-small/my_layout.xml       // layout for small screen size
    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/my_icon.png        // bitmap for medium density
    res/drawable-hdpi/my_icon.png        // bitmap for high density
    res/drawable-xhdpi/my_icon.png       // bitmap for extra high density
    

    Manifest 中的以下代码支持所有 dpi。

    <supports-screens android:smallScreens="true" 
              android:normalScreens="true" 
              android:largeScreens="true"
              android:xlargeScreens="true"
              android:anyDensity="true" />
    

    更多信息请见here

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      相关资源
      最近更新 更多