【问题标题】:Android UI Design: Supporting Multiple ScreensAndroid UI 设计:支持多屏
【发布时间】:2013-06-25 01:41:34
【问题描述】:

我已经多次阅读本教程SUPPORTING MULTIPLE SCREENS 以及许多关于Design Android UIs to fit well with all android screen sizes 的stackoverflow 问题。

但仍在努力为所有屏幕尺寸平等地提供最佳和相同的用户体验。

当我设计接口时,始终牢记下图。

目前在我的应用程序中,它使用 res 文件夹下的以下文件夹结构。

在定义尺寸时,我还在 xml 布局文件中使用了 dpsp 单位。

小屏幕尺寸

当涉及到小屏幕尺寸时,它完全参考layout-small 下定义的 UI,并且显示没有任何问题。

正常屏幕尺寸

当我为正常屏幕尺寸(layout folder) 设计布局时,我使用3.5 inches android 设备和3.7 inches 模拟器来测试UI 在正常屏幕尺寸下的外观。

所以我的布局在这个尺寸下看起来很棒,但三星 Gallaxy S3 (4.8 inches) 和 S4 (5.0 inches) 的屏幕稍大一些,它们仍然参考正常屏幕尺寸的布局。因此,在那些较大的屏幕中,底部留有相当大的空间未使用,UI 看起来不太好。

另外在清单文件中,我定义了以下内容,

<uses-sdk
    android:minSdkVersion="4"
    android:targetSdkVersion="17" />

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

我对图像密度没有任何问题(drawable-hdpi/drawable-xhdpi/drawable-mdpi/drawable-ldpi)

(1)。想知道我错过了什么或做错了什么,特别是在更大的屏幕(4.8 英寸)中参考正常布局。

(2). 另外,如果有人能解释最佳实践和在Res 文件夹下定义文件夹结构的标准方法,以适应android 中的所有屏幕尺寸,将不胜感激这太令人困惑了。谢谢。

【问题讨论】:

  • 您可以为特定分辨率和屏幕尺寸指定布局文件夹。这是执行此操作的新方法。
  • 你知道4.8in和5in屏幕的宽/高dp是多少吗?

标签: android android-layout


【解决方案1】:

您可以使用与屏幕尺寸相关的the sdp size unit,而不是使用 dp 尺寸单位。

使用the sdp size unit,您将在所有屏幕尺寸上获得相同的用户体验,只需一个布局xml。

谨慎使用!例如,在大多数情况下,您仍然需要为平板电脑设计不同的布局。

文本视图大小请参考the ssp size unit(基于sp大小单位)

【讨论】:

  • 非常感谢救命 :)
  • 好吧,这是我听说的新东西
【解决方案2】:

您可以使用以下资源文件夹为大屏幕设备创建布局:

7寸平板
res\layout-sw600dp

10寸平板
res\layout-sw720dp

【讨论】:

  • 嗨柏拉图,感谢您的回答,但据我所知,这种方式已经在 Android 3.2 及更高版本中工作。在我的情况下,最低支持版本是 Android 1.6(android:minSdkVersion="4")。我的问题也是关于“正常”大小的屏幕。我想知道如何设计一组布局以在 Galaxy S3/S4(4.8 英寸范围的设备)上很好地工作,同时在 3.7 英寸(普通尺寸)的设备上工作得很好......
  • 那么唯一想到的就是通过使用 MATCH_PARENT 或不同布局的权重功能使您的布局自动调整到屏幕大小。
  • 是的柏拉图,我已经使用布局自动调整,正如您在此处所解释的那样。所以它得到了完整的水平空间(宽度)并且在每种情况下都可以......问题是无法调整布局项目以使用屏幕中的完整垂直空间(高度)。当我调整正常尺寸的 UI 以使其适用于 3.5-3.7 英寸尺寸时,当涉及到 4.8-5.0 英寸级别的屏幕时,它会从底部留下相当多的空间,因为它们也指的是相同的正常尺寸的 UI。
  • 您可以在 Vertical LinearLayout 中使用权重,例如,让视图垂直填充一些空间。或者你的意思是你的布局是这样设计的,所以它可以垂直缩放?
【解决方案3】:

如果指定到那个极端非常重要,那么有一个方便的文件夹命名工具,那就是链接。前任。 layout-w480dp-normal 的屏幕尺寸至少为 480dp 的宽度,属于 normal 类别。注意:我没有必要为这么详细的要求进行开发,但是根据链接的源代码,它应该可以正常工作。

Source

Make sure to follow these rules

【讨论】:

    【解决方案4】:

    对于多屏支持:

    1. 移动:创建不同的值文件夹,如下所述:

    values                     (For mdpi devices)
    values-hdpi                (For hdpi devices)
    values-xhdpi               (For xhdpi devices)
    values-xxhdpi              (For xxhdpi devices)
    
    1. 平板电脑:创建不同的布局文件夹,如下所述:

    layout-sw600dp             (For 7″ to 9″ Screen)
    layout-sw720dp             (For 10″ to above screen)
    

    对于图片资源: 创建 4 个可绘制文件夹:

    drawable-mdpi
    drawable-hdpi
    drawable-xhdpi
    drawable-xxhdpi
    

    【讨论】:

    • 没有别的办法了吗?
    【解决方案5】:

    为不同的屏幕创建不同的布局。

    res/layout-large/

    res/layout-sw600dp/

    ldpi (low) ~120dpi
    mdpi (medium) ~160dpi
    hdpi (high) ~240dpi
    xhdpi (extra-high) ~320dpi
    xxhdpi (extra-extra-high) ~480dpi
    xxxhdpi (extra-extra-extra-high) ~640dpi
    

    查找android UI设计示例和教程:http://www.viralandroid.com/2015/11/android-user-interface-ui-design-tutorial.html

    【讨论】:

      【解决方案6】:

      广义密度。

      A set of six generalized densities:
      ldpi (low) ~120dpi
      mdpi (medium) ~160dpi
      hdpi (high) ~240dpi
      xhdpi (extra-high) ~320dpi
      xxhdpi (extra-extra-high) ~480dpi
      xxxhdpi (extra-extra-extra-high) ~640dpi
      

      只需为不同的图像定义文件夹,例如:

      drawable-large-xhdpi: copy (drawable-xxhdpi images)
      drawable-xlarge-xhdpi: copy (drawable-xxxhdpi images)
      drawable-xxhdpi: 1080x1920 slicing
      drawable-xxxhdpi : 1440x25601 slicing
      

      在清单中添加支持多种屏幕尺寸的支持。

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

      【讨论】:

      • xlarge、large 以及现在已弃用的所有内容。用户swNNNdp.
      • 如果我们定义了 sw600dp 和 sw720dp,那么我们必须为 Nexus 9 和 Nexus 10 定义不同的布局,这就是为什么 large 和 X-Large 是一个技巧,可以同时支持单一布局。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      相关资源
      最近更新 更多