以编程方式启用/禁用Android中的屏幕旋转

时间:2010-08-05 21:19:05

标签: android preferences screen-orientation

我有一个应用程序,显示大量文本供用户阅读。

我发现躺下时读书时,即使我的头部和屏幕对齐,我仍然对屏幕旋转感到恼火。

我不想将此设置为永久处于纵向模式,因此我认为这将排除设置

的方法
 android:screenOrientation="portrait"
清单中的

理想情况下,我想通过首选项页面启用/禁用自动方向更改。

我最好的方法是什么?

2 个答案:

答案 0 :(得分:18)

我会通过让我的首选项页面写入我的应用程序的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()onResume()方法。不在onCreate()方法中使用它的唯一原因是,如果在此活动中更改了设置,或者在完成后将返回到此活动的子活动。

修改

好吧,如果这不起作用(我不确定会这样),也许你可以尝试使用两个不同的布局xml文件 - 一个设置了screenOrientation,另一个没有。加载活动/视图时,您可以根据保存的首选项动态加载其中一个。 讨厌不干净,但它应该有效。

答案 1 :(得分:1)

在onCreate()函数中添加此行。它正在......

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);