You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中全局禁止屏幕旋转?无需逐个配置Activity

全局禁止应用屏幕旋转的实现方法

不需要每个Activity都在Manifest里单独配置,有两种常用的全局实现方式:

方法一:自定义BaseActivity(推荐方案)

  • 先创建一个基类Activity,让所有业务Activity都继承它:
public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 锁定为竖屏,要锁定横屏就改用SCREEN_ORIENTATION_LANDSCAPE
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}
  • 之后你的所有Activity(比如MainActivity、DetailActivity)都继承这个BaseActivity,不用再重复写屏幕方向的配置逻辑。

方法二:通过Application全局监听Activity生命周期

如果不想改动现有Activity的继承关系,用这个方法更方便:

  • 自定义Application类,注册Activity生命周期回调,在每个Activity创建时统一设置屏幕方向:
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
                // 全局锁定竖屏
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }

            // 下面的方法不需要逻辑,留空即可
            @Override
            public void onActivityStarted(@NonNull Activity activity) {}
            @Override
            public void onActivityResumed(@NonNull Activity activity) {}
            @Override
            public void onActivityPaused(@NonNull Activity activity) {}
            @Override
            public void onActivityStopped(@NonNull Activity activity) {}
            @Override
            public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {}
            @Override
            public void onActivityDestroyed(@NonNull Activity activity) {}
        });
    }
}
  • 记得在Manifest的<application>标签里指定这个自定义Application:
<application
    android:name=".MyApplication"
    <!-- 其他原有配置 -->
    >
    <!-- Activity配置 -->
</application>

例外处理

如果某个Activity需要允许旋转,直接在该Activity的onCreate方法里覆盖全局设置就行:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 恢复系统默认的旋转行为
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

内容的提问来源于stack exchange,提问作者Sumita Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:47:21