对于一个应用程序我想从上到下设计布局:从全屏尺寸开始,将屏幕大小分成网格,并将控件放在此网格中的固定位置等。对我来说,似乎是最简单的方法来设计适合几乎所有屏幕尺寸的应用程序。理想情况下,我也想扩展其他东西:Cornerroundings,fontsizes等。
到目前为止,我的印象是Android不想支持这种方法:有一些机制可以扩展几乎所有内容,但它很快就变得难看: LinearLayout和TableLayout支持权重,所以我可以合理地使用它们,但如果我想要与屏幕大小一起缩放的边距,我需要大量的嵌套布局。 这有什么设计理由吗? 实现一个类似于AbsoluteLayout的布局应该是非常简单的,但是基于可用屏幕大小的一部分,但是没有这样的东西存在。
为什么不呢?有没有理由为什么人们不想要这样的事情,或者只是没有人为实现它而烦恼?
答案 0 :(得分:1)
对于按屏幕尺寸缩放的布局,请勿使用像素指定尺寸。而是使用“dp”单位(或dip)。这个单元是密度无关的,所以当你的布局完美地适应模拟器的屏幕尺寸时,Android会为你进行缩放,它适用于像廉价手机(320x240px)一样小的屏幕。 10“平板电脑。当然,您需要提供各种分辨率的图像,因为图像缩放总是会很快变坏。
来自官方Android开发者网站:
使用像素定义布局尺寸是一个问题,因为不同的屏幕具有不同的像素密度,因此相同数量的像素可能对应于不同设备上的不同物理尺寸。因此,在指定尺寸时,请始终使用dp或sp单位。 dp是与密度无关的像素,其对应于160dpi的像素的物理尺寸。 sp是相同的基本单位,但是按用户首选的文本大小(它是与比例无关的像素)进行缩放,因此在定义文本大小时(但从不用于布局大小)应使用此测量单位。
在同一页面中,他们展示了如何为各种屏幕密度提供图像:
http://developer.android.com/training/multiscreen/screendensities.html