我有一个应用程序,它显示大量文本供用户阅读。
我发现躺着阅读时,即使我的头和屏幕对齐,屏幕也会旋转,这让我很恼火。
我不想将其设置为永久处于纵向模式,因此我认为这将排除设置
android:screenOrientation="portrait"
在清单中。
理想情况下,我想通过首选项页面启用/禁用自动方向更改。
我最好的方法是什么?
我有一个应用程序,它显示大量文本供用户阅读。
我发现躺着阅读时,即使我的头和屏幕对齐,屏幕也会旋转,这让我很恼火。
我不想将其设置为永久处于纵向模式,因此我认为这将排除设置
android:screenOrientation="portrait"
在清单中。
理想情况下,我想通过首选项页面启用/禁用自动方向更改。
我最好的方法是什么?
我会通过让我的首选项页面写入我的应用程序的SharedPreferences来做到这一点,然后在加载或显示相关文本视图时读取此值并从代码中调用Activity.setRequestedOrientation() 。
例如:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("fix_orientation_to_portrait", false)) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
这可以在onCreate()
oronResume()
方法中。没有在onCreate()
方法中使用它的唯一原因是,如果设置的更改发生在此活动中,或者发生在完成后将返回到该活动的子活动上。
编辑:
好的,如果这不起作用(我不确定它是否会起作用),也许您可以尝试使用两个不同的布局 xml 文件 - 一个设置了 screenOrientation,另一个没有。当您加载 Activity/View 时,您可以根据您保存的首选项动态加载一个或另一个。这很讨厌,不干净,但它应该可以工作。
在 onCreate() 函数中添加这一行。这是工作 ...
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);