2

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

白色方块应与右下角齐平

// 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 位置似乎与绘制的元素准确(即按钮的可点击区域是与绘制位置相同)

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

4

2 回答 2

3

检查此代码对我有用

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;

活动之外你可以试试这个

 ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm)
于 2016-07-23T14:09:07.527 回答
0

要访问 DisplayMetrics 成员,请像这样初始化一个对象:

DisplayMetrics 指标 = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);

于 2016-07-23T14:11:30.930 回答