【问题标题】:How to reliably calculate the screen size / screen zoom level when you can set different screen resolutions?当您可以设置不同的屏幕分辨率时,如何可靠地计算屏幕尺寸/屏幕缩放级别?
【发布时间】:2020-06-25 08:12:50
【问题描述】:

有没有办法可靠地计算屏幕尺寸/屏幕缩放级别,可以在 Settings App -> Display 中更改?

我发现here 可以使用DisplayMetrics.DENSITY_DEVICE_STABLEdensityDpi 来计算“缩放级别”。 这通常适用于大多数设备,但不适用于您可以更改分辨率的某些三星设备。

在三星 Galaxy S10 上,分辨率设置为 FHD+:

  • DENSITY_DEVICE_STABLE 报告 420
  • 标准显示缩放:densityDpi 报告 420
  • 下一个缩放级别:densityDpi 报告 450

420 / 420 = 1

450 / 420 = 1.0714285

按预期工作,耶!

现在我们改变分辨率:

三星 Galaxy S10 和分辨率设置为 WQHD+:

  • DENSITY_DEVICE_STABLE 报告 420
  • 标准显示缩放:densityDpi 报告 560

560 / 420 = 1.3333334

我们无法可靠地计算缩放级别,因为 densityDpi 在不同分辨率下报告相同缩放级别的不同值,但 DENSITY_DEVICE_STABLE 保持不变,无论设置什么分辨率。

还有其他方法可以做到这一点吗?

【问题讨论】:

    标签: android android-accessibility


    【解决方案1】:

    我想我自己找到了“问题”。似乎您必须自己处理活动的密度变化。当您将以下行添加到清单中时,应用程序 UI 会根据密度调整大小并且不会保持不变。因此 DisplayMetrics.DENSITY_DEVICE_STABLE 和 resources.displayMetrics.densityDpi 的值都是正确的,但在 UI 中不可见,因为系统会自动处理缩放。

    只需添加

    android:configChanges="density|fontScale"
    

    并更改分辨率。现在您应该能够看到 UI 已“正确”缩放。

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      相关资源
      最近更新 更多