- Экран
- Настройки — Экран
- Размеры экрана и его ориентация (Старый и новый способ)
- Плотность экрана, масштабирование шрифта и др.
- Получить текущее значение яркости экрана
- Установить яркость экрана
- Настраиваем яркость экрана в своём приложении
- Определение поддерживаемых экранных размеров в манифесте
- Размеры картинок для фона экрана
- Изменение разрешения экрана на Android-устройстве
- Способ 1: Системные средства
- Способ 2: Настройки разработчика
- Способ 3: Стороннее приложение (Root)
- Способ 4: ADB
- Помогла ли вам эта статья?
- Поделиться статьей в социальных сетях:
- Еще статьи по данной теме:
Экран
Небольшая подборка различных примеров для работы с экраном. На самом деле их не так часто приходится использовать в практике, но иметь общее представление бывает необходимым. Начало было положено в 2012 году, что-то могло устареть.
Настройки — Экран
Чтобы показать окно Экран из системного приложения Настройки:
Размеры экрана и его ориентация (Старый и новый способ)
Чтобы узнать размеры экрана и его ориентацию из запущенного приложения, можно воспользоваться встроенными классами Android.
Данный способ был опубликован в те времена, когда у меня был Android 2.3. Читатели подсказали, что теперь методы считаются устаревшими (API 13 и выше). Пришлось переписывать код. Впрочем, спустя некоторое время и этот код стал считаться устаревшим.
Ориентацию при помощи нового метода не узнаешь. Помните, что это размеры экрана устройства, а не экрана вашего приложения. Кроме того, в документации как-то туманно описывается точность вычислений этих размеров. Никому верить нельзя.
Плотность экрана, масштабирование шрифта и др.
Существует класс DisplayMetrics, также имеющий в своём составе свойства для экрана. Пример также пришлось переписывать после выхода Android 11 (API 30), который теперь тоже устаревший:
Вот ещё несколько способов определения размеров:
Такой же код, но с использованием дополнительной константы SCREENLAYOUT_SIZE_MASK:
На Kotlin в виде отдельной функции.
Заглянув в документацию, обнаружил, что можно обойтись без собственных констант. Они уже есть в Android. Оформил в виде отдельного метода.
Получить текущее значение яркости экрана
В настройках экрана можно установить желаемую яркость экрана при помощи ползунка, но при этом мы не знаем, сколько это в попугаях. Я открою вам секрет при помощи простого кода:
Установить яркость экрана
Если можно получить значение текущей яркости экрана, значит можно и установить яркость. Для начала нужно установить разрешение на изменение настроек в манифесте:
Для настройки яркости нужно использовать параметр System.SCREEN_BRIGHTNESS. Добавим на форму кнопку, метку и ползунок. Код для установки яркости:
Проверил старый пример времён Android 2.2 на эмуляторе с Android 10. Правила ужесточились. Теперь разрешение на изменение системных настроек выдаются только системным программам. Пока ещё есть лазейка, которой и воспользуемся. Новый пример написан на Kotlin. Добавим в манифест немного модифицированное разрешение.
Далее программа должна проверить возможность изменять системные настройки через метод canWrite(). Если такая возможность есть, то запрашиваем разрешение. Появится специальное окно, в котором пользователь должен подтвердить своё решение через переключатель. После этого нужно заново запустить программу, чтобы ползунок стал доступен. Теперь можете менять настройки.
Настраиваем яркость экрана в своём приложении
Существует возможность переопределить яркость экрана в пределах своего приложения. Я не смог придумать, где можно найти практическое применение, но вдруг вам пригодится. Для управления яркостью экрана воспользуемся элементом SeekBar.
За яркость экрана отвечает свойство LayoutParams.screenBrightness:
Интересно, что когда выводил ползунок в значение 0, то эмулятор зависал с экраном блокировки. Вам следует учесть эту ситуацию и добавить условие:
Опять столкнулся с проблемой. Пример работал на старых устройствах, а на некоторых устройства не работает. Но за эти годы мне ни разу не пришлось использовать этот способ, поэтому даже не стал искать причину. И кстати, ошибка со значением 0 уже не возникает (возможно из-за того, что сам пример не работает как раньше).
Определение поддерживаемых экранных размеров в манифесте
Не всегда предоставляется возможным написать приложение для всех возможных типов экранов. Вы можете использовать тег в манифесте, чтобы указать, на устройствах с какими экранами может работать ваша программа.
В данном примере приводится поддержка нормальных и больших экранов. Маленьким экраном можно назвать любой дисплей с разрешением меньше, чем HVGA. Под большим экраном подразумевается такой, который значительно больше, чем у смартфона (например, у планшетов). Экран нормальных размеров имеет большинство смартфонов.
Атрибут anyDensity говорит о том, каким образом ваше приложение будет масштабироваться при отображении на устройствах с разной плотностью пикселов. Если вы учитываете это свойство экрана в своем интерфейсе, установите этому атрибуту значение true. При значении false Android будет использовать режим совместимости, пытаясь корректно масштабировать пользовательский интерфейс приложения. Как правило, это снижает качество изображения и приводит к артефактам при масштабировании. Для приложений, собранных с помощью SDK с API level 4 и выше, этот атрибут по умолчанию имеет значение true.
Размеры картинок для фона экрана
Если вы используете изображение в качестве фона, то нет смысла выводить очень большую картинку на устройстве с маленьким экраном. Можно подготовить разные размеры.
res/drawable-ldpi — 240×320
res/drawable-mdpi — 320×480
res/drawable-hdpi — 480×800
res/drawable-xhdpi — 640×960
res/drawable-xxhdpi — 960×1440
res/drawable-tvdpi — 1.33 * mdpi
Источник
Изменение разрешения экрана на Android-устройстве
Внимание! Изменение разрешения экрана может привести к проблемам, поэтому все дальнейшие действия вы выполняете на свой страх и риск!
Способ 1: Системные средства
В последнее время на рынке всё чаще появляются девайсы с матрицами высокого (2К и выше) разрешения. Разработчики таких гаджетов понимают, что это не лучшим образом сказывается на производительности, поэтому добавляют в прошивку инструменты для соответствующей настройки.
- Запустите приложение параметров, после чего перейдите в нём к пункту «Display (иначе может называться «Экран», «Экран и яркость», «Параметры экрана», «Screen» и прочее похожее по смыслу).
Далее укажите один из приемлемых для вас вариантов и нажмите «Применить» («Apply»).
Изменения будут немедленно применены.
Этот метод – самый простой, но воспользоваться им можно на ограниченном числе прошивок, в которые, к сожалению, чистый Android пока не входит.
Способ 2: Настройки разработчика
Разрешение экрана зависит от значения DPI (количества точек на дюйм), которое можно поменять в параметрах разработчика. Делается это следующим образом:
- Откройте «Настройки» и перейдите в пункты «Система» – «Дополнительно» – «Для разработчиков».
Если последний вариант отсутствует, воспользуйтесь инструкцией далее.
Подробнее: Как активировать режим разработчика в Android
Пролистайте перечень, найдите опцию с названием «Минимальная ширина» (иначе может называться «Minimal width» и подобное по смыслу) и тапните по ней.
Должно появится всплывающее окно с полем ввода значения DPI, которое мы и будем менять (имеющееся по умолчанию рекомендуется запомнить). Конкретные числа зависят от устройства, но в большинстве из них диапазон составляет 120-640 точек на дюйм. Впишите любое из этой последовательности и тапните «ОК».
На этом работу с настройками разработчика можно считать завершённой. Единственный минус – подходящее число придётся выбирать «методом тыка».
Способ 3: Стороннее приложение (Root)
Для устройств с включённым рут-доступом стоит воспользоваться одной из сторонних утилит, которые можно получить из Google Play – например, Screen Shift.
- Запустите приложение после установки, затем разрешите использование root и тапните «ОК».
В главном меню обратите внимание на блок опций «Resolution» – тапните по переключателю для активации.
Далее в левом поле введите количество точек по горизонтали, в правом – по вертикали.
Для применения изменений нажмите «Continue» в окне с предупреждением.
Теперь будет установлено выбранное вами разрешение.
Способ 4: ADB
Если ни один из вышеприведённых методов для вас не подходит, остаётся самый сложный в исполнении вариант – задействование Android Debug Bridge.
- Загрузите требуемый софт по ссылке выше и установите его в соответствии с инструкцией.
- Активируйте на телефоне настройки разработчика (см. шаг 1 второго способа) и включите в нём отладку по USB.
На компьютере запустите «Командную строку» от имени администратора: откройте «Поиск», введите в нём запрос командная строка , кликните по результату и воспользуйтесь опциями.
Подробнее: Как открыть «Командную строку» от имени администратора в Windows 7 и Windows 10
После запуска терминала напечатайте в нём букву диска, на котором находится ADB, и нажмите Enter. Если по умолчанию это C:, сразу переходите к следующему шагу.
Далее в «Проводнике» откройте папку, в которой находится файл adb.exe, кликните по полю адреса и скопируйте путь оттуда.
Вернитесь к окну «Командной строки», введите символы cd , после чего поставьте пробел, вставьте скопированный ранее путь и снова воспользуйтесь клавишей Enter.
Снова перейдите к телефону – подсоедините его к ПК и разрешите доступ для отладки.
В «Командной строке» введите adb devices и убедитесь, что устройство распознаётся.
Если список пуст, отсоедините телефон и попробуйте подключиться снова.
Воспользуйтесь следующей командой:
adb shell dumpsys display
Внимательно пролистайте полученный список, найдите блок с именем «Display Devices», в котором поищите параметры «width», «height» и «density» – они отвечают за разрешение по ширине и высоте, а также за плотность пикселей соответственно. Запомните эти данные или запишите, чтобы установить их обратно в случае проблем.
Теперь можно переходить к редактированию. Введите следующее:
adb shell wm density *число*
Вместо *число* укажите требуемые значения плотности пикселей, затем нажмите Enter.
Следующая команда выглядит так:
adb shell wm size *число*x*число*
Как и на предыдущем шаге, замените оба *число* на нужные вам данные: количество точек по ширине и высоте соответственно.
Обязательно убедитесь, что между значениями находится символ x !
Чтобы изменения вступили в силу, телефон нужно перезагрузить – это тоже можно сделать через ADB, команда следующая:
Использование Android Debug Bridge является универсальным способом, который подходит практически для всех устройств.
Помимо этой статьи, на сайте еще 12470 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Помогла ли вам эта статья?
Поделиться статьей в социальных сетях:
Еще статьи по данной теме:
У меня после выполненных шагов разрешение не поменялось.
Сделал изменение разрешения через ADB на Galaxy A30s c 720*1560 на 1120*2427 с сохранением пропорций между сторонами, density поставил 415.
Все отлично, намного комфортнее для глаз, но есть один минус — верхняя строка навигации, где указано время, % заряда батареи и пр., получился примерно на четверть высоты срезан снизу. Как бы ничего особо криминального, но все же неприятно. Как это победить? Пытался играться разными вариантами ширины, высоты и разрешения — неизменно верхняя строка остается срезанной снизу…
А если уменьшить размер шрифта?
Существует еще один способ изменить разрешение экрана на Android, не описанный в данной статье. Итак…
Способ 5: Терминал (Root).
Этот способ, как и способ 3, подходит для устройств с включенным Root-доступом.
1. Установите приложение, выполняющее функции терминала, например TermOne Plus
2. В окне терминала введите команду $ su, разрешите приложению доступ. Символ $ в начале строки изменится на #.
3. Введите команду # wm size 1024×768, где 1024 — желаемая ширина разрешения, 768 — высота.
4. Если элементы интерфейса получились слишком мелкие или слишком крупные, скорректируйте их размер командой #wm density 250, где 250 — желаемая плотность пикселей. Целесообразно выбирать значения от 120 до 500, чем больше число тем крупнее элементы.
Данный способ имеет свои преимущества и недостатки, к которым относятся:
Преимущества:
— работает на любых андроид-устройствах;
— изменения применяются сразу, без перезагрузки, что многократно ускоряет процесс настройки;
— не требует установки тяжелого (и зачастую глючного) софта, работающего в фоне, нагружающего процессор, ОЗУ, снижающего время автономной работы;
— не требует наличия компа, идеально подходит для виртуальных машин.
Недостатки:
— на время настройки нужны Root-права, которые либо есть в устройстве «из коробки», либо придется ставить специальный софт, например Magisk;
— не имеет «защиты от дурака» и если ввести в командную строку некорректные числа, то устройство может выйти из под контроля.
Чтобы избежать негативных последствий, советую выполнить пункты 1 — 9 из метода 4 этой статьи. Это позволить в случае необходимость вернуть контроль над устройством через ADB, восстановив исходные значения.
Задайте вопрос или оставьте свое мнение Отменить комментарий
Источник