【发布时间】:2011-05-12 01:31:24
【问题描述】:
作为为 Android 编写实时游戏的一个自然部分,我需要能够支持各种屏幕分辨率、密度等。
从 Android SDK 文档中的primary article,我知道我应该为游戏中的每个位图创建单独的资源,以适应不同的屏幕密度;但我不太明白如何处理位置、速度等。
文档说我应该在我的代码中使用与密度无关的单位,只要我使用显式值。但这是否意味着我需要将绝对像素转换为与密度无关的单位每次我使用显式值?
例如,我正在使用高密度 800x480 显示器开发游戏(横向)。现在,我很乐意以每帧 1 个像素的速度移动精灵(在 增量时间之后,等等)。所以看起来像:
sprite.setVelocityX(1);
如果我要使用与密度无关的单位,就像文档所建议的那样,我是否必须在 everywhere 使用明确的数字来执行类似的操作?
sprite.setVelocityX(convert(1));
public float convert(float value)
{
return value * getResources().getDisplayMetrics().density;
}
感觉好像我没有正确理解这个......
【问题讨论】:
-
不知道这是否有帮助,但 iOS 用点的概念本机处理这个问题。您以点为单位定义屏幕元素。然后 iOS 将它们转换为像素。标准屏幕上的 1pt = 1px。视网膜显示屏上的 1pt = 4px。希望 android 提供这种类型的内置转换(否则听起来确实像一个 PITA 来处理)
标签: android android-layout android-2.2-froyo