2012-07-02 73 views
1

我在android上做2D游戏,一切正常。问题在于我的手机(Xperia)上的角色移动速度非常快,但是他的手机屏幕更宽,运行速度非常慢。我尝试获取屏幕宽度并除以100,并将其设置为步骤,以便角色根据宽度有一个步骤 - 没有工作。 有什么方法可以获得某种缩放像素或某种东西。感谢帮助:)Java缩放像素?

这里是我做到这一点谁:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
height = displaymetrics.heightPixels; 
width = displaymetrics.widthPixels; 

想法?

回答

0

将您的步长乘以displaymetrics.density。这有效地将“px”值转换为“dp”值,即它应该在所有设备上具有相同的物理宽度。

+0

好奇地知道这是如何完美的工作。根据dp,屏幕的高度和宽度是否不同?比方说,在一个小屏幕上横跨宽度,它会花费一定的时间* x *。在大屏幕上,即使使用dp也需要更多时间,因为在小屏幕和大屏幕上dp的宽度不一样。对不对?或者我错过了什么。谢谢。 – capcom

+1

无论您的屏幕有多大,物理距离都是一样的。如果你的精灵是1平方厘米,每秒移动1厘米,它会在所有设备上这样做。你可以完全忽略像素。尽管(或更大的观点),它将在更大的设备上拥有更大的竞争环境。 –

+0

那么你将如何保持一个不变的大小的比赛场地?这甚至可能与大量的屏幕尺寸和密度,而不改变游戏,以适应每种不同的类型? – capcom

1

这对我有用。

int height = Resources.getSystem().getDisplayMetrics().heightPixels; 
int width = Resources.getSystem().getDisplayMetrics().widthPixels;