好的,我觉得我已经理解了足够多的知识以便有所用处。我将尝试回答我在原帖中提出的每个问题。然后我会分享一些我学到的关于如何有效使用这个工具的其他东西。
据我发现,没有,而且更改设置似乎会产生累积效应,通常会彻底搞砸主屏幕直到你重新启动设备。但是,你通常可以至少解锁设备,这已经足够有用了。关键是先启动你的应用程序,然后在运行时调整大小和密度。只需按电源按钮关闭屏幕,根据需要调整大小和密度,然后打开屏幕,解锁,你的应用程序将在新的大小和密度下正常运行。
我只找到了一些间接参考的资料,但我最好的判断是,它是为那些不保证可用/可见屏幕的电视或其他显示器设计的。我认为它实际上并不适用于普通手机或平板电脑。
- 有没有办法使设备使用新大小的1像素对应物理屏幕上的1像素进行屏幕渲染?
据我发现,没有。但这可能并不重要。我认为使用adb shell wm命令的主要目的是测试布局,而不是看到像素完美的图形。(相信我,你得到的是与像素完美最远的东西。)
- 有没有办法使平板电脑模拟手机在方向更改期间菜单栏所发生的情况?
也许是我做错了,但对我来说,菜单栏的行为非常奇怪和不可预测。有时它很大,有时它就消失了。不指望能够使用它。是的,这很糟糕。如果有解决方法,请有人加入讨论。
- 那么我如何有效地使用“adb shell wm”呢?
我不确定为什么,但我花了一点时间才掌握这个。这可能是因为当我刚开始学习时,我的思维方式还不习惯于Android的思考方式。但它实际上相当简单。
首先,以像素为单位设置所需的大小。在本讨论中,假设我们将使用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文本看起来相当小。
也许我只是房间里最慢的人,但我花了很长时间才真正理解这一点。我希望它能帮助其他人。