Как заблокировать экран, чтобы не допустить поворота на одном фрагменте

1

При наличии фрагмента пейджера и при прокрутке одного фрагмента он должен быть заблокирован в портретном режиме, а другим следует разрешить поворот.

override fun onPageSelected(position: Int) {
    val item = getDataItem(position)   
    if (item is SpecialItem) {

        if (context?.resources?.configuration?.orientation == Configuration.ORIENTATION_PORTRAIT) {
            activity?.requestedOrientation = ActivityInfo.ORIENTATION_PORTRAIT

            // or tried activity?.requestedOrientation = ActivityInfo.ORIENTATION_PORTRAIT

           // or tried activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LOCKED

        }


    } else {
        activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
    } 
......
}

Но после вызова

activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

он все еще может вращать экран.

Как правильно заблокировать экран?

В чем разница между

activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR

а также

activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR

а также

activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_USER

Обновить

Спасибо за замечание JensV, что это была опечатка, и она должна быть ORIENTATION_PORTRAIT и она работает.

Теперь вопрос только в чем разница, и стоит ли ей пользоваться

activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LOCKED

или же

activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT

// or activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
Теги:
android-sensors
screen-orientation

1 ответ

1

Публикация в качестве ответа, как я решил вашу проблему.

SCREEN_ORIENTATION_LANDSCAPE проблема заключалась в том, что вместо SCREEN_ORIENTATION_PORTRAIT использовался SCREEN_ORIENTATION_PORTRAIT

Ответ на ваш второй вопрос: я бы пошел с SCREEN_ORIENTATION_UNSPECIFIED который вернется к отсутствию SCREEN_ORIENTATION_UNSPECIFIED либо конкретных настроек.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню