android - 以编程方式在 Android 中启用/禁用屏幕旋转

标签 android preferences screen-orientation

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

我发现,当我躺着看书时,即使我的头和屏幕对齐,屏幕也会旋转,这让我很恼火。

我不想将它设置为永久纵向模式,所以我认为这会排除设置

 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/

相关文章:

java - 在 Java 中获取操作系统动画首选项

android - 设置半透明时没有方向通知

android - 如何在 Android 旋转上创建这样的过渡效果

android - 翻译用于绘制位图的矩阵时,它会绘制多个位图

android - 如何将消息从后台服务发布到 UI fragment ?

java - 更改屏幕方向时重置操作

android - 即使在 android :configChanges is specified? 时,应用程序也会重新创建

java - Box2D/AndEngine - 用于多个对象类的 ContactListener

android - Eclipse - 在开发时使用组合键 CTRL + Space 显示 android 类?

java - eclipse "run as"未显示任何选项