Android screen width java

Как получить размеры экрана, окна и веб-страницы в JavaScript?

Доброго времени суток, друзья!

Представляю Вашему вниманию перевод небольшой заметки «How to Get the Screen, Window, and Web Page Sizes in JavaScript» автора Dmitri Pavlutin.

Для определения ориентации окна браузера (ландшафтной или портретной) можно сравнить его ширину и высоту.

Однако во всевозможных доступных размерах легко запутаться: существуют размеры экрана, окна, веб-страницы и т.д.

Что означают эти размеры и, главное, как их получить? Именно об этом я и собираюсь рассказать.

1. Экран

1.1. Размер экрана

Размер экрана — это ширина и высота всего экрана: монитора или мобильного дисплея.

Получить информацию о размере экрана можно с помощью свойства screen объекта window :

1.2. Доступный размер экрана

Доступный размер экрана — это ширина и высота активного экрана без панели инструментов операционной системы.

Для получения доступного размера экрана снова обращаемся к window.screen :

2. Окно

2.1. Размер внешнего окна (или внешний размер окна)

Размер внешнего окна — это ширина и высота текущего окна браузера, включая адресную строку, панель вкладок и другие панели браузера.

Получить информацию о размере внешнего окна можно с помощью свойств outerWidth и outerHeight объекта window :

2.2. Внутренний размер окна (или размер внутреннего окна)

Внутренний размер окна — это ширина и высота области просмотра (вьюпорта).

Объект window предоставляет свойства innerWidth и innerHeight :

Если мы хотим получить внутренний размер окна без полос прокрутки, то делаем следующее:

3. Размер веб-страницы

Размер веб-страницы — это ширина и высота отображаемого содержимого (отрендеренного контента).

Для получения размера веб-страницы используйте следующее (включает в себя внутренние отступы страницы, но не включает границы, внешние отступы и полосы прокрутки):

Если pageHeight больше, чем внутренняя высота окна, значит, присутствует вертикальная полоса прокрутки.

4. Заключение

Надеюсь, теперь Вы понимаете, как получать различные размеры.

Размер экрана — это размер монитора (или дисплея), а доступный размер экрана — это размер экрана без панелей инструментов ОС.

Внешний размер окна — это размер активного окна браузера (включая поисковую строку, панель вкладок, открытые боковые панели и проч.), а внутренний размер окна — это размер области просмотра.

Наконец, размер веб-страницы — это размер контента.

Источник

Экран

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

Источник

Размер окна браузера в JavaScript

В JavaScript есть глобальные переменные с текущими значениями разрешения экрана, а также шириной и высотой окна браузера. Они доступны для вызова в любом месте кода и могут использоваться для решения задач, связанных с адаптацией сайта под мобильные устройства.

Текущие значения вашего браузера:

Ширина
document.body.clientWidth;
innerWidth;
outerWidth;
screen.availWidth.
screen.width;
Высота
document.body.clientHeight;
innerHeight;
outerHeight;
screen.availHeight.
screen.height;

  • document.body.clientWidth — ширина элемента body.
  • innerWidth — внутренняя рабочая часть браузера с сайтом.
  • outerWidth — размер с учётом полос прокрутки и рамок браузера.
  • screen.width — разрешение экрана по горизонтали.
  • screen.availWidth — доступная область эркана для окон. Не учитвает служебные панели операционной системы, например, панель задач в Windows.
Читайте также:  Как сделать звук андроида громче

К последним 3 переменным иногда добавляют «window», это не играет роли и только удлиняет синтаксис. Например, «window.screen.width».

Пример события для отслеживания изменения размеров окна браузера в реальном времени. Результаты выводятся в консоль браузера.

Высота экрана и окна

Аналогичные переменные для получения высоты в JS:

  • document.body.clientHeight;
  • innerHeight;
  • outerHeight;
  • screen.height;
  • screen.availHeight;

Наименованя переменных чувствительно к регистру букв.

Высота и ширина на jQuery

При наличии библиотеки jQuery можно использовать другой синтаксис:

Источник

Размер окна браузера в JavaScript

В JavaScript есть глобальные переменные с текущими значениями разрешения экрана, а также шириной и высотой окна браузера. Они доступны для вызова в любом месте кода и могут использоваться для решения задач, связанных с адаптацией сайта под мобильные устройства.

Текущие значения вашего браузера:

