2012-08-10 72 views
0

我有一个iOS应用程序,在我尝试移植到Android的每个屏幕上使用独特的纹理背景(想象游戏标题屏幕或其他)。在iOS上,他们知道解决方案,并只是设计了这些背景的背景。显然这在Android上是不可能的。Android非重复纹理背景

将纹理/不可重复背景放入Android的最佳方式是在各种屏幕尺寸和宽高比下工作?

我已经想到了到目前为止的解决方案是:

  1. 适合最短的尺寸和允许图像去关闭屏幕的边缘的较大尺寸
  2. 使背景图像大和中心然后当分辨率小于图像时,使其伸展超出边缘
  3. 拉伸图像以适合(这是丑陋的,我想避免它)
  4. 创建不同版本的图像为每个决议。 (这似乎超出了这个项目可能的范围)

据我可以告诉Android,1.和2.是不可能的,因为背景图像设置大小的视图来匹配它们的大小(你不能说它只是超越边缘,如果我错了,请纠正我)。

你会在这种情况下使用什么解决方案?

回答

1
  1. 使用(match_parent)ImageView来模拟背景图像。 (通过调整imageview的缩放类型,可以得到点1,2的结果) http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

  2. 使用9-补丁图像。您可以指定图像的哪部分可以拉伸。对于你的情况,我建议在你的图像中添加一个小的“边距”,并使用9贴片进行拉伸。只有边缘会被拉伸,从而保持图像的高宽比。 android developer 9-patch

+0

这听起来很合理。背景图像看起来相当有限,但使用imageview作为代理背景似乎是一个很好的替代品。谢谢。 – Dylan 2012-08-10 03:33:02

1

为每个分辨率创建图像的不同版本。

正如你可能知道的,Android可以运行在具有不同分辨率和屏幕密度的各种设备上。为了完全兼容所有这些需要一些图形工作;您需要每种可能的屏幕密度资源(在这种情况下,分辨率)。

有关完整的详细信息,请参阅Android开发人员文档中的Supporting Multiple Screens

除非在开发过程中出现严重错误,否则在创建这些资源时应该使用原始文件(例如.psd)。

+0

我们有这些文件,但我们没有可悲的预算。我希望有一种方法可以让工作量减少80%。 – Dylan 2012-08-10 03:31:36