[英]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.