在 Android 中以编程方式启用/禁用屏幕旋转
-
26-09-2019 - |
题
我有一个应用程序,它显示大量文本供用户阅读。
我发现,当躺着阅读时,即使我的头和屏幕对齐,屏幕也会旋转,这让我很恼火。
我不想将其设置为永久处于纵向模式,因此我认为这会排除设置
android:screenOrientation="portrait"
在清单中。
理想情况下,我想通过首选项页面启用/禁用自动方向更改。
我最好的方法是什么?
解决方案
我将通过将我的首选项页面写入 共享首选项 对于我的应用程序,然后读取该值并调用 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()
或者 onResume()
方法。不把它放在里面的唯一原因是 onCreate()
方法是设置的更改是否发生在此活动中,或者发生在子活动上,该子活动完成后将返回到此活动。
编辑:
好的,如果这不起作用(我不太确定它会起作用),也许您可以尝试使用两个不同的布局 xml 文件 - 一个设置了 screenOrientation,另一个没有设置。当您加载活动/视图时,您可以根据保存的首选项动态加载其中之一。它是 可恶的 不干净,但应该可以。
其他提示
在 onCreate() 函数中添加此行。这是工作 ...
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
不隶属于 StackOverflow