Почему большие устройства на самом деле маленькие
Андрей Подкин
Вы замечали когда-нибудь, что на Android-смартфонах все выглядит крупнее, чем на iPhone в одних и тех же приложениях? А то, что на фаблете все выглядит крупнее, чем на компактном смартфоне, и в результате информации на экране ровно столько же?
Что не так с плотностью пикселей
Все так и есть. Но чем же это обусловлено? Android поддерживает экраны с разной плотностью пикселей. Не все они были изначально. Но к текущему моменту сложились пять стандартных значений: 160, 240, 320, 480 и 640 dpi. Стандартными они являются потому, что именно в них представляются все растровые графические ресурсы приложения (картинки). Есть еще и нестандартные плотности пикселей, но о них чуть позже.
Если же вы возьмете самые типовые устройства на сегодня — 5″ HD и 5,5″ FHD, то окажется, что у них плотность пикселей — 294 и 400 dpi соответственно. Что же в этом случае происходит? Физическая и программная плотность пикселей отличается. Когда какое-нибудь приложение опрашивает устройство: «Какая у тебя плотность пикселей?», то в ответ всегда получает только стандартное значение. Конечно, никто не мешает написать приложение под конкретную модель телефона и учесть расхождения, но прикладные программисты этим не занимаются. Такая тонкая адаптация может оставаться только в оболочках вендоров, которые изготавливают сам смартфон.
Если физическая и программная плотность пикселей отличаются, то в какую же сторону? Давайте рассмотрим на примере. Высота стандартной кнопки в Material Design — 0,225 дюйма (5,715 мм). Если устройство с физическим dpi 400 заявит программный dpi 320, то Android отрисует кнопку высотой 320*0,225 = 72 пикселя. И на физическом экране она займет 72/400 = 0,18 дюйма (4,572 мм). И по этой кнопке будет сложнее попасть пальцем. Поэтому производители, как правило, указывают программную плотность пикселей выше физической. Т.е. для 400 dpi физических это будет 480 программных. Исключения бывают только в тех случаях, когда отклонение составляет всего несколько процентов. Например, смартфоны с физической плотностью пикселей 342 dpi сообщают программную 320.
Вычисляем настоящие размеры
А теперь посмотрим внимательно на расчеты, которые мы производили только что. Они основаны на том факте, что разрешение, плотность пикселей и размер — величины взаимозависимые. И зная две из них, третью можно вычислить. Сделаем это для размера экрана. Для примера возьмем смартфон разрешением 1080×1920 (FHD) и плотностью пикселей 400 dpi. Такой экран будет иметь размер 2,7×4,8 дюйма. По теореме Пифагора можно вычислить диагональ. Она составит приблизительно 5,507 дюйма. Но, как мы уже выяснили, программная плотность пикселей составляет не 400, а 480 dpi. Следовательно с точки зрения прикладного ПО экран будет иметь размеры 2,25×4 дюйма, что дает диагональ всего лишь 4,6 дюйма! А если возьмем смартфон с разрешение 720×1280 (HD) и программной плотностью пикселей 320 (при физической 342), то получим точно такой же программный размер — 2,25×4 дюйма (и точно такую же диагональ в 4,6 дюйма). Т.е. устройства отличающиеся диагональю на 1,2 дюйма (что в таких размерах довольно много) с точки зрения прикладного ПО выглядят совершенно одинаково и на них помещается одинаковое количество информации. Просто на более крупном смартфоне все выглядит крупнее, но и только. Проиллюстрируем это скриншотами приложения My Shows со смартфонов Xiaomi Mi2s и Samsung Galaxy Note 3.
Программный размер смартфонов совпадает и мы видим, что на обоих помещается всего шесть полных строк из списка сериалов и часть седьмой строки (все семь, если отключить рекламу). Таким образом, большой размер Galaxy Note не дает нам никакого преимущества — мы не можем увидеть на его экране больше информации.
Здесь следует сделать очень важное отступление и сказать, что приложениях с большими объемами текста (браузеры, «читалки» книг) мы можем гибко настроить размер шрифта и таким образом получить на разных экранах совершенно разный объем информации. В этом случае большой экран будет иметь безусловное преимущество.
Какие могут быть экраны
Поскольку в Android практически не применяются нестандартные разрешения (а если и применяются, то они основаны на стандартных, просто одна сторона чуть длиннее), то мы можем заранее вычислить все возможные программные размеры экранов смартфонов:
Разрешение \ dpi
|
160
|
240
|
320
|
480
|
640
|
480×800 (WVGA) |
5,83″
(3×5″)
|
3,88″
(2×3,33″)
|
—
|
—
|
—
|
540×960
(qHD) |
6,88″ (3,375×6″)
|
4,6″
(2,25×4″)
|
3,44″
(1,69×3″)
|
—
|
—
|
720×1280
(HD) |
—
|
6,12″
(3×5,33″)
|
4,6″
(2,25×4″)
|
—
|
—
|
1080×1920 (FHD) |
—
|
—
|
6,88″ (3,375×6″)
|
4,6″
(2,25×4″)
|
3,44″
(1,69×3″)
|
1440×2560 (QHD) |
—
|
—
|
—
|
6,12″
(3×5,33″)
|
4,6″
(2,25×4″)
|
Как можно заметить, почти для всего многообразия смартфонов с разным разрешением и разными диагоналями мы чаще всего упираемся в один и тот же программный размер — 4,6″.
Новые герои
Ситуация могла бы выглядеть совершенно удручающей. Особенно на фоне появления iPhone 6 Plus — настоящего фаблета с большой не только физической, но и программной диагональю. Но, оказывается, не так все плохо. В последние годы появляются смартфоны с нестандартной плотностью пикселей. Возьмем, например, семейство Nexus:
- Nexus 5x — 420 dpi;
- Nexus 6 и 6p — 560 dpi.
Samsung начинает применять новые плотности с Galaxy Note 5 (в Note 4 и S6 была программная плотность 640 dpi).
Более того, в Android 7 появилась открытая (в Adroid 6 была скрытая) возможность смены плотности пикселей. Например, на Nexus 5x при изменении настройки получаются следующие значения dpi: 356, 420 (по умолчанию), 460, 500 и 540.
Если же у вас смартфон на старой версии Android, то можно попробовать изменить файл /system/build.prop. Внимание! Это может привести к «окирпичиванию» аппарата!!! Особенно, если выставлять нестандартную плотность пикселей. Параметр в файле называется «ro.sf.lcd_density».
Попробуем рассчитать возможные программные размеры смартфонов для нестандартных плотностей пикселей (при установках по умолчанию):
Разрешение \ dpi
|
420
|
560
|
720×1280 (HD) |
3,49″ (1,71×3″)
|
—
|
1080×1920 (FHD) |
5,25″ (2,57×4,57″)
|
3,93″ (1,93×3,43″)
|
1440×2560 (QHD) |
7″ (3,41×6,1″)
|
5,25″ (2,57×4,57″)
|
Как видим, новая популярная программная диагональ экрана — 5,25″.
Чревата ли чем-то нестандартная плотность пикселей в новых аппаратах? Некоторые приложения могут быть не приспособлены к ней и некорректно отрисовывать свой интерфейс. Также есть нюанс, что растровая графика будет взята из «чужого» разрешения и отмасштабированна для нужного.
А если просто поменять размер шрифта?
Как же со всеми сложными впечатлениями соотносится возможность изменения размера шрифта? Ведь можно просто сделать его мельче и тогда на экран попадет больше информации. Так? Не совсем. Как уже говорилось выше, если в приложении отображается большой объем текста (читалка или браузер), то этот прием отлично работает. Но в бизнес-приложениях разработчики могут указывать физический размер элементов, не обращая внимания на размер шрифта. Попробуем проверить, как ведет себя приложение My Shows на одном и том же телефоне с разными размерами шрифта:
На приведенных двух экранах размер шрифта отличается на 3 ступени (-1 и +2 к стандартному). И этот пример далеко не единичный: как заказчики приложений, так и их разработчики далеко не всегда стараются оптимизировать приложение для разного размера шрифта.
Как узнать программный размер своего смартфона
Прежде, чем переходить в определению размера смартфона и сравнению размеров различных аппаратов, следует уточнить единицы измерения. Никто не применяет для работы с размерами дюймы — при работе с ними получаются дробные числа и надо постоянно применять правильное округление. Для того, чтобы работать только с целыми числами, Google применяет понятие «независимых от плотности пикселей» (density-independent pixels, сокращенно dp или dip). Один dp соответствует:
- 1 пикселю при плотности 160 dpi;
- 1,5 пикселям при плотности 240 dpi;
- 2 пикселям при плотности 320 dpi;
- 3 пикселям при плотности 480 dpi;
- 4 пикселям при плотности 640 dpi
Для значений 420 и 560 получаются числа 2,625 и 3,5 соответственно.
Наиболее популярный программный размер смартфонов в 4,6″ составляет 360х640 dp. 5,25″ — это уже 411х731 dp. Для того, чтобы узнать размер своего смартфона, достаточно запустить утилиту Screen Info или подобную. Ниже представлены примеры скриншотов этой утилиты для Xiaomi Mi2s, Samsung Galaxy Note 3, а также LG Nexus 5x со всеми возможными значениями dpi, устанавливаемыми в настройках экрана. Обратите внимание, что для устройств, имеющих наэкранные кнопки, утилита показывает размер только свободной области экрана без учета кнопок (при нажатии на верхнюю кнопку в интерфейсе откроется полный размер).
Заключение
Итак, подведем итоги. Всегда ли большой физический размер экрана означает, что на экране будет отображаться больше полезной информации? Нет. Гарантировано больше ее будет только для сплошной «простыни» текста с гибкой подстройкой размера шрифта. В бизнес-приложениях экраны с разным физическим размером могут вмешать одинаковое количество информации. Но ситуация не стоит на месте и появляются, пусть не гигантские, но хотя бы какие-то подвижки.
http://android.mobile-review.com/articles/48035/
|