Ширина
document.body.clientWidth;
innerWidth;
outerWidth;
screen.availWidth.
screen.width;
Высота
document.body.clientHeight;
innerHeight;
outerHeight;
screen.availHeight.
screen.height;

  • document.body.clientWidth — ширина элемента body.
  • innerWidth — внутренняя рабочая часть браузера с сайтом.
  • outerWidth — размер с учётом полос прокрутки и рамок браузера.
  • screen.width — разрешение экрана по горизонтали.
  • screen.availWidth — доступная область эркана для окон. Не учитвает служебные панели операционной системы, например, панель задач в Windows.

К последним 3 переменным иногда добавляют «window», это не играет роли и только удлиняет синтаксис. Например, «window.screen.width».

Пример события для отслеживания изменения размеров окна браузера в реальном времени. Результаты выводятся в консоль браузера.

Высота экрана и окна

Аналогичные переменные для получения высоты в JS:

  • document.body.clientHeight;
  • innerHeight;
  • outerHeight;
  • screen.height;
  • screen.availHeight;

Наименованя переменных чувствительно к регистру букв.

Высота и ширина на jQuery

При наличии библиотеки jQuery можно использовать другой синтаксис:

Источник

Как получить размер экрана Android в программном отношении, раз и навсегда?

Как я могу определить размер экрана программно, в единицах, используемых событиями касания и Просмотр измерения / макета? Другими словами, мне нужны координаты нижнего правого угла экрана, в системе координат, используемой сенсорными событиями getRawX()/getRawY() и View.getLocationOnScreen() .

Я не решаюсь называть нужные пиксели «событий» событий / просмотров, поскольку, по-видимому, в моем телефоне существует несколько понятий «пикселей», и они не дополняют последовательную историю.

Я вижу, что это было спрошено и много ответили на stackoverflow и в других местах, но ни один из ответов не работает на моем телефоне (droid 4, android 4.1.2) во всех режимах:

  • Могу ли я узнать ширину экрана программно в приложении Android?
  • Как я могу получить ScreenSize программно в android
  • Android set Просмотр видимости программно на основе размера экрана
  • Как получить высоту экрана в Android?
  • Получить высоту экрана в Android
  • https://groups.google.com/forum/#!topic/android-developers/IpxnfvDFrpc
  • http://shuklaxyz.blogspot.com/2012/02/how-to-programmatically-figure-out.html
  • http://coderock.net/how-to-determine-screen-resolution-programmatically/
  • http://www.codeproject.com/Tips/313848/Get-actual-screen-size-for-the-application-layout
  • Android и настройка ширины и высоты программно в единицах dp
  • http://www.simplecodestuffs.com/how-to-get-screen-dimensions-programmatically-in-android/
  • http://www.androidsnippets.com/get-size-and-orientation-of-the-screen
  • http://grokbase.com/t/gg/android-developers/127aatfqb6/how-to-determine-screen-resolution-programmatically

Это код библиотеки, который должен работать независимо от того, находится ли приложение в режиме совместимости с экраном (т.е. targetSdkVersion

Мой телефон (дроид 4 работает андроид 4.1.2) имеет 540×960 физических пикселей, то есть маленькие цветные светящиеся точки.

Размер экрана в желаемых единицах, от просмотра событий касания и просмотра измерений, составляет 360×640, когда приложение находится в режиме сопоставления экрана, 540×960, когда приложение не находится в режиме сопоставления экрана. Это номера, которые мне нужно найти программно, без проблем с сенсорными событиями или представлениями, чтобы найти их, но мне очень трудно найти какой-либо API, который вернет эти числа.

Объекты Display и DisplayMetrics, полученные разными способами, требуют, чтобы размер экрана составлял 540×960 «пикселей» (независимо от того, включен режим экрана или нет). Чтобы быть конкретным, все говорят, что все 540×960 все время: DisplayMetrics. Пиксели, Display.getSize (), Display.getRealSize (), Display.get (),

Конфигурационные объекты, полученные разными способами, говорят на экране <Ширина, Высота>Dp = 360×614 (независимо от того, включен режим экрана или нет). Я не считаю, что это весь экран, так как соотношение сторон неверно. (Я думаю, что это весь экран минус строка состояния, мне нужен весь экран.) Я думаю, можно с уверенностью сказать, что весь экран 360×640 dp, хотя я не знаю API, который возвращает этот 640.

DisplayMetrics, полученный разными способами, говорит, что «плотность» равна 1.0f, когда в режиме сопоставления экрана, 1.5f, если не в режиме сопоставления экрана.

Читайте также:  Trojan banker android 0 сбербанк

Функция getWindow().getAttributes(). не помогает, поскольку обычно она содержит MATCH_PARENT а не фактические размеры. Но я могу получить желаемый ответ из getWindow().getDecorView().getMeasured() (что на самом деле удивительно, так как decorView окна Activity не выглядит так, как будто он занимает весь экран; Похоже, что он занимает экран минус строка состояния). Но я не хочу полагаться на это, потому что, если окно когда-либо будет изменено (появляется мягкая клавиатура? Кто-то вызывает window.setAttributes ()? Или, может быть, я вообще не занимаюсь деятельностью), это, очевидно, будет все неправильно.

Я понимаю, что предполагается следующая формула: pixels = dp * density. Кажется, что она согласуется со всеми зарегистрированными номерами ((3), (4), (5) выше), если не в режиме совместимости экрана: 540×960 = 360×640 * 1,5 Но в режиме совместимости с экраном он не складывается: 540×960! = 360×640 * 1 Итак, что-то не так.

Самое простое объяснение, я думаю, в том, что методы, перечисленные в (3) выше, просто дают неправильный ответ для «пикселей», когда в режиме сопоставления экрана – то есть они должны были возвращать 360 × 640 «пикселей», но они ошибочно Возвращая 540×960 вместо этого. Но могут быть и другие способы взглянуть на это.

В любом случае получение желаемых номеров независимо от режима, из вышеупомянутых частей головоломки, безусловно, является сложной загадкой. Я нашел способ, который, кажется, работает на моем телефоне в обоих режимах, но он чрезвычайно обходчив, и он полагается на два предположения, которые все еще кажутся довольно шаткими (как описано в комментариях к коду ниже).

Есть ли лучший / более чистый способ найти размер экрана?

Теперь вы можете измерить размер экрана в пикселях, который является лучшим единицей измерения, чем сантиметр, потому что все кнопки, текстовые изображения и т. Д. Измеряются в этом устройстве. То, что я обычно использую

Используя DisplayMetrics, вы можете получить высоту и ширину экрана любого устройства. Вот код.

В вашем методе onCreate

В своем # 6 вы отмечаете, что DecorView, похоже, обеспечивает то, что вы хотите, но вы не думаете, что это реально. Я считаю, что это так близко, как вы можете прийти. Согласно документации для Window.getDecorView :

Извлеките представление окна верхнего уровня окна (содержащее стандартный оконный фрейм / декорации и содержимое клиента внутри него), который можно добавить в окно окна в оконный менеджер.

Строка состояния является частью упомянутого там оформления окна. Программные клавиатуры и другие наложения получат свое собственное окно, поэтому они не должны мешать соответствующим значениям. Правильно, что это не точно показатели отображения, но если ваше приложение полноэкранное, всегда должен быть полный размер экрана, отфильтрованный через переводчик совместимости. Другие приложения не будут иметь доступ к Window вашего приложения, поэтому нет необходимости беспокоиться о том, что какое-либо другое приложение меняет атрибуты, пока вы не смотрите.

Надеюсь, это поможет.

Если вы используете уровень api 17 или выше, проверьте getRealMetrics и getRealSize на дисплее

Для уровня api 14,15 & 16 смотрите здесь

Я должен поставить это как комментарий, но у меня нет репутации для этого.
Это может быть не совсем правильный ответ, но я получил свои размеры, когда я переключил высоту и ширину в методе DisplayMetrics.

Как я сказал, это может быть неверно, но я не знаю, почему, но это сработало для меня.

Я использовал теорему Пифагора, чтобы найти диагональный размер экрана телефона Android / планшета Android, тот же самый принцип можно применить к экрану iPhone или Blackberry.

Пифагор, должно быть, был гением, он знал программирование смартфонов так много лет назад: p

Я использую метод ниже, чтобы получить ширину устройства:

Я думаю, что эта функция поможет вам просто получить ширину и высоту размера экрана вашего андроида. Функция возвращает ширину и высоту в виде массива целых чисел, как показано ниже

И на вашем методе создания выведите свою ширину и высоту, как показано ниже.

Загрузите исходный код и протестируйте его на своей студии Android.

Источник

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