好的,我想我想出了足够的有用。我将尝试回答我在原始帖子中提出的每个问题。然后我将分享一些我学到的关于如何有效使用它的其他知识。
不是我发现的,更改设置似乎会产生累积效应,通常会严重破坏主屏幕,直到您重新启动设备。但是,您通常至少可以解锁设备,这已经足够有用了。关键是先启动你的应用程序,然后在运行时调整大小和密度。只需按下电源按钮关闭屏幕,根据需要调整大小和密度,然后重新打开屏幕电源,解锁,您的应用程序将以新的大小和密度正常运行。
我只发现了对此的间接引用,但我能确定的最好的是,它适用于电视或其他显示器,不能保证所有屏幕都可用/可见。我不认为它真的适用于普通手机或平板电脑。
- 有没有办法让设备使用新尺寸的 1 个像素到物理屏幕的 1 个像素来渲染屏幕?
不是我发现的。但这可能无关紧要。我认为使用 adb shell wm 命令的主要目的是测试布局,而不是查看像素完美的图形。(相信我,你得到的是最远离像素完美的东西。)
- 有什么方法可以让平板电脑模拟手机在方向改变期间菜单栏发生的情况?
也许我做错了,但对我来说,菜单栏以奇怪和不可预测的方式表现。有时它是巨大的,有时它只是失踪了。不要指望能够使用它。是的,这很糟糕。如果有解决方案,请有人插话。
- 那么如何有效地使用“adb shell wm”呢?
我不知道为什么,但我花了一点时间才明白这一点。那可能是因为刚开始做这个的时候,脑子里还不习惯安卓的思维方式。但这实际上很简单。
首先,以像素为单位设置所需的大小。对于本次讨论,假设我们将使用 1024x600。
接下来,设置 DPI。但是你应该把它设置成什么?
这是棘手的部分(嗯,我一开始没有得到的部分)。当您设置 DPI 时,您正在设置等式的另一半,该等式将确定虚拟应用程序空间的 DP 中的尺寸,应用程序将使用它来呈现自身。(呃,我知道,但我一开始以为指定的 DPI 将主要用于选择资源,实际上它也是如此。)
让我们来看看在屏幕尺寸为 1024x600 的情况下使用各种密度的后果。
首先,请记住
dp = px * (160 / dpi)
这意味着如果我们将 dpi 指定为 160,应用程序将认为可用空间为 1024dp x 600dp。相反,如果我们使用 240,则将变为微不足道的 683dp x 400 dp,相反,如果我们使用 120,则会得到令人印象深刻的 1365 dp x 800 dp。将其设置为 80,现在您将摇摆 2048dp x 1200dp。
违反直觉的部分是意识到指定低密度会导致图像看起来就像您在超高分辨率显示器中看到的那样 - 一切都很微小。但那是因为应用程序现在正在处理相同的物理空间,就好像它是一个非常大的 dp 大小。
回到密度为 80 的示例,我们有一个 2048dp x 1200dp 的虚拟区域,但它被压缩到您实际使用的任何大小的物理屏幕上。由于 160dp 应该是大约 1 英寸,这将是一个几乎超凡脱俗的平板电脑,宽度为 12.8 英寸。但是整个事情都被压缩到你的平板电脑的实际大小,让你大尺寸的 30dp 文本显得非常微不足道。
也许我只是房间里最慢的孩子,但我花了一段时间才真正理解这一点。我希望它可以帮助其他人。