在这里,我编写了一个程序,它可以根据程序运行的设备自动调整 View 元素的大小。
在某些情况下,在自动模式下正确调整这些元素的大小存在问题,并且由于我最初将所有值传递给 dp 而不是 px,因此出现了不必要的问题。
这是一个例子。预览在 width:height (1080:1920) 模式下完成;420dpi
如果我给出的值是 100dp,我如何找出多少像素等于一个 View 元素的宽度?
或者如何找出整个屏幕的宽度和高度是多少dp?
自然,420dpi 并不意味着宽度和高度都等于 420dp。这甚至在预览中可见,无需任何计算。
当然,我在 startandroid 中阅读了此信息
为了避免在不同分辨率下出现这种情况,建议使用dp(和sp)。它可以定义为一个可伸缩的 px。屏幕密度负责可扩展性的程度。这是系统用来计算 dp 值的因素。目前这个系数有5个值:
低(ldpi)= 0.75
中 (mdpi) = 1
电视 (tvdpi) = 1.33
高 (hdpi) = 1.5
超高 (xhdpi) = 2
那些。当屏幕设置为 mdpi 模式时,则 1 dp = 1 px。那些。100 dp 宽的按钮看起来与 100 px 宽的按钮相同。
例如,如果我们有一个低分辨率的屏幕,则使用 ldpi 模式。在这种情况下,1 dp = 0.75 像素。那些。100 dp 宽的按钮看起来与 75 px 宽的按钮相同。
如果我们有高分辨率屏幕,则使用 hdpi 或 xhdpi 模式。1dp = 1.5 像素或 2 像素。100 dp 宽的按钮看起来与 150 像素或 200 像素宽的按钮相同。
那些。不同的分辨率使用不同的密度模式,这些模式允许应用程序缩放和查看,如果不相同,那么至少在所有屏幕上都相似。
但是我怎么能理解如何进行正确的计算呢?例如,我如何知道在我的手机启动过程中预览和结果是在上述选项的哪个模式下显示的?
您可以通过知道以像素为单位的值来获得以 dp 为单位的值:
显然,知道了 dp 中的值,就可以得到 px 中的值:
工作室预览选项: