2012-12-19 40 views
3

对于一个应用程序,我想从上到下设计布局:从全屏尺寸开始,将屏幕尺寸分割成网格,并将控件放置在此网格中的固定位置等等。成为适合几乎所有屏幕尺寸的应用程序的最简单方法。理想情况下,我也想要扩展其他的东西:角落环境,字体大小等。自上而下布局

到目前为止,我的印象是Android不想支持这种方法:有几种缩放几乎所有东西的机制,但它变得非常快: LinearLayout和TableLayout支持权重,所以我可以很好地使用这些权重,但是如果我想要利用屏幕大小进行缩放的边距,我需要大量的嵌套布局。 这有一些设计理由吗? 实现与AbsoluteLayout类似的布局应该非常简单,但是将所有内容都基于可用屏幕大小的一部分,但不存在这样的事情。

为什么不呢?为什么不想要这样的事情,还是没有人愿意实施它?

回答

1

对于与屏幕尺寸成比例的布局,请勿使用像素来指定尺寸。改用“dp”单位(或dip)。这个单元是密度独立的,所以当你的布局完美地适应模拟器的屏幕尺寸时,Android会照顾到你的扩展,它可以用于像廉价手机(320x240像素)一样小的屏幕, 10" 平板电脑你当然需要提供在不同分辨率的图像,因为图像缩放总是变得很糟糕很快

从官方Android开发者网站:

定义布局尺寸与像素是一个问题因为不同的屏幕具有不同的像素密度,所以相同数量的像素可能对应于不同设备上的不同物理尺寸,因此,在指定尺寸时,请始终使用dp或sp单位。一个与密度无关的像素,对应于160 dpi下像素的物理尺寸。 sp是相同的基本单位,但是会根据用户的首选文字大小(它是一个与比例无关的像素)进行缩放,所以在定义文字大小(但决不是布局大小)时应该使用此测量单位。

在同一个页面上展示他们如何为不同的屏幕密度提供的图像:

http://developer.android.com/training/multiscreen/screendensities.html

+0

如果我理解正确的文档= 1DP 1/160英寸或类似的东西。即,它是尺寸的绝对测量值。这可以像素密度正确缩放,但不会随着屏幕尺寸缩放,还是它?我正在考虑将文本大小设置为屏幕总高度的5%。我意识到,这将在小型设备上生成非常小的字体,但在我看来,这种方法在单一布局的情况下会产生对各种屏幕尺寸有用的内容。 – user1917051

+0

我不确定1dp = 1/160in是否正确,但我确实不太了解这部分。我所知道的是,每台设备的屏幕密度都不相同,这意味着便宜的手机密度会更小,例如160ppi,而更高端的设备屏幕密度会更高,如S3,其拥有306ppi。对于开发,我建议您使用默认的480x320dp屏幕尺寸,并相应地缩放您的位图。 –