安卓屏幕坐标如何工作?

171

我正在使用Android Animation,但发现Android坐标系相当令人困惑,因此在这里询问如何在Android中使用坐标。我正在遵循此图像将一个视图移动到另一个视图,但似乎无法正常工作:

image


事实上,你所画的是正确的,只不过逆时针旋转了90度。 - Antek
3个回答

331

这里输入图片描述

这张图片展示了横向和纵向两种屏幕方向

要获取MaxX和MaxY,继续阅读。

对于Android设备屏幕坐标,以下概念适用。

Display mdisp = getWindowManager().getDefaultDisplay();
Point mdispSize = new Point();
mdisp.getSize(mdispSize);
int maxX = mdispSize.x; 
int maxY = mdispSize.y;

编辑:- ** **对于支持 Android API 级别低于 13 的设备,可以使用以下代码。

    Display mdisp = getWindowManager().getDefaultDisplay();
    int maxX= mdisp.getWidth();
    int maxY= mdisp.getHeight();

(x,y) :-

1) (0,0) 为左上角。

2) (maxX,0) 为右上角。

3) (0,maxY) 为左下角。

4) (maxX,maxY) 为右下角。

其中 maxX 和 maxY 是屏幕在像素中的最大高度和宽度,我们已经在以上给出的代码中检索到了这些值。


如果我们有一个 View,其 layout_width="1" layout_height="1",那么这是否意味着左上角是 (0,0),右下角是 (1,1)?这难道不意味着 View 的宽度为 2,高度为 2 吗?矛盾。 - riwnodennyk
@AAnkit,你能确认一下吗?这对于屏幕的两个方向(纵向和横向)都有效,屏幕方向的改变是否会影响到左上角的(0,0)、右上角的(maxX,0)、左下角的(0,maxY)和右下角的(maxX,maxY)? - Qadir Hussain

20

对于 Android API 等级 13 及以上版本,您需要使用以下内容:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int maxX = size.x; 
int maxY = size.y;

屏幕的左上角是 (0,0),右下角是 (maxX,maxY)。

'getWidth()' 方法已经自 API 13 起被弃用,不能再使用来获取屏幕尺寸。

此外,getwidth()getHeight()android.view.View 类中的方法。因此,当您的 Java 类扩展 View 类时,就没有 WindowManager 的开销了。

          int maxX=getwidht();
          int maxY=getHeight();

就是这么简单。


9

希望这张图片能够消除大家的困惑,它来自于那里

Android screen coordinate


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接