0

我需要开发一个 Android 应用程序,我是这个环境的初学者。实际上,我们需要将使用 Objective-C 为 iPhone 编写的现有应用程序移植到 Android。我们目前针对四款设备:Samsung S2、S3、Note 和 Note 2。该应用程序完全由按钮和背景中的自定义图像组成。根据我在 iOS 开发中的经验,我们为非视网膜和视网膜设备设计了 320x480 和 640x960 背景,只要我们提供适当的 @2x 后缀,系统就会选择正确的背景。我试图了解 Android 的处理方式。我已经阅读了 [Supporting Multiple Screens] (http://developer.android.com/guide/practices/screens_support.html) 文档,但我仍然对一些事情感到困惑。

据了解,有大小和密度类别,分别命名为 small、normal、large 和 xlarge 以及 ldpi、mdpi、hdpi、xhdpi。我们需要生成适当的位图资源并将它们放置在正确的“drawable-XY”文件夹下。这看起来像是 iOS 中 @2x 表示法的高级版本。但我不知道我们应该如何准备背景图像。例如,如果我计算正确,Note1 和 Note2 的分辨率分别为 449x718dp 和 431x767dp,因此它们都属于正常尺寸类别。如果我们为 Note1 准备一个背景图片,它的屏幕比例将不会与 Note2 相同,并且必须调整背景图片的大小。因此,系统不处理属于相同尺寸和像素密度类别的不同尺寸设备。所以,我不明白这个系统如何允许我们在相同尺寸密度类别下为类似设备重用相同的背景图像。我们是否应该为 Note1 和 Note2 准备单独的背景图像?如果是这样,这种分类的含义是什么,我是否遗漏了什么?

4

2 回答 2

1

我们目前针对四款设备:三星 S2、S3、Note 和 Note 2。

除非您正在控制应用程序的分发,并且可以以某种方式限制它在这些设备上运行,否则这些设备充其量只是示例设备。例如,如果您计划通过 Play 商店分发您的应用程序,那么您的应用程序将在许多其他应用程序上结束,并具有一系列屏幕尺寸、密度和分辨率。虽然您也许可以通过<compatible-screens>清单中的元素限制大小/密度组合,但仍然会有一系列分辨率。

所以,我不明白这个系统如何允许我们在相同尺寸密度类别下为类似设备重用相同的背景图像。我们是否应该为 Note1 和 Note2 准备单独的背景图像?

如果您可以将您的应用程序的分发限制在这四种设备上,如果您想使用android.os.Build嗅探设备并根据设备型号选择不同的图像,欢迎您这样做。

在您将应用程序分发给更广泛的受众的情况下,您的应用程序可以在任意设备上运行,您没有实际的方法来预先确定可能使用的所有可能的分辨率。因此,您无法为每种可能的分辨率创建自定义图像。在这种情况下,您将需要重新考虑应用程序的方法,从数百万其他桌面和 Web 应用程序开发人员用于处理任意分辨率的技术中学习。

于 2013-01-16T17:58:37.033 回答
0

最好使用 dp 作为控件大小,对 Android 应用使用 9-patch。Android SDK 无法处理这种详细的分类。hdpi/mdpi large/xlarge 屏幕可以在一定程度上有所帮助,但你的情况我认为没有简单的方法。如果您绝对需要为每个设备制作单独的图像,那么您可以考虑像这样进行布局:s2_layout_actvity.xml、s3_layout_activity.xml,并在每个设备中使用相应的图像。并在调用 setContentView 之前检测您拥有的设备。

于 2013-01-16T17:56:17.650 回答