如何为多种Android屏幕尺寸制作布局?

时间:2010-12-05 20:05:21

标签: android layout density-independent-pixel

我已经做过一些关于构建适用于多种屏幕尺寸的布局的研究,我正在寻找一些澄清。

通常的做法是为三种屏幕尺寸(小型,中型,大型)制作单独的布局文件,还是可以通过更简单的方法完成此操作?

我一直在大屏幕设备上测试我的项目,即使我使用DIP(密度无关像素)进行填充,边距等,当我在较小的屏幕上查看它时,它仍然会重新填充。我应该为中型屏幕设计我的项目,然后让Android适当地扩展它吗?

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

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

3 个答案:

答案 0 :(得分:14)

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

根据您支持的每个屏幕分辨率,不常见或建议使用不同的布局,但为不同的大小类(小,中,大)设计不同的布局是完全合理的。根据应用程序的不同,添加,删除或重新定位某些导航元素可能会使不同大小的屏幕受益。

在特定大小的类中,您应该确保您的布局能够容忍精确屏幕分辨率的差异。正如Falmarri建议的那样,使用相对布局,权重和其他可用工具让您的布局优雅地延伸。

答案 1 :(得分:3)

一般规则是在布局xmls中使用密度无关像素(凹陷)进行大小定义 - 我知道你已经这样做了。这样做我只有所有设备的唯一布局。需要拆分的是图形。为此,我使用3个不同的可绘制目录 - 'drawable-ldpi','drawable-mdpi'和'drawable-hdpi'。这样做是为了使图像在各种屏幕密度上具有相同的尺寸(比如说,以毫米为单位)(假设屏幕尺寸相同 - 例如正常),它们应按如下方式缩放:

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

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

答案 2 :(得分:1)

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

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