Форум программистов, компьютерный форум CyberForum.ru

Как установить программного ориентацию для разных экранов? - Android

Восстановить пароль Регистрация
 
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
13.12.2015, 13:07     Как установить программного ориентацию для разных экранов? #1
Здравствуйте!
Для своей программы хочу такую логику: для телефонов ориентация только вертикальная, а для планшетов - только горизонтальную.
Как можно это реализовать программно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2015, 13:07     Как установить программного ориентацию для разных экранов?
Посмотрите здесь:

Как заблокировать альбомную ориентацию? Android
Как сделать оптимальный размер шрифта для разных устройств Android
Android В какой программе рисовать мелкие графические элементы для программного интерфейса
Android Какого размера делать персонажа для разных экранов Android?
Android Как сформировать JSON для данных разных категорий?
Android CustomView разные изображения для разных экранов - одна система координат - Как?
Поясните про поддержку разных экранов Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
13.12.2015, 15:29     Как установить программного ориентацию для разных экранов? #2
да легко
1. создаем в папке res/values файл, например с названием booleans.xml с таким содержимым
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isPhone">true</bool>
</resources>
2. создаем папку res/values-sw600dp (или она уже создана) и копируем туда наш файл booleans.xml
3. меняем там значение переменной на false
4. в onCreate() после setContentView() пишем
Java
1
2
3
4
5
        if (getResources().getBoolean(R.bool.isPhone)) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        } else {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
5. PROFIT
Valakin
 Аватар для Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 714
15.12.2015, 09:22     Как установить программного ориентацию для разных экранов? #3
Цитата Сообщение от Ханасака Посмотреть сообщение
а для планшетов - только горизонтальную.
планшеты разные бывают, было бы логичнее что бы код определял какая сторона шире и исходя из этого устанавливать ориентацию
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
15.12.2015, 18:01  [ТС]     Как установить программного ориентацию для разных экранов? #4
Цитата Сообщение от Valakin Посмотреть сообщение
планшеты разные бывают, было бы логичнее что бы код определял какая сторона шире и исходя из этого устанавливать ориентацию
Согласен! А как определять, какая сторона шире?
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
15.12.2015, 18:05     Как установить программного ориентацию для разных экранов? #5
а я не согласен
при смене ориентации система сама решает какую разметку взять - вертикальную или горизонтальную
при запуске на разных устройствах опять же система сама решает из какой папки брать разметку
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
24.12.2015, 23:25  [ТС]     Как установить программного ориентацию для разных экранов? #6
Вот чего-то нашел...
Java
1
2
3
4
boolean isLarge() {
        return (getResources().getConfiguration().screenLayout
                & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
08.09.2016, 14:08  [ТС]     Как установить программного ориентацию для разных экранов? #7
При вызове setRequestedOrientation вызывается еще раз onCreate(), что не есть гуд
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
08.09.2016, 14:12     Как установить программного ориентацию для разных экранов? #8
это не есть гуд потому что там наверняка куча кода, которого там быть не должно
vxg
Модератор
 Аватар для vxg
2723 / 1734 / 172
Регистрация: 13.01.2012
Сообщений: 6,490
08.09.2016, 15:13     Как установить программного ориентацию для разных экранов? #9
Паблито, может вместо booleans.xml использовать styles.xml и в манифесте просто использовать их что бы программно ничего не махать?
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
08.09.2016, 16:13     Как установить программного ориентацию для разных экранов? #10
Цитата Сообщение от vxg Посмотреть сообщение
может вместо booleans.xml использовать styles.xml и в манифесте просто использовать
не совсем понял мысль
вполне возможно что код и не нужен, это было много месяцев назад и я до сих пор еще очень много не знаю )
vxg
Модератор
 Аватар для vxg
2723 / 1734 / 172
Регистрация: 13.01.2012
Сообщений: 6,490
08.09.2016, 17:17     Как установить программного ориентацию для разных экранов? #11
Паблито, я про то что если уж делать через ресурсы, а не через простой анализ "что это за аппарат", то возможно можно просто назначить активити тему, сами темы поместить в файл стилей, а файлы стилей раскидать по устройствам (при этом для каких-то устройств прописывать в тему фиксированную ориентацию, не знаю правда реализуемо ли такое, просто натолкнуло на мысль когда вы стали разбрасывать по устройствам файлы с флажками)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2016, 21:19     Как установить программного ориентацию для разных экранов?
Еще ссылки по теме:

Android Как определить правильную ориентацию фотографии?
Dimens для разных экранов Android
Как реализовать смену экранов жестами Basic4Android
Подскажите как сделать разметку для разных экранов Android
Разметка для разных экранов Android

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

Или воспользуйтесь поиском по форуму:
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 143
08.09.2016, 21:19  [ТС]     Как установить программного ориентацию для разных экранов? #12
Цитата Сообщение от Паблито Посмотреть сообщение
потому что там наверняка куча кода, которого там быть не должно
Не пихать же его в onResume

Лучшее, что нашел - это вызывать setRequestedOrientation до setContentView. В таком случае onCreate второй раз не отрабатывет...
Yandex
Объявления
08.09.2016, 21:19     Как установить программного ориентацию для разных экранов?
Ответ Создать тему
Опции темы

Текущее время: 08:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru