需要哪些布局文件夹以支持所有安卓设备?

9
我正在开发一个计算器应用程序,它具有纵向模式下的相对布局。所有按钮和文本视图都放置在这个单一的相对布局中,并且横向模式下也是相同的相对布局。我已经在网上搜索了将近15天,但没有找到相关内容。我的应用程序还支持平板电脑。MinSDKVer为14,目标版本为v21。
目前我正在尝试以下布局文件:
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(适用于480×800像素的屏幕> 5英寸的手机,如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和Large 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:layout-h960dp-w540dp 2:layout-long-port-960×540
3:layout-normal-960×540
我从Android虚拟设备管理器中创建不同的设备来读取所有屏幕。
我已经尝试过在Java文件中手动设置540×960设备的布局并成功了,但我不想这样做,也不想使用Linear布局。
我已经彻底研究了“Android Different Screen Support and Providing Resources”。
请告诉我支持所有Android设备所需的所有布局文件的名称,或者使用Java进行此操作的任何其他有效方法。

我已经将所有资源文件上传到Mediafire,您可以下载计算器布局.zip

欢迎提出任何建议和解决方案,提前感谢。

对于英语表达不好,请见谅。


1
有太多的布局可能有点过度。大多数更改可以通过引用不同的尺寸来实现。 - Lamorak
@Lamorak 给我举个例子,说明你如何使用维度来实现我的目标,因为维度只是包含可以从任何地方引用的尺寸值的单个文件。如果手机没有选择预期的布局,那么我该如何提供正确的高度和宽度……我无法使用fill parent或wrap content。 - Kamil Mahmood
好的,至少选择不良布局的机会与避免大量重复代码和工作的机会相等。你的计算器布局是否如此复杂,以至于需要太担心屏幕尺寸? - Lamorak
@Lamorak布局很简单,它有22个正方形按钮和两个文本视图,其宽度与父元素的宽度相匹配,但每个密度的高度不同。在横向模式下,它有36个矩形按钮和两个文本视图。TextView具有与纵向相同的属性。问题是,如果我有layout-xhdpi,则在xxxhdpi中它将无法填充屏幕,在密度小于xhdpi的情况下,按钮会超出视图。 - Kamil Mahmood
@Lamorak 我已经编辑了我的问题,并添加了资源文件以便更好地理解,请再次查看问题。很抱歉回复晚了,因为我没有可用的互联网连接。 - Kamil Mahmood
显示剩余8条评论
4个回答

4

不要使用太多简单布局文件夹,使用以下文件夹。

对于智能手机

1.layout:Normal

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)开始,这些大小组(large、large等)已被弃用,取而代之的是一种基于可用屏幕宽度管理屏幕尺寸的新技术。如果您正在开发适用于Android 3.2及更高版本的应用程序,请参阅有关Android 3.2平板电脑布局声明的更多信息。参考链接:link - Andrea Leganza

3

不要使用太多的布局文件夹,可以使用以下文件夹

对于智能手机和平板电脑

  • layout-mdpi
  • layout-hdpi
  • layout-xhdpi
  • layout-xxhdpi

对于7英寸平板电脑

  • layout-sw600dp

对于10英寸平板电脑

  • layout-sw720dp

如果专注于创建太多的布局文件夹,最终会生成太多的布局文件,这将成为每个新设备/屏幕规格添加到Android家族中的繁琐过程。

相反,专注于优化正在创建的布局以适应这些存储桶。例如提供DP值,避免为大小/边距/填充等给出硬编码值,有效使用dimens资源文件等。

希望这将为您节省一些冗余的工作。


这些文件夹并不涵盖所有设备,你可以在我的问题中看到它们。 - Kamil Mahmood
如何为8.9英寸平板电脑创建drawable文件夹? 现在,8.9英寸平板电脑从drawable-sw720dp中获取图像,但这些图像对于这些平板电脑来说太大了。 - DaleYY

1
我正在使用仅三个文件夹的布局: - layout-sw600dp(用于平板电脑)。 - layout-sw360dp(用于中等大小的手机)。 - layout(适用于所有最小宽度小于360的设备)。

0

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

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 中的代码支持所有 dpis。
<supports-screens android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true"
          android:xlargeScreens="true"
          android:anyDensity="true" />

更多信息请参见这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接