Android DisplayMetrics 显示绝对大小随方向变化

标签 android screen-size

有没有人注意到这个问题并解决了在两个方向上获得一致的绝对显示尺寸的方法?

示例,Nexus 5 (5.0.1):

  • 纵向:宽度 = 1080 高度 = 1776
  • 横向:宽度 = 1794 高度 = 1080

我原以为纵向的高度会与横向的宽度相匹配。最初怀疑状态栏,但是docs很清楚。无论如何,此示例中的状态栏高度在任一方向上均为 75px,示例中的差异为 18px。

以像素为单位显示宽度和高度的代码 fragment :

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

String dimensions = String.format("width = %d height = %d", width, height);
Log.v(TAG, dimensions);

最佳答案

根据您的日志记录,假设显示器是 FullHD,纵向高度为 144px (48dp),横向宽度为 126px (42dp) 占据显示器(当比例因子为 3 时,即 xxhdpi)。我敢打赌,它是带有“返回”、“主页”和“最近”按钮的导航栏。这足以选择布局。

编辑:

如果您需要完整的显示尺寸,API 17 提供了以下代码:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
if (Build.VERSION.SDK_INT >= 17) {
    display.getRealSize(size);
} else {
    display.getSize(size); // correct for devices with hardware navigation buttons
}

编辑2:

如果您想确保在 API 14 到 16 上获得正确的结果,请考虑遵循此答案及其评论 https://stackoverflow.com/a/11004877/2444099 .

关于Android DisplayMetrics 显示绝对大小随方向变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265200/

相关文章:

android - 为什么它总是给出错误的屏幕英寸尺寸?

IOS:无法获得正确的屏幕尺寸

java - 导入联系人仅导入联系人列表中的第一个联系人号码

android - Java 8 "Optional"不好的做法?

Android O - 旧的启动前台服务仍在工作?

powershell - 如何在PowerShell中找到最小屏幕BufferWidth?

java - OnePlusOne layout-large 还是 layout-normal?

android - 使文本完全适合屏幕大小

android - versionCode 总是被覆盖为 -1

android - 如何缩放 View 以适应 Android 动画中的内容大小?