Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
#1

Запрет поворота экрана - Программирование Android

26.05.2015, 10:36. Просмотров 1305. Ответов 5
Метки нет (Все метки)

Здравствуйте. Как лучше всего запретить поворот экрана, но так, чтобы на планшетах он сразу был в альбомной ориентации, а на телефонах в портретной? Нужно для splashscreen'а, возиться со всякими retain fragment и т.д. не хочу для такого маленького экрана.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2015, 10:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Запрет поворота экрана (Программирование Android):

Запрет поворота экрана после создания активити - Программирование Android
Как сделать сабж? Если в onCreate вызываю : setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); И если...

Запуск в ландшафтном режиме и запрет поворота. Как сделать? - Программирование Android
Добрый день. Есть приложение с кучей активити. Что сделать, чтобы это приложение запускалось только в ландшафтном режиме и не реагировало...

Обработка поворота экрана. Сохранение введенной информации - Программирование Android
В приложении имеется n полей для ввода текста. Как правильно сохранять их количество введенную в них информацию при повороте экрана? ...

После поворота экрана view формы пропадают - Программирование Android
на главной активити в xml создано RadioGroup. на главной активити в методе onCreate есть такая строчка rGroup = (RadioGroup)...

После поворота TextView занимает столько же места как и до поворота - Программирование Android
собственно как поворачивать средствами xml или в коде я знаю. Проблема в другом при повороте textview по горизонтали он занимает место как...

Запрет выполнения onCreate при повороте экрана - Программирование Android
Здравствуйте уважаемые специалисты! У меня такой вопрос: в моей игре есть вопросы и варианты ответов как в игре (кто хочет стать...

5
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
26.05.2015, 10:53 #2
Spelcrawler, добрый день!
Есть такие папки типа values-sw600dp, values-w820dp и др. Внутри можно создать файл bool.xml:
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8" ?> 
<resources>
  <bool name="portrait_only">false</bool> 
</resources>
Он задаёт переменную, а в коде активности надо прописать так:
Java
1
2
3
4
5
6
7
8
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if (getResources().getBoolean(R.bool.portrait_only)) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        super.onCreate(savedInstanceState);
        ...
    }
Достаточно установить переменную в одной из таких папок. Почитайте об этом подробнее.
Есть одна проблема. Бажная корпорация Google полагает, что надо мерять dp, а не размеры экрана. В связи с этим, если попробовать запустить в эмуляторе планшета с низким разрешением (типа 800x480), то будет считать, что это смартфон.
2
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
26.05.2015, 10:55  [ТС] #3
CoolMind, думал сделать так, но
Цитата Сообщение от CoolMind Посмотреть сообщение
если попробовать запустить в эмуляторе планшета с низким разрешением (типа 800x480), то будет считать, что это смартфон
это все портит. Может можно как-то не определять планшет это или телефон, а в зависимости от ориентации во время запуска приложения показать экран в нужной ориентации и больше его не вертеть?
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
26.05.2015, 11:02 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Spelcrawler, честно говоря, не знаю, хорош ли этот способ, но он реализуем (https://androidresearch.wordpress.co...orientation/):
Java
1
2
3
4
5
6
7
8
9
10
11
12
private void lockScreenOrientation() {
    int currentOrientation = getResources().getConfiguration().orientation;
    if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
}
 
private void unlockScreenOrientation() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
Я обычно объединяю два метода в один (на вход подаю булеву переменную).
2
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
26.05.2015, 11:19  [ТС] #5
CoolMind, то что нужно, спасибо!
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
26.05.2015, 11:58 #6
Spelcrawler, приятно слышать! Но мне кажется, всё равно придётся что-то переделывать, этот вариант тоже может не устроить.
0
26.05.2015, 11:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2015, 11:58
Привет! Вот еще темы с ответами:

Анимация поворота - Программирование Android
Здравствуйте! Я столкнулся с такой проблемой. У меня поворачивается картинка на некоторый угол. Вроде бы всё хорошо, но когда анимация...

Обработка поворота устройства - Программирование Android
Доброе утро! Появился вопрос о том, как правильно обрабатывать поворот устройства В Манифесте пишу так: &lt;activity...

Обработка события поворота устройства - Программирование Android
Как обработать событие поворота телефона? после поворота телефона такое ощущение что создается новое активити. Как сделать чтоб этого...

Как сделать анимацию объемного поворота? - Программирование Android
Что то типа этого: С помощью каких методов или что для этого используют?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru