这是我的第一篇文章,所以如果我在问我的问题时做了任何错误,我会提前道歉。我已经在网上看了一个特定的答案,但无法找到一个,所以这里去.....了解DIP精灵移动/速度
我正在写一个基于Surfaceview的游戏,到目前为止,一切进展顺利,然而,我想移动我的主精灵,例如在160DPI屏幕上的1个像素作为基线(因此基本上1个DIP是1像素= 1的DIP在160DPI屏幕上是否正确?)
我正在使用使用以下forumla:
private static final float spritemovestep = 1f;
final float scale = getResources().getDisplayMetrics().density;
MoveX = (int) (spritemovestep * scale + 0.5f);
然后......类似
SpriteX=SpriteX+MoveX
第一个问题 - 这是正确的吗?
如果是,有人可以解释+ .05f实际上是什么,我读过,这是为“四舍五入到最接近的数字”,但....
如果spritemovestep = 1,则在一个120DPI屏幕(它返回0.75作为我认为的规模),它可以作为:1 x .75 + .5?这将是1.25?那么.5是什么?
当它被转换为int值时结果是什么?
在某些情况下,最终结果在低密度屏幕上似乎为'0',所以精灵根本不动。
另外一些应该以不同速度移动的精灵正以相同的速度在一定的密度下移动。
我敢肯定我在这里很愚蠢,缺少一些东西,但我不明白这应该如何工作。如果我想通过MDPI屏幕上的1个DIP /物理像素来移动我的精灵,它在LDPI屏幕上的移动方式不到1个像素?
此外,什么是这个公式我不断看到:
px = dp * (dpi/160) - When is this used?
会很感激,如果有人能够回答我的问题。
感谢所有