我尝试了以下内容:
Activity a = getActivity();
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(2000);
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Thread.sleep(2000);
Android模拟器上的。但它的行为方式与按Ctrl + F11手动旋转屏幕的方式不同。
那么以编程方式更改方向的正确方法是什么?
答案 0 :(得分:4)
这应该是正确的方法。这是你的考验已经破裂。
首先,不要使用Thread.sleep
,它会冻结整个应用程序并防止发生任何事情(包括方向更改)。请尝试使用Handler代替。
其次,更改很可能不会立即发生,而是在您离开onCreate()
之后(可能还有其他几个lifecycle methods)。
第三,如果您更改方向,您的活动将为destroyed and recreated。因此,您无法在单个Activity实例中来回切换。
答案 1 :(得分:2)
除非您手动旋转设备,否则Android模拟器通常不会旋转,您实际使用的代码应该在真实设备上运行。你真的在真实的设备上试过吗?