我尝试了以下操作:
Activity a = getActivity();
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(2000);
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Thread.sleep(2000);
在Android模拟器上。但是它的行为与按Ctrl + F11手动旋转屏幕的行为不同。
那么,以编程方式更改方向的正确方法是什么?
这应该是正确的方法。是您的测试被打破了。
首先,请不要使用Thread.sleep
,它会冻结您的整个App,并防止发生任何事情(包括方向更改)。尝试改用Handler。
第二,更改很可能不会立即发生,只有在您离开onCreate()
(可能还有另外两个lifecycle methods之后)。
第三,如果您改变方向,您的活动将为destroyed and recreated。因此,您实际上无法在单个Activity实例中来回切换。
除非您手动旋转设备,否则Android仿真器通常不会旋转,您实际使用的代码应可在真实设备上运行。您实际上在真实设备中尝试过吗?