我目前正在研究根据屏幕方向具有不同行为的Android应用程序。
我正在使用getWindowManager()。getDefaultDisplay()。getRotation()来获取onCreate()方法中的屏幕方向并从那里进行管理。
基本上,我的问题是我需要控制方向。在横向模式下,当用户决定它时,应用程序必须切换到纵向模式,并保持这样,但只有在使用进入纵向模式,然后再进行横向渲染。
我正在使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)来改变横向时的方向。问题是,使用这个,我不能回到景观。 如果我在onCreate()中使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED),问题是几秒后切换回横向模式(因为屏幕仍处于横向状态)。
还有其他办法来管理吗?基本上,是否有一种方法可以使用列表器(或者在onCreate中的任何其他位置)捕获屏幕方向更改,因为在纵向模式下锁定视图时不会调用它?我找不到任何关于那个......
欢迎任何想法!
谢谢!
答案 0 :(得分:2)
为什么不尝试创建两个布局,一个在layout-land中,另一个在layout-port中。当设备方向改变时,这些将自动应用。
在其中每个中创建两个不同的子布局,一个用于纵向视图,另一个用于横向视图,并更改这些布局的可见性以反映用户的首选项。
因此,您根本不需要处理轮换更改,让Android为您管理,您只需管理用户覆盖。