如何在Android中以编程方式更改方向

问题描述 投票:1回答:2

我尝试了以下操作:

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

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

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

android testing android-emulator
2个回答
4
投票

这应该是正确的方法。是您的测试被打破了。

首先,请不要使用Thread.sleep,它会冻结您的整个App,并防止发生任何事情(包括方向更改)。尝试改用Handler

第二,更改很可能不会立即发生,只有在您离开onCreate()(可能还有另外两个lifecycle methods之后)。

第三,如果您改变方向,您的活动将为destroyed and recreated。因此,您实际上无法在单个Activity实例中来回切换。


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.