Java Android getDisplayMetrics()未返回准确的显示大小

Java Android getDisplayMetrics()未返回准确的显示大小,java,android,pixels,screen-size,pixel-density,Java,Android,Pixels,Screen Size,Pixel Density,我正在尝试获取设备的像素宽度/高度,以便在屏幕上放置元素和映射触摸事件,但没有获得所需的效果(请注意,右下角的正方形应与右下角完全齐平): 其中AllMetrics返回: DisplayMetrics{density=2.0, width=720, height=1184, scaledDensity=2.0, xdpi=320.0, ydpi=320.0} 我注意到返回的高度也不同于虚拟设备管理器(API 19,Android 4.4)中列出的720x1280,触摸事件的x/y位置对于绘制

我正在尝试获取设备的像素宽度/高度,以便在屏幕上放置元素和映射触摸事件,但没有获得所需的效果(请注意,右下角的正方形应与右下角完全齐平):

其中AllMetrics返回:

DisplayMetrics{density=2.0, width=720, height=1184, scaledDensity=2.0, xdpi=320.0, ydpi=320.0}
我注意到返回的高度也不同于虚拟设备管理器(API 19,Android 4.4)中列出的720x1280,触摸事件的x/y位置对于绘制的元素来说似乎是准确的(即按钮的可点击区域与绘制位置相同)


这是配置错误还是我使用了不正确的获取屏幕位置的方法?

请检查此代码,它对我有效

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
在活动之外,你可以试试这个

 ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm)

要访问DisplayMetrics成员,请初始化如下对象:

DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(度量)

我的理解是getWindowManager()不能在主活动之外使用?(当我尝试使用它时,确实返回“无法解析方法”)如果我弄错了,请道歉。这是我对Android开发的第一次愤怒。如果你想使用外部活动传递活动上下文…祝你好运。那么它只是作为主活动上下文的一种方法被访问吗?使用:this.mainActivityContext.getWindowManager().getDefaultDisplay().getMetrics(dm);返回相同的问题,getWindowManager()未解决。我更新ans请立即检查其工作情况,我检查Lolipopth对于Nexus 5X返回1794 px,而它应该是1920 px:height=1184,因为它不包括96的状态栏高度,这两个数字加在一起得到1280,这是物理屏幕高度。顺便问一下,你到底想要达到什么?只需准确地将东西放在屏幕上,就可以了。我注意到如果我从0,0开始画,它与左上角齐平。状态栏不应该偏移69吗?我不知道你的意思,对不起,你找到了一个合理的解决办法吗?我也面临同样的困境。
 ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm)