Java缩放像素?
我正在android上做一个2D游戏,一切正常。问题是这个角色在我的手机(Xperia)上移动得非常快,但在屏幕更宽的手机上,他运行得非常慢。我尝试获得屏幕宽度并除以100,然后将其设置为步长,这样角色将根据宽度有一个步长-不起作用。 有没有办法得到某种缩放像素之类的东西。感谢您的帮助:) 我是这样做的:Java缩放像素?,java,android,scale,pixel,Java,Android,Scale,Pixel,我正在android上做一个2D游戏,一切正常。问题是这个角色在我的手机(Xperia)上移动得非常快,但在屏幕更宽的手机上,他运行得非常慢。我尝试获得屏幕宽度并除以100,然后将其设置为步长,这样角色将根据宽度有一个步长-不起作用。 有没有办法得到某种缩放像素之类的东西。感谢您的帮助:) 我是这样做的: DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().get
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,则它将在所有设备上移动。你可以完全忽略像素。不过,在更大的设备上,它将有一个更大的比赛场地(或更大的视野)。那么,如何保持一个恒定大小的比赛场地呢?即使屏幕大小和密度巨大,游戏也不需要改变以适应各种不同的类型,这是可能的吗?