Ширина экрана при android

Экран

Небольшая подборка различных примеров для работы с экраном. На самом деле их не так часто приходится использовать в практике, но иметь общее представление бывает необходимым. Начало было положено в 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 (количества точек на дюйм), которое можно поменять в параметрах разработчика. Делается это следующим образом:

  1. Откройте «Настройки» и перейдите в пункты «Система»«Дополнительно»«Для разработчиков».

Если последний вариант отсутствует, воспользуйтесь инструкцией далее.

Читайте также:  Android studio adding module

Подробнее: Как активировать режим разработчика в Android
Пролистайте перечень, найдите опцию с названием «Минимальная ширина» (иначе может называться «Minimal width» и подобное по смыслу) и тапните по ней.

Должно появится всплывающее окно с полем ввода значения DPI, которое мы и будем менять (имеющееся по умолчанию рекомендуется запомнить). Конкретные числа зависят от устройства, но в большинстве из них диапазон составляет 120-640 точек на дюйм. Впишите любое из этой последовательности и тапните «ОК».

На этом работу с настройками разработчика можно считать завершённой. Единственный минус – подходящее число придётся выбирать «методом тыка».

Способ 3: Стороннее приложение (Root)

Для устройств с включённым рут-доступом стоит воспользоваться одной из сторонних утилит, которые можно получить из Google Play – например, Screen Shift.

    Запустите приложение после установки, затем разрешите использование root и тапните «ОК».

В главном меню обратите внимание на блок опций «Resolution» – тапните по переключателю для активации.

Далее в левом поле введите количество точек по горизонтали, в правом – по вертикали.

Для применения изменений нажмите «Continue» в окне с предупреждением.

Теперь будет установлено выбранное вами разрешение.

Способ 4: ADB

Если ни один из вышеприведённых методов для вас не подходит, остаётся самый сложный в исполнении вариант – задействование Android Debug Bridge.

  1. Загрузите требуемый софт по ссылке выше и установите его в соответствии с инструкцией.
  2. Активируйте на телефоне настройки разработчика (см. шаг 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, команда следующая:

  • После повторного запуска девайса увидите, что разрешение было изменено. Если после загрузки вы столкнулись с проблемами (сенсор плохо реагирует на касания, элементы интерфейса слишком мелкие или большие, часть софта отказывается работать), то снова подключите устройство к ADB и воспользуйтесь командами из шагов 9 и 10 для установки заводских значений, полученных на шаге 8.
  • Читайте также:  Вконтакте для андроид не приходят уведомления

    Использование 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, восстановив исходные значения.

    Задайте вопрос или оставьте свое мнение Отменить комментарий

    Источник

    Оцените статью