2

我目前正在开发一个根据屏幕方向具有不同行为的 Android 应用程序。

我正在使用 getWindowManager().getDefaultDisplay().getRotation() 在 onCreate() 方法中获取屏幕方向并从那里进行管理。

基本上,我的问题是我需要控制方向。在横向模式下,当用户决定时,应用程序必须切换到纵向模式,并保持这种状态,但直到用户进入纵向模式,然后再切换到横向模式。

我正在使用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 在横向时更改方向。问题是,使用这个,我不能回到风景。如果我在 onCreate() 中使用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED),问题是几秒钟后切换回横向模式(因为屏幕仍处于横向)。

有没有其他方法来管理这个?基本上,有没有办法用监听器捕捉屏幕方向的变化(或者在onCreate之外的任何地方,因为当视图被锁定在纵向模式时它不会被调用)?我找不到任何关于那个的...

欢迎任何想法!

谢谢!

4

1 回答 1

2

为什么不尝试创建两种布局,一种在 layout-land 中,一种在 layout-port 中。这些将在设备方向更改时自动应用。

在其中的每一个中,创建两个不同的子布局,一个用于纵向视图,一个用于横向视图,并更改它们的可见性以反映用户的偏好。

因此,您根本不需要处理轮换更改,让 Android 为您管理,您只需管理用户覆盖。

于 2011-04-06T08:16:56.237 回答