安卓布局设计原则

4

我一直在研究如何为不同的屏幕尺寸、屏幕密度和方向设计布局,但越来越困惑了。

1. 设计密度 vs 屏幕尺寸
我看了这个链接

现在当为gingerbread设计时,应该考虑什么。每个文件夹中的布局都说LDPI、HDPI和MDPI。但这会增加整个应用程序的大小。

现在我已经停止考虑LDPI。但现在我们也有XHDPI和XXHDPI。 那么我们该如何设计所有页面并保持大小合理呢?

屏幕尺寸、密度或分辨率哪个更重要?

对于图片,可以使用9-patch images哪种工具是创建它们的最佳工具?

2.横屏 vs 竖屏。

现在,在这个布局方程中,如果我们包括不同方向的布局,应用程序会变得更加臃肿,工作也更加繁琐。

创建较小的xml并将它们包含在内是一个好的解决方案,但即使考虑到所有不同类型,它仍然变得繁琐。尤其是对于Android 4及以上版本,每个片段都有不同的布局。

我的问题是——考虑到上述所有因素,设计布局的最佳和最有效的方法是什么?


你在这方面取得了什么进展?如果你回复一下,我会很感激的 :) - Yash Sampat
我使用相同的布局页面,但为不同的分辨率单独设置dimen.xml和style.xml。 - D-D
3个回答

6
你可以尝试以下链接: 问题看起来很广泛,但你可以阅读这个。
  1. 欢迎使用Android设计,

  2. 是否有标准的Android应用程序布局或者我应该从头开始设计我的应用程序?,

  3. Android UI设计的10个技巧,

关于9-patch图像,您可以查看我的这篇文章。

  1. Android九宫格图案的实用性

  2. 教育指南

为了支持基于多个设备布局,

请查看支持多屏幕这个链接:

对于多布局组件

res/layout/my_layout.xml             // normal screen size ("default")
res/layout-small/my_layout.xml       // small screen size
res/layout-large/my_layout.xml       // large screen size
res/layout-xlarge/my_layout.xml      // Hd tablet

用于定位。

        res/layout/              # default (portrait)
            main.xml
        res/layout-land/         # landscape
            main.xml
        res/layout-large/        # large (portrait)
            main.xml
        res/layout-large-land/   # large landscape
            main.xml


1. You can also use `qualifier` for having multipal resource. 

1
谢谢你提供的那个10个技巧的链接,非常有启发性。这很好,谢谢。 - D-D
你好Lavekhush,我们之前尝试过这个,但是有些设备这种机制会失败。 - Neetu Shrivastava

2
您可以创建不同的文件夹来适配不同屏幕尺寸/分辨率,例如:
值目录 - - ldpi - mdpi - hdpi - xhdpi - nodpi - tvdpi
在值目录下,您可以有dimens、integers、booleans等文件夹。
在XML布局中,使用这样的语句 android:width="@integer/size_for_this" 安卓会根据设备的DPI来确定引用哪个目录。您还可以指定其他类型的目录,如宽度、高度等。
更多信息请参见官方文档提供资源

姜饼系统也可以实现这个吗? - D-D
资源文件夹根据屏幕尺寸的添加是在API级别4中实现的,而根据密度的添加则是在API级别8中实现的。因此,在Gingerbread中也可以使用它。我提供的Android文档官方链接详细解释了每个API中添加的内容。 - Marcus Gabilheri

2
Play Store 允许您发布多个针对不同硬件设备的 APK。要针对的设备属性在每个不同 APK 的清单中指定。对于不同的屏幕密度,可以使用 <compatible-screens> 元素。例如,针对 ldpi 分辨率小型设备的应用程序将包括:
<compatible-screens>

    <screen android:screenSize="small" android:screenDensity="ldpi" />

</compatible-screens>

通过这种方式,您可以为针对不同设备的同一应用程序编译和构建不同的 APK,并根据每个单独 APK 针对的设备分辨率在 res/drawable 目录中包含不同大小的图像。不同的 APK 可以在 Play 商店下相同的应用程序标题下发布,并且将根据该设备的硬件由 Play 商店服务 APK(即每个 Android 设备上都存在的 Play 商店应用程序)自动过滤。
参考资料:
1. 多 APK 支持
2. 针对特定屏幕进行分发
3. Google Play 上的筛选器

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