- Как добавить кнопку поворота дисплея в стиле Android 9 на любое Android устройство
- Как добавить кнопку поворота дисплея в стиле Android 9 на любое Android устройство
- Повороты экрана в Android без боли
- Предисловие
- Когда начались проблемы?
- Возможное решение
- Да начнется магия
- Реализация приложения
- Как добавить кнопку поворота экрана на Панель навигации Samsung
- А как установить кнопку «Поворот экрана» на Панель навигации смартфона Samsung Galaxy?
- Инструкция по повороту экрана в ручном режиме на смартфоне Samsung
Как добавить кнопку поворота дисплея в стиле Android 9 на любое Android устройство
Автоматический поворот экрана смартфона очень удобная штука, но иногда он срабатывает совсем некстати, что очень и очень раздражает нас. Что же делать в таких ситуациях?
В нынешних версиях Android решить эту проблему можно заблокировав автоповорот и зафиксировав экран в портретном режиме с помощью соответствующей плитки в шторке быстрых настроек или в меню настроек системы, но при этом нам нужно будет включать его каждый раз заново, когда мы захотим использовать ландшафтный режим.
В Android 9 эта проблема имеет более элегантное решение: при отключении автоповорота по умолчанию здесь включен портретный режим, но когда вы поворачиваете свой телефон на бок, на его экране появляется кнопка, нажав на которую вы переключитесь в ландшафотый режим. Поверните телефон вертикально, и вы снова увидите кнопку, с помощью которой вы можете вернуться к портретному режиму.
Вы хотели бы иметь подобную возможность на своем смартфоне, для которого еще не выпущена эта версия Android? Сегодня мы расскажем как её получить.
Как добавить кнопку поворота дисплея в стиле Android 9 на любое Android устройство
1. Включите автоматический поворот экрана с помощью плитки в шторке быстрых настроек или в меню настроек системе, в разделе «Экран»
2. Установите из Google Play Маркет приложение «Tap ‘n’ Turn»:
3. Запустите установленное вами приложение и на его главном экране переведите ползунок «Tap ‘n’ Turn Service Running» в положение «Вкл».
При этом в шторке уведомления появятся сообщения о том, что приложение Tap ‘n’ Turn запущено, активировано и работает в режиме «поверх других приложений*»
Всё. Теперь повернув свой смартфон в горизонтальное положение, вы увидите, что его экран остался в прежней ориентации, но в одном из углов появилась кнопка, которая исчезает через несколько секунд. Нажав на эту кнопку вы переведете экран телефона в ландшафтную ориентацию. Вернуть экран в портретное положение можно повернув его по вертикали и нажав на появившуюся кнопку поворота.
Очень удобно, не правда ли?
На главном экране приложения вы можете настроить размер кнопки (ползунок Icon Size), время в течение которого кнопка будет отображаться (ползунок Icon Timeout), её цвет и фон (Color и Background).
Помимо этого вы можете включить режим реверсивной портретной ориентации (Use Reverse Portrait), режим левой руки (Left Handed Mode), режим возврата к положению экрана по умолчанию после его выключения (Restore Default Orientation on screen) и автоматический режим возврата к положению экрана по умолчанию без показа кнопки (Automatically return to default orientation).
И, наконец, последняя опция – «Automatically start on boot» позволяет запускать приложение Tap ‘n’ Turn автоматически при каждом включении или перезапуске системы вашего устройства.
Примечание: режим «поверх других приложений» может привести к тому, что вы не сможете устанавливать на своем устройстве приложения из других источников. Подробнее о том, почему это происходит и как решить эту проблему читайте в этой статье.
Источник
Как добавить кнопку поворота дисплея в стиле Android 9 на любое Android устройство
Автоматический поворот экрана смартфона очень удобная штука, но иногда он срабатывает совсем некстати, что очень и очень раздражает нас. Что же делать в таких ситуациях?
В нынешних версиях Android решить эту проблему можно заблокировав автоповорот и зафиксировав экран в портретном режиме с помощью соответствующей плитки в шторке быстрых настроек или в меню настроек системы, но при этом нам нужно будет включать его каждый раз заново, когда мы захотим использовать ландшафтный режим.
В Android 9 эта проблема имеет более элегантное решение: при отключении автоповорота по умолчанию здесь включен портретный режим, но когда вы поворачиваете свой телефон на бок, на его экране появляется кнопка, нажав на которую вы переключитесь в ландшафотый режим. Поверните телефон вертикально, и вы снова увидите кнопку, с помощью которой вы можете вернуться к портретному режиму.
Вы хотели бы иметь подобную возможность на своем смартфоне, для которого еще не выпущена эта версия Android? Сегодня мы расскажем как её получить.
Как добавить кнопку поворота дисплея в стиле Android 9 на любое Android устройство
1. Включите автоматический поворот экрана с помощью плитки в шторке быстрых настроек или в меню настроек системе, в разделе «Экран»
2. Установите из Google Play Маркет приложение «Tap ‘n’ Turn»:
3. Запустите установленное вами приложение и на его главном экране переведите ползунок «Tap ‘n’ Turn Service Running» в положение «Вкл».
При этом в шторке уведомления появятся сообщения о том, что приложение Tap ‘n’ Turn запущено, активировано и работает в режиме «поверх других приложений*»
Всё. Теперь повернув свой смартфон в горизонтальное положение, вы увидите, что его экран остался в прежней ориентации, но в одном из углов появилась кнопка, которая исчезает через несколько секунд. Нажав на эту кнопку вы переведете экран телефона в ландшафтную ориентацию. Вернуть экран в портретное положение можно повернув его по вертикали и нажав на появившуюся кнопку поворота.
Очень удобно, не правда ли?
На главном экране приложения вы можете настроить размер кнопки (ползунок Icon Size), время в течение которого кнопка будет отображаться (ползунок Icon Timeout), её цвет и фон (Color и Background).
Помимо этого вы можете включить режим реверсивной портретной ориентации (Use Reverse Portrait), режим левой руки (Left Handed Mode), режим возврата к положению экрана по умолчанию после его выключения (Restore Default Orientation on screen) и автоматический режим возврата к положению экрана по умолчанию без показа кнопки (Automatically return to default orientation).
И, наконец, последняя опция – «Automatically start on boot» позволяет запускать приложение Tap ‘n’ Turn автоматически при каждом включении или перезапуске системы вашего устройства.
Примечание: режим «поверх других приложений» может привести к тому, что вы не сможете устанавливать на своем устройстве приложения из других источников. Подробнее о том, почему это происходит и как решить эту проблему читайте в этой статье.
Источник
Повороты экрана в Android без боли
Важно!
Изначально в статье была реализация с ошибкой. Ошибку исправил, статью немного поправил.
Предисловие
Истинное понимание проблем каждой платформы приходит после того, как попробуешь писать под другую платформу / на другом языке. И вот как раз после того, как я познакомился с разработкой под iOS, я задумался над тем, насколько ужасна реализация поворотов экрана в Android. С того момента я думал над решением данной проблемы. Попутно я начал использовать реактивное программирование везде, где только можно и уже даже не представляю как писать приложения по-другому.
И вот я узнал про последнюю недостающую деталь — Data Binding. Как-то эта библиотека прошла мимо меня в свое время, да и все статьи, что я читал (что на русском, что на английском) рассказывали не совсем про то, что мне было необходимо. И вот сейчас я хочу рассказать про реализацию приложения, когда можно будет забыть про повороты экранов вообще, все данные будут сохраняться без нашего прямого вмешательства для каждого активити.
Когда начались проблемы?
По настоящему остро я почувствовал проблему, когда в одном проекте у меня получился экран на 1500 строк xml, по дизайну и ТЗ там было целая куча различных полей, которые становились видимыми при разных условиях. Получилось 15 различных layout’ов, каждый из которых мог быть видимым или нет. Плюс к этому была еще куча различных объектов, значения которых влияют на вьюху. Можете представить уровень проблем в момент поворота экрана.
Возможное решение
Сразу оговорюсь, я против фанатичного следования заветам какого-либо подхода, я пытаюсь делать универсальные и надежные решения, несмотря на то, как это смотрится с точки зрения какого-либо паттерна.
Я назову это реактивным MVVM. Абсолютно любой экран можно представить в виде объекта: TextView — параметр String, видимость объекта или ProgressBar’а — параметр Boolean и т.д… А так же абсолютно любое действие можно представить в виде Observable: нажатие кнопки, ввод текста в EditText и т.п…
Вот тут я советую остановиться и прочитать несколько статей про Data Binding, если еще не знакомы с этой библиотекой, благо, на хабре их полно.
Да начнется магия
Перед тем как начать создавать нашу активити, создадим базовые классы для активити и ViewModel’ли, где и будет происходить вся магия.
Update!
После общения в комментариях, осознал свою ошибку. Суть в том, что в моей первой реализации ничего не сериализуется, но все работает при поворотах экрана, да даже при сворачивании, разворачивании экрана. В комментариях ниже обязательно почитайте почему так происходит. Ну а я исправлю код и поправлю комментарии к нему.
Для начала, напишем базовую ViewModel:
Я уже говорил, что все что угодно можно представить как Observable? И библиотека RxBinding отлично это делает, но вот беда, мы работает не напрямую с объектами, типа EditText, а с параметрами типа ObservableField. Что бы радоваться жизни и дальше, нам необходимо написать функцию, которая будет делать из ObservableField необходимый нам Observable RxJava2:
Тут все просто, передаем на вход ObservableField и получаем Observable RxJava2. Именно для этого мы наследуем базовый класс от BaseObservable. Добавим этот метод в наш базовый класс.
Теперь напишем базовый класс для активити:
Я постарался подробно прокомментировать код, но заострю внимание на нескольких вещах.
Активити, при повороте экрана всегда уничтожается. Тогда, при восстановлении снова вызывается метод onCreate. Вот как раз в методе onCreate нам и нужно восстанавливать данные, предварительно проверив, сохраняли ли мы какие-либо данные. Сохранение данных происходит в методе onSaveInstanceState.
При повороте экрана нас интересует порядок вызовов методов, а он такой (то, что интересует нас):
1) onDestroy
2) onSaveInstanceState
Что бы не сохранять уже не нужные данные мы добавили проверку:
Дело в том, что метод isFinishing вернет true только если мы явно вызвали метод finish() в активити, либо же ОС сама уничтожила активити из-за нехватки памяти. В этих случаях нам нет необходимости сохранять данные.
Реализация приложения
Представим условную задачу: нам необходимо сделать экран, где будет 1 EditText, 1 TextView и 1 кнопка. Кнопка не должна быть кликабельной до тех пор, пока пользователь не введет в EditText цифру 7. Сама же кнопка будет считать количество нажатий на нее, отображая их через TextView.
Update!
Пишем нашу ViewModel:
Update
Вот тут и и были самые большие проблемы. Все работало и при старой реализации, ровно до того момента, пока в настройках разработчика не включить параметр «Don’t keep activities».
Что бы все работало как надо, необходимо реализовывать интерфейс Parcelable для ViewModel. По поводу реализации ничего писать не буду, только уточню еще 1 момент:
Данные-то мы возвращаем, а вот Observable мы теряем. Поэтому пришлось выводить в отдельный метод и вызывать его во всех конструкторах. Это очень быстрое решение проблемы, не было времени подумать лучше, нужно было было указать на ошибку. Если у кого-то есть идеи как реализовать это лучше, пожалуйста, поделитесь.
Теперь напишем для этой модели view:
Ну и теперь, мы пишем нашу активити:
Запускаем приложение. Кнопка не кликабельна, счетчик показывает 0. Вводим цифру 7, вертим телефон как хотим, через 2 секунды, в любом случае кнопка становится активной, тыкаем на кнопку и счетчик растет. Стираем цифру, вертим телефоном снова — кнопка все равно через 2 секунды будет не кликабельна, а счетчик не сбросится.
Все, мы получили реализацию безболезненного поворота экрана без потери данных. При этом будут сохранены не только ObservableField и тому подобные, но так же и объекты, массивы и простые параметры, типа int.
Источник
Как добавить кнопку поворота экрана на Панель навигации Samsung
Дополнение статьи «Как отключить автоповорот экрана на смартфоне Samsung» с учётом ОС Android 11 – ручной поворот экрана.
Об эргономических особенностях нашего смартфона мы не раз освещали в ряде статей. Слово «эргономичность» означает человеческую инженерию – это наука о приспособлении предметов или инструментов «под человека» для наиболее эффективного его использования исходя из физических и психических особенностей нашего человеческого организма.
Например, экран смартфона «вертикальный», из-за того что им удобно управлять одной рукой именно в вертикальном положении. Но в то же время нашим глазам более удобно смотреть горизонтальное изображение на экране. Поэтому, чтобы сгладить такое «неудобство», наши смартфоны оснащены службой «Автоповорот» экрана, который при повороте телефона из вертикального положения в горизонтальное «поворачивает» картинку, переводя экран смартфона в удобный для просмотра широкоформатный (горизонтальный) вариант. Порядок включения и отключения службы «Автоповорот» описан в статье, для перехода к ней нажмите здесь.
Наша жизнь не стоит на месте и создатели замечательных смартфонов Samsung решили усовершенствовать эту службу, добавив функцию поворота экрана в ручном режиме с помощью кнопки «Поворот экрана» на Панели навигации.
А как установить кнопку «Поворот экрана» на Панель навигации смартфона Samsung Galaxy?
Далее мы опишем порядок размещения дополнительной кнопки «Поворот экрана» на Панели навигации смартфона, расположенной в самой нижней части экрана, на примере редакционного смартфона Samsung Galaxy A50 с ОС Android 11.
Важное замечание: Кнопка «Поворот экрана» в ручном режиме функционирует только при отключении службы «Автоповорот» экрана на Панели уведомлений. Кнопка «Поворот экрана» в ручном режиме будет появляться на Панели навигации только через 1-2 секунды при изменении положения телефона из вертикального в горизонтальный или из горизонтального в вертикальный.
На смартфонах с ОС Android 11 доступ к службе включения автоматического поворота экрана возможен только с Панели уведомлений через кнопки панели быстрых настроек, где кнопка службы автоматического поворота экрана «Автоповорот» имеет два положения:
1. Во включенном положении – это кнопка «Автоповорот».
2. В выключенном положении службы автоматического поворота экрана – кнопка «Книжный экран».
Инструкция по повороту экрана в ручном режиме на смартфоне Samsung
1. Для активации службы панели быстрых настроек нужно открыть Панель уведомлений сделав свайп двумя пальцами вниз от верхнего края экрана.
Как правило, по умолчанию служба «Автоповорот» находится во включенном положении. Чтобы включить службу ручного переключения поворота экрана необходимо службу «Автоповорот» выключить. Для этого нужно нажать на кнопку «Автоповорот» и удерживать её 2-3 секунды для перехода к настройкам службы автоповорота экрана.
Скрин №1 – для открытия Панели уведомлений нужно двумя пальцами сделать свайп вниз от верхней строки экрана. Скрин №2 – нажать на кнопку «Автоповорот» и удерживать её 2-3 секунды для перехода к настройкам службы Автоповорот.
2. Далее необходимо службу «Автоповорот» выключить. Для этого нужно выключить переключатель, нажав на её значок, переведя её из положения «Включено» в положение «Отключено».
После этого мы получим доступ к настройкам службы «Поворот вручную», состоящей из одного пункта – «Кнопка поворота на панели навигации».
Как правило, по умолчанию «Кнопка поворота на панели навигации» тоже находится во включенном положении. Поэтому при отключении службы «Автоповорот» мы должны удостовериться, что «Кнопка поворота на панели навигации» находится во включенном положении. Если она отключена – необходимо её включить, нажав на её переключатель.
После этого нужно нажать на кнопку «Готово» внизу экрана.
Скрин №3 – выключить службу «Автоповорот». Скрин №4 – проверить положение «Кнопки поворота на панели навигации» — она должна быть включена. Нажать на кнопку «Готово».
Вот так выглядит панель быстрых настроек с отключенной службой «Автоповорот». Теперь это кнопка «Книжный экран».
3. Далее чтобы показать порядок поворота экрана в ручном режиме мы воспользуемся редакционным смартфоном, запустив на нём приложение «2ГИС».
Откроем в «2ГИС» карту замечательного города Самара и попробуем найти на нём монумент ракеты-носителя «Союз». Этот памятник представляет собой настоящую ракету Р-7, смонтированную вертикально. Монумент является одним из символов Самары и самой заметной частью экспозиции музея «Самара космическая».
Приложение 2ГИС позволяет не только найти на карте нужный объект, но и хранит фотографии этих сооружений снятых фотолюбителями. Так монумент ракета «Союз» в Самаре сопровождается 23 фотографиями. Давайте познакомимся с этим сооружением поближе. Для этого достаточно нажать на эскиз фотографии внизу экрана.
Большинство фотографий ракеты «Союз» — вертикальные, так как этот монумент имеет высоту 68 метров. Но 14-ый снимок с видом на ракету «Союз» ночью оказался горизонтальным.
Скрин №6 – вид карты города Самара с объектом «Ракета-носитель «Союз»». Откроем снимки ракеты «Союз» нажав на один из её эскизов. Скрин №7 – вид горизонтальной фотографии с «Союзом» на вертикальном экране телефона.
Для того, чтобы перевести изображение в горизонтальное положение для удобства просмотра нужно повернуть телефон на 90 градусов. Через 1-2 секунды на Панели навигации в дополнение к стандартным трём кнопкам «Назад», «Домой» и «Просмотр», появится дополнительная кнопка – «Кнопка поворота на панели навигации». Нажимаем на эту кнопку.
Скрин №8 – повернуть смартфон на 90°. На Панели навигации нажать на 4-ю кнопку «Кнопка поворота».
После этого телефон переведёт изображение из вертикального положения в горизонтальный – широкоформатный.
Скрин №9 – вид экрана с фотографией в горизонтальном положении телефона.
У нас всё получилось!
Таким образом, в ручном режиме можно «поворачивать экран» из вертикального в горизонтальный и обратно.
4. Чтобы перевести экран обратно в вертикальное положение нужно проделать все операции в обратной последовательности:
— повернут телефон на 90°;
— на панели навигации появится 4-я кнопка – «Кнопка поворота»;
— нажать на кнопку «Кнопка поворота».
Скрин №10 – повернуть телефон обратно в вертикальное положение. После чего на панели навигации появится 4-я кнопка – «Кнопка поворота». Нажать на кнопку. Скрин №11 – вид экрана телефона повернутого обратно из горизонтального положения в вертикальный.
5. Вот таким образом в ручном режиме можно управлять поворотом экрана.
Это очень удобно, когда смартфон находится на горизонтальной плоскости (например, на столе). В этом случае датчик гравитации может потерять ориентацию «где верх», и начнёт «крутить» картинку на экране.
В этом случае службу «Автоповорот» лучше отключить, и для удобного просмотра видео перейти на «ручной режим» ориентации смартфона. Пользуйтесь на здоровье!
Источник