【问题标题】:How do you make layouts for several Android screen sizes?您如何为多种 Android 屏幕尺寸制作布局?
【发布时间】:2011-05-20 15:20:35
【问题描述】:

我对构建适用于多种屏幕尺寸的布局进行了一些研究,我正在寻找一些说明。

通常的做法是为三种屏幕尺寸(小、中、大)中的每一个都制作一个单独的布局文件,还是可以用更简单的方法来完成?

我一直在大屏幕设备上测试我的项目,即使我使用 DIP(与密度无关的像素)来填充、边距等,但当我在较小的屏幕上查看它时,它仍然会弄脏东西。我是否应该为中型屏幕设计我的项目,然后让 Android 进行适当的缩放?

我不确定这是否是一个好问题,但我正在寻找针对多种屏幕尺寸进行设计的常见做法。你是做什么的?

编辑:除此之外,例如,假设我有一个位于屏幕底部上方 40dip 的按钮,我应该直接写 40dip,还是应该使用某种像素数学,例如 40 * screenWidth / blahblah 之类的,以便它根据用户的屏幕尺寸进行缩放?我在 UI 方面的经验有限...

【问题讨论】:

标签: android layout density-independent-pixel


【解决方案1】:

在屏幕尺寸方面需要考虑两个轴:物理尺寸和密度。密度是通过在适当的情况下提供倾角和缩放资源的测量来处理的。但密度并不总是意味着大小,反之亦然。有关机制的更多信息,请参阅http://developer.android.com/guide/practices/screens_support.html

根据您支持的每个屏幕分辨率,不常见或不推荐使用不同的布局,但为不同的尺寸等级(小、中、大)设计不同的布局是完全合理的。不同大小的屏幕可能会受益于添加、删除或重新定位某些导航元素,具体取决于应用。

在一定的尺寸等级内,您应该确保您的布局能够容忍精确屏幕分辨率的差异。正如 Falmarri 建议的那样,使用相对布局、权重和其他可用工具让您的布局优雅地伸展。

【讨论】:

  • 好的,这就是我感到困惑的地方。我注意到在普通大小的模拟器实例上查看我的应用程序时,我正在丢失内容的底部英寸。一切都在正确缩放和定位。那么我应该为不同的屏幕尺寸使用单独的布局,而不是密度,对吗?
  • 这是一种方法。但是,如果您丢失了布局内容的底部英寸,我猜想一切都没有正确缩放和定位。 ;) 有许多不同的设备具有不同的分辨率和密度,它们都会报告屏幕尺寸“正常”。单个布局应该能够处理这个问题。
  • 我应该将我的应用程序设计为正常的基本尺寸,然后让它放大吗?因为我一直在做相反的事情。
  • 这可能是一种更简单的入门方式。不要害怕在您的设计中使用一些空白空间。
  • 我有不同的布局,但仍然无法正常工作。 stackoverflow.com/questions/34378238/landscape-mode-for-app
【解决方案2】:

一般规则是在布局 xml 中使用与密度无关的像素(倾角)来定义尺寸 - 我看到您已经这样做了。这样做我只有所有设备范围的唯一布局。需要拆分的是图形。为此,我使用了 3 个不同的可绘制目录 - “drawable-ldpi”、“drawable-mdpi”和“drawable-hdpi”。这样做是为了使图像在不同的屏幕密度(假设屏幕尺寸相同 - 例如正常)上具有相同的尺寸(比如说,以毫米为单位),它们应该按如下方式缩放:

  • drawable-hdpi: 150%
  • drawable-mdpi: 100%
  • drawable-ldpi:75%

这可能是个坏建议。但是,如果您查看Google chart of Screen Sizes and Densities,您可以决定不投入额外精力对大屏幕进行彻底测试,因为市场上几乎没有此类设备。

【讨论】:

  • 我也支持 Falmarri - 使用相对布局。视图应该只填充父级或包装内容。可能仅将常量用于文本大小和填充/边距。
  • 当你说'缩放'时,你的意思是:打开photoshop,加载图像,然后转到文件>缩放图像(或类似的东西)并将其缩小一定百分比?
  • @PetrakovichJ:是的,我的意思是,在将图像放入这些目录之前,应该在某些图像编辑器中对其进行缩放。
  • 好的,还有一件事,我是缩放图像尺寸还是图像分辨率?我让 Android 扩展它们的大小吗?
  • @PetrakovichJ:好的 :) 假设你有一个按钮的主/主图像,它的尺寸是 1000x1000 像素。为了使每个屏幕密度的按钮具有相同的物理尺寸(例如以毫米为单位)(并假设 mdpi 上的 100x100px 对您的应用程序来说是可以的),您应该缩小(或调整大小,更改其大小)图像中的主图像编辑器:mdpi 为 100x100px,hdpi 为 150x150px,ldpi 为 75x75px。我希望这个用例将有助于理解这个想法。
【解决方案3】:

不制作单独的布局并不是很常见的做法。只有当您有无法拉伸的图像时,这才是真正推荐的方式。

在具有更小/更大屏幕的设备上查看内容时,它们总是看起来有点拉伸/压缩。这就是不同尺寸屏幕的定义。您应该只使用相对布局并让 android 控制特定的像素数。

【讨论】:

  • 我有不同的布局,但仍然无法正常工作。 stackoverflow.com/questions/34378238/landscape-mode-for-app
  • 这个问题有 5 年历史了。问一个新的。
  • 为什么?只问新问题。为什么你会假设 5 年前回答过类似问题的人会关心你的新问题?
  • 你不明白我在说什么。我已经问了这个新问题。我也简单地将它与您联系起来。我希望有人在该领域有足够的知识来回答这个问题,也可能能够回答我的问题。我想我错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多