在屏幕中查看坐标

View coordinate in Screen

我有下一个问题:

我正在开发一个应用程序,当我移动并放下 imageView 时,如果视图低于屏幕的一半高度,则转到 (X,Y) 位置,如果超过屏幕的一半高度,则转到另一个位置。

我需要计算通用屏幕的一半,所以我使用下一个代码:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
halfHeight = displaymetrics.heightPixels / 2;

效果很好,我在 1920x1080 屏幕上尝试,代码 returns 540。 但是当我要查看当我放下视图时是在一半以下还是一半以上时,这是我不明白的。我得到了视图的 Y 位置并且没问题,我不明白为什么 Y = 0 不在屏幕的顶部,如果我将视图移到顶部,我得到一个负 Y 位置,如 -260。

有人能解释一下为什么会这样吗? 有没有办法让 (0,0) 位置从屏幕的左上角开始?

您好,希望您理解

如果您调用 getX() 或 getY(),那么您将获得 x 和 y 的相对值(相对于发出调用的视图)。如果您调用 getRawX() or getRawY(),它将为您提供视图相对于设备屏幕的绝对位置。

您得到的负值很可能是 -260,因为您正在将 ImageView 260 拖离进行调用的视图(可能屏幕顶部的视图的高度为 260)。如果您尝试使用 getX() 或 getY() 来计算屏幕中间,那么您必须考虑所有视图的所有尺寸,但我认为您想使用 getRawX() and getRawY()

0度角对应0度几何角(手表3点钟方向)

尝试使用翻译将坐标翻译到屏幕顶部。

http://developer.android.com/reference/android/graphics/Canvas.html#translate(float, 浮动)