簡體   English   中英

當您可以設置不同的屏幕分辨率時,如何可靠地計算屏幕尺寸/屏幕縮放級別?

[英]How to reliably calculate the screen size / screen zoom level when you can set different screen resolutions?

有沒有辦法可靠地計算屏幕尺寸/屏幕縮放級別,可以在設置應用程序-> 顯示中更改?

我在這里發現您可以使用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 保持不變,無論設置什么分辨率。

還有其他方法可以做到這一點嗎?

我想我自己找到了“問題”。 似乎您必須自己處理活動的密度變化。 當您將以下行添加到清單中時,應用程序 UI 會根據密度調整大小並且不會保持不變。 因此 DisplayMetrics.DENSITY_DEVICE_STABLE 和 resources.displayMetrics.densityDpi 的值都是正確的,但在 UI 中不可見,因為系統會自動處理縮放。

只需添加

android:configChanges="density|fontScale"

並更改分辨率。 現在您應該能夠看到 UI 已“正確”縮放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM