我收到了我的第一台摩托罗拉Droid用户发送的电子邮件。Android 2.0引入的新分辨率480x854(与320x480相比)正在给我的用户界面带来麻烦。一切都变小了,位置也不正确。
我原以为,如果我们遵循XML布局指南,就可以做到分辨率安全,因为没有使用绝对坐标。有没有人在UI中进行分辨率安全方面的经验?我们需要为每个分辨率和方向创建一个main.xml吗?
我收到了我的第一台摩托罗拉Droid用户发送的电子邮件。Android 2.0引入的新分辨率480x854(与320x480相比)正在给我的用户界面带来麻烦。一切都变小了,位置也不正确。
我原以为,如果我们遵循XML布局指南,就可以做到分辨率安全,因为没有使用绝对坐标。有没有人在UI中进行分辨率安全方面的经验?我们需要为每个分辨率和方向创建一个main.xml吗?
您使用了哪些尺寸单位?
据我所知,使用dp
和sp
应该是安全的。
dp 密度无关像素 - 这是一种基于屏幕物理密度的抽象单位。这些单位相对于160 dpi的屏幕,因此在160 dpi的屏幕上,一个dp就是一个像素。dp到像素的比例会随着屏幕密度而改变,但不一定成比例增加。注意:编译器接受"dip"和"dp"两种单位,但"dp"更符合"sp"。
sp 缩放独立像素 - 这类似于dp单位,但它也会根据用户的字体大小偏好进行缩放。建议您使用此单位来指定字体大小,以便为屏幕密度和用户的偏好进行调整。
eclair模拟器对于这些问题非常有效,还要确保阅读:
http://developer.android.com/guide/practices/screens_support.html
您的应用程序会根据许多因素(甚至是最小sdk)响应不同的分辨率。 此外,页面上还有一些最佳实践:
- 在XML布局文件中使用wrap_content、fill_parent和dip单位,而不是px
- 避免使用AbsoluteLayout
- 不要在代码中使用硬编码像素值
- 使用密度和/或分辨率特定资源
除了分辨率差异之外,需要考虑的另一件事是Droid的WVGA屏幕与先前的设备(如G1)具有不同的宽高比。在我下载的许多旧应用程序中,这会表现为屏幕底部的间隙或纵向错位的元素。您可能需要尝试在带有WVGA皮肤的模拟器中运行应用程序,以检查布局对宽高比的任何隐藏假设。