#android #android-sensors #screen-orientation
#Android #android-датчики #ориентация экрана
Вопрос:
Наличие фрагмента пейджера и при прокрутке одного фрагмента хотелось бы, чтобы он был заблокирован в портретном режиме, а другие должны разрешать поворот.
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
Комментарии:
1. Вы проверили, что код действительно вызывается? На первый взгляд мне кажется правильным
2. он вызывается, у меня есть журнал, который нужно показать, вызывается и после набора, что находится в активности? .Запрошенная ориентация, которая является правильной.
3. Я предполагаю, что это опечатка, которую вы сказали, что хотите заблокировать в портретном режиме, а затем использовать
SCREEN_ORIENTATION_LANDSCAPE
вместоSCREEN_ORIENTATION_PORTRAIT
?4. ха, @JensV, ты прав!!! на самом деле там опечатка, и мой журнал показывает, что там было, это SCREEN_ORIENTATION_PORTRAIT . мой плохой. кстати, знаете ли вы разницу между тремя внизу? Мне нужно выбрать один для возврата, чтобы разрешить пользователю поворот.
Ответ №1:
Публикация в качестве ответа, поскольку я решил вашу проблему.
Основная проблема заключалась в том, что SCREEN_ORIENTATION_LANDSCAPE
вместо SCREEN_ORIENTATION_PORTRAIT
Ответ на ваш второй вопрос: я бы пошел с SCREEN_ORIENTATION_UNSPECIFIED
тем, который сбросит обратно, не установив ничего конкретного.