java - Android getDisplayMetrics() 未返回准确的显示尺寸

标签 java android pixel screen-size pixel-density

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

White square should be flush in the lower right corner

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

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

最佳答案

检查此代码,它对我有用

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

在 Activity 之外,您可以尝试此操作

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

关于java - Android getDisplayMetrics() 未返回准确的显示尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542614/

相关文章:

android - 使用 Android volley 进行单元测试

java - 保留警报对话框选项

java - 删除 BufferedImage 像素值和/或将其设置为透明

ios - AVCaptureSession "output sample buffer"读取像素坐标给出错误的颜色

java - 将数据作为 json 字符串插入 Mysql 服务器 - 无数据上传

java - Spring属性配置语法?

java - Spring 非 Boot 应用程序中环境特定的 application.properties 文件

java - FTP Get 适用于 Windows,但不适用于 Linux

android - 为什么这些按钮在 TableLayout 中没有对齐?

processing - 随着时间的推移对图像进行像素化并在处理中循环