1

我尝试了以下方法:

Activity a = getActivity();
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(2000);
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Thread.sleep(2000);

在安卓模拟器上。但它的行为方式与按 Ctrl+F11 手动旋转屏幕的方式不同。

那么以编程方式更改方向的正确方法是什么?

4

2 回答 2

4

这应该是正确的方法。是你的测试坏了。

首先,不要使用Thread.sleep,它会冻结你的整个应用程序并防止任何事情发生(包括方向变化)。尝试改用处理程序。

其次,更改很可能不会立即发生,而只会在您离开之后发生onCreate()(并且可能还有其他几个生命周期方法)。

第三,如果您改变方向,您的 Activity 将被销毁并重新创建。因此,您不能真正在单个 Activity 实例中来回切换。

于 2012-07-02T17:56:52.583 回答
2

Android 模拟器通常不会旋转,除非您手动旋转设备,您实际使用的代码应该可以在真实设备上运行。您是否真的在真实设备中尝试过?

于 2012-07-02T17:55:51.093 回答