【发布时间】:2016-07-23 14:01:27
【问题描述】:
我正在尝试获取设备的像素宽度/高度,以便在屏幕上放置元素和映射触摸事件,但没有获得预期的效果(注意右下角的方块应该与右下角完全齐平):
// screen size
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float ScrDensity = metrics.density;
int metricHeight = metrics.heightPixels;//
int metricWidth = metrics.widthPixels;//
Log.i("AllMetrics", metrics.toString());
// temp
int rightButton_diameter = 100;
int rightButton_xpos = metricWidth - rightButton_diameter;
int rightButton_ypos = metricHeight - rightButton_diameter;
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 位置似乎与绘制的元素(即按钮与绘制的位置相同)
这是配置错误还是我使用了不正确的获取屏幕位置的方法?
【问题讨论】:
-
height=1184 因为它不包括状态栏高度 96,这两个数字相加得到 1280 即物理屏幕高度
-
顺便说一句,你到底想达到什么目的?
-
只需准确地将内容放置在屏幕上以供初学者使用。我注意到如果我从 0,0 开始绘制,它与左上角齐平。状态栏不应该将其抵消 69 吗?否则它只是缺少底部而不是顶部的高度。
-
我不明白你的意思,对不起
-
大家找到合理的解决方案了吗?我也面临同样的困境。
标签: java android pixels screen-size pixel-density