Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java缩放像素?_Java_Android_Scale_Pixel - Fatal编程技术网

Java缩放像素?

Java缩放像素?,java,android,scale,pixel,Java,Android,Scale,Pixel,我正在android上做一个2D游戏,一切正常。问题是这个角色在我的手机(Xperia)上移动得非常快,但在屏幕更宽的手机上,他运行得非常慢。我尝试获得屏幕宽度并除以100,然后将其设置为步长,这样角色将根据宽度有一个步长-不起作用。 有没有办法得到某种缩放像素之类的东西。感谢您的帮助:) 我是这样做的: DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().get

我正在android上做一个2D游戏,一切正常。问题是这个角色在我的手机(Xperia)上移动得非常快,但在屏幕更宽的手机上,他运行得非常慢。我尝试获得屏幕宽度并除以100,然后将其设置为步长,这样角色将根据宽度有一个步长-不起作用。 有没有办法得到某种缩放像素之类的东西。感谢您的帮助:)

我是这样做的:

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

想法?

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

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

如果希望密度比例符合默认值160,则它是一个乘数,当您获得以像素为单位的高度和宽度时,您可以在代码中使用此乘数来正确缩放

请参阅下面链接的开发者页面的密度部分


如果需要默认值为160的密度比例,它是一个乘数,当您获得以像素为单位的高度和宽度时,可以在代码中使用此乘数来正确缩放

请参阅下面链接的开发者页面的密度部分

这对我很有用

int height = Resources.getSystem().getDisplayMetrics().heightPixels;
int width = Resources.getSystem().getDisplayMetrics().widthPixels;
这对我有用

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

但我很想知道它是如何完美工作的。即使根据dp,屏幕的高度和宽度是否也不同?比如说,在一个小屏幕上运行整个宽度,字符需要一定的时间x。在大屏幕上,即使使用dp,也需要更多的时间,因为在小屏幕和大屏幕上,dp的宽度不同。。正确的?还是我遗漏了什么。谢谢。不管你的屏幕有多大,物理距离都是一样的。如果您的精灵为1cm²且每秒移动1cm,则它将在所有设备上移动。你可以完全忽略像素。不过,在更大的设备上,它将有一个更大的比赛场地(或更大的视野)。那么,如何保持一个恒定大小的比赛场地呢?即使在屏幕大小和密度巨大的情况下,不改变游戏以适应每一种不同的类型,这是否可能?但我很想知道这是如何完美工作的。即使根据dp,屏幕的高度和宽度是否也不同?比如说,在一个小屏幕上运行整个宽度,字符需要一定的时间x。在大屏幕上,即使使用dp,也需要更多的时间,因为在小屏幕和大屏幕上,dp的宽度不同。。正确的?还是我遗漏了什么。谢谢。不管你的屏幕有多大,物理距离都是一样的。如果您的精灵为1cm²且每秒移动1cm,则它将在所有设备上移动。你可以完全忽略像素。不过,在更大的设备上,它将有一个更大的比赛场地(或更大的视野)。那么,如何保持一个恒定大小的比赛场地呢?即使屏幕大小和密度巨大,游戏也不需要改变以适应各种不同的类型,这是可能的吗?