[英]How to support different screen size and different screen resolutions in android
[英]How to reliably calculate the screen size / screen zoom level when you can set different screen resolutions?
有沒有辦法可靠地計算屏幕尺寸/屏幕縮放級別,可以在設置應用程序-> 顯示中更改?
我在這里發現您可以使用DisplayMetrics.DENSITY_DEVICE_STABLE和densityDpi來計算“縮放級別”。 這通常適用於大多數設備,但不適用於您可以更改分辨率的某些三星設備。
在三星 Galaxy S10 和分辨率設置為 FHD+ 上:
420 / 420 = 1
450 / 420 = 1.0714285
按預期工作,耶!
現在我們改變分辨率:
三星 Galaxy S10 和分辨率設置為 WQHD+:
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.