2010-12-09 79 views
1

我已经提出了一个类似这样的问题,但我想我会问一个更一般的问题来获得更广泛的输入。如何开始为多种设备大小/密度开发Android应用程序?

我问这个问题是因为我开发的最后两个应用程序,我把所有的图像资源放在drawable-hdpi文件夹中,没有处理横向模式,主要是在我自己的个人Droid手机上测试它,基本上感觉就像我只为自己的设备开发。虽然我一直在适当的地方使用dpi和sp,但这还不足以让我的应用在其他屏幕尺寸/密度上适当缩放。它有时可以缩放,但总是倾向于在较小的尺寸上切割屏幕的一部分。

什么是最好的方式来开始一个应用程序,将至少在所有设备上有所放大?

例如,我应该构建我的应用程序布局,使其在默认HVGA屏幕上看起来正确,并允许它缩放到更大的密度?积极构建纵向和横向布局文件是否是最佳做法?

你在做什么来确保你的应用在所有设备上看起来不错,而不仅仅关注于一种尺寸,然后争先恐后地处理这个问题?

+2

http://developer.android.com/guide/practices/screens_support.html – 2010-12-09 00:32:15

回答

2

我公司始终遵循这些规则:

  • 设置一切从supports-screens为true。 Android会知道你已经准备好了每一个屏幕环境,并且你会知道它不会进行任何屏幕虚拟化。例如:即使您的设备具有大尺寸屏幕,您的代码也会将其视为普通尺寸的屏幕
  • 不使用固定尺寸的宽度和高度。如果您必须使用“dp”作为虚拟像素。使用WRAP_CONTENT和FILL_PARENT。 “dp”是具有160dpi的屏幕上的物理像素。如果您的应用在密度较低/较高的设备上运行,则android会为您重新计算此值。
  • 使用“dp”作为字体大小的单位。
  • 尽量做一切相对。如果你想拥有“在另一个之下的东西”等,你可以使用RelativeLayout。如果你需要百分比,你可以使用LinearLayout。
  • 使用九段式作为背景。
  • 确保您将资源放入正确的可绘制/布局文件夹中。

关 - 当然,这不是每一个项目最好的方法:)有时UI设计者希望一些额外的:]

+0

莫非你讨论“不要使用固定尺寸的宽度和高度”。稍微进一步?应该用什么来代替对某物的宽度或高度进行硬编码? – joepetrakovich 2010-12-09 01:22:22