如何在 Android 上在运行时锁定应用程序屏幕方向?

问题描述

我的应用认遵循屏幕方向,但我想添加一个设置以强制特定方向。 我已经能够在 Application 类中使用以下代码来做到这一点

    public void applyOrientationMode() {
    final OrientationEnum orientation = PreferencesHelper.getorientationMode();
    if (this.orientationLifecycleCallback != null) {
        try {
            unregisteractivityLifecycleCallbacks(this.orientationLifecycleCallback);
        } catch (final Throwable t) {
            ExceptionHelper.fullLogging(t,TAG);
        }
    }


    if (orientation != null && orientation != OrientationEnum.UNLOCKED) {
        this.orientationLifecycleCallback = new Application.ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity,Bundle bundle) {
                switch (orientation) {
                    case PORTRAIT:
                        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                        break;
                    case LANDSCAPE:
                        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                        break;
                }
            }

            @Override
            public void onActivityStarted(Activity activity) {

            }

            @Override
            public void onActivityResumed(Activity activity) {

            }

            @Override
            public void onActivityPaused(Activity activity) {

            }

            @Override
            public void onActivityStopped(Activity activity) {

            }

            @Override
            public void onActivitySaveInstanceState(Activity activity,Bundle bundle) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {

            }
        };

        registeractivityLifecycleCallbacks(this.orientationLifecycleCallback);
    }
}

这段代码是从 application.onCreate() 调用的 它工作正常,但是如果我将设置设置为纵向模式并在横向屏幕上打开一个新活动,我可以看到在纵向模式下重新创建之前在横向模式下创建的屏幕。 我如何才能防止这种情况?

请不要使用任何明显的方向解决方案,因为这不是我想要做

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)