【问题标题】:Top down Layout自顶向下布局
【发布时间】:2012-12-20 05:49:12
【问题描述】:

对于我想从上到下设计布局的应用程序:从全屏尺寸开始,将屏幕尺寸分割成一个网格并将控件放置在该网格的固定位置等。对我来说,这似乎是设计适合几乎所有屏幕尺寸的应用程序的最简单方法。理想情况下,我也想缩放其他东西:Cornerroundings、fontsizes 等。

到目前为止,我的印象是 Android 不想支持这种方法:几乎所有东西都有缩放机制,但它很快就变得丑陋了: LinearLayout 和 TableLayout 支持权重,所以我可以很好地使用它们,但是如果我想要随屏幕大小缩放的边距,我需要很多嵌套布局。 这有什么设计原因吗? 实现类似于 AbsoluteLayout 的布局应该非常简单,但一切都基于可用屏幕尺寸的一小部分,但不存在这样的东西。

为什么不呢?有什么理由不想要这样的东西,还是只是没有人费心去实现它?

【问题讨论】:

    标签: android android-layout tablelayout


    【解决方案1】:

    对于随屏幕尺寸缩放的布局,不要使用像素来指定尺寸。改用“dp”单位(或倾角)。这个单元是独立于密度的,所以当你让你的布局完全适合模拟器屏幕尺寸时,Android 会为你处理缩放,它适用于小到便宜手机 (320x240px) 的屏幕到大到10" 平板电脑。当然,您需要提供各种分辨率的图像,因为图像缩放总是很快变得非常糟糕。

    来自官方 Android 开发者网站:

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

    在同一页面中,他们展示了如何为各种屏幕密度提供图像:

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

    【讨论】:

    • 如果我正确理解文档 1dp = 1/160 英寸或类似的东西。即,它是大小的绝对度量。这将随着像素密度正确缩放,但不会随着屏幕尺寸缩放,或者是吗?我正在考虑设置一个文本大小,即屏幕总高度的 5%。我意识到这会在小型设备上产生非常小的字体,但在我看来,这种方法仍然会产生在多种屏幕尺寸上有用的东西,只需一个布局。
    • 我不确定 1dp = 1/160in 是否正确,老实说我不太了解这部分。我所知道的是,每个设备都有不同的屏幕密度,这意味着廉价手机的屏幕密度会更小,比如 160ppi,而高端设备的屏幕密度会更高,比如 S3,它有 306ppi。对于开发,我建议您使用默认的 480x320dp 屏幕尺寸,并相应地缩放您的位图。
    猜你喜欢
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 2015-09-08
    相关资源
    最近更新 更多