我有一个显示大量文本供用户阅读的应用。
我发现,当我躺着看书时,即使我的头和屏幕对齐,屏幕也会旋转,这让我很恼火。
我不想将它设置为永久纵向模式,所以我认为这会排除设置
android:screenOrientation="portrait"
在 list 中。
理想情况下,我想通过首选项页面启用/禁用自动方向更改。
我最好的方法是什么?
最佳答案
我会通过将我的偏好页面写入 SharedPreferences 来做到这一点对于我的应用程序,然后读取此值并调用 Activity.setRequestedOrientation()在加载或显示相关 TextView 时从代码中获取。
例如:
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()
方法中的唯一原因是,如果设置的更改发生在该 Activity 中,或者发生在完成后将返回到该 Activity 的子 Activity 中。
编辑:
好的,如果这不起作用(我不太确定它会起作用),也许您可以尝试使用两个不同的布局 xml 文件 - 一个设置了 screenOrientation,另一个不设置。当您加载 Activity/View 时,您可以根据保存的首选项动态加载一个或另一个。它讨厌不干净,但它应该可以工作。
关于android - 以编程方式在 Android 中启用/禁用屏幕旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419239/