Android альбомная ориентация на ВСЕХ мероприятиях - PullRequest
0 голосов
/ 29 сентября 2018

Я хотел бы иметь правило для всего приложения, запрещающее альбомную ориентацию.Я понимаю, что могу получить это, вставив:

android:screenOrientation="portrait"

во все мои действия, но это не кажется чистым.Я также могу добавить setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

в каждый из методов моей деятельности onCreate().

Но я хочу решение, которое не требует дублирования кода.Какие-либо предложения?

1 Ответ

0 голосов
/ 29 сентября 2018

Решение:

Вы можете сделать это для всего приложения без , чтобы все ваши действия расширяли общий базовый класс.

Сначала нужно убедиться, что в ваш проект включен подкласс ApplicationonCreate(), вызываемом при первом запуске приложения, вы регистрируете объект ActivityLifecycleCallbacks (уровень API 14+) для получения уведомлений о событиях жизненного цикла активности.

Это дает вамвозможность выполнять свой собственный код всякий раз, когда любая активность в вашем приложении запускается (или останавливается, или возобновляется, или как угодно).На данный момент вы можете позвонить setRequestedOrientation() на вновь созданную деятельность.

class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();  

        // register to be informed of activities starting up
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

            @Override
            public void onActivityCreated(Activity activity, 
                                          Bundle savedInstanceState) {

                // new activity created; force its orientation to portrait
                activity.setRequestedOrientation(
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

            }

            ....

        });

    }
}

Любые сомнения, пожалуйста, оставьте комментарий.

Примечание: Добавить в манифест <application> тег: android:name=".MyApp"

Надеюсь, это поможет.

enter image description here

...