我的 android 应用程序设计为仅限横向。我放了
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden|screenSize"
进入清单。它确实以横向启动。这很酷。但!我需要知道设备屏幕尺寸才能执行一些计算。我已将以下代码添加到onCreate()
:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
// utilize size to calculate something...
如果我从纵向启动应用程序,我会得到(Google Nexus)size.x = 800,size.y = 1205 而不是正确的(横向)size.x = 1280,size.y = 736。
在我看来,Android 需要一些时间来从纵向切换到横向(因为最终我看到我的应用程序是“横向的”)。但是onCreate
在此开关之前调用 - 它会破坏我的计算。我的猜测正确吗?
我尝试将计算从 to 移动onCreate()
,onGlobalLayout()
但在执行以下步骤后我仍然得到纵向尺寸:
- 横向启动应用程序
- 按睡眠按钮(屏幕变暗)
- 旋转到纵向
- 按睡眠按钮(屏幕淡入呈现解锁屏幕)
- 解锁设备
- 我的应用醒来后收到纵向尺寸
- 在下一个 onGlobalLayout() 上,我终于得到了横向大小,但为时已晚。
我可以完全摆脱纵向吗?