Как увеличить или уменьшить шрифты и элементы интерфейса на Android

aaaeceadca Новости

Начальный набор (starter kit)

Джереми Салли, дизайнер из

, графически наглядно

соотношение этих трех разрешений. Вам пригодится

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

Первоначальная реализация


Начнем с того, что в нужном месте приложения добавим функционал выбора и сохранения коэффициента:

Естественно

new_coef

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

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

Далее в файле манифеста укажем новый наш класс:

После этого необходимо создать еще один класс, но уже на основе TextView:


Обратите внимание на то, что у метода

setTextSize

первый параметр по умолчанию =

9-slice scaling

В Android есть своеобразный способ масштабирования графических ресурсов, который не похож на CSS. 9-slicing позволяет вам указать, какую именно часть картинки вы хотите масштабировать. Остальная часть, такая как закругленные углы, остается фиксированного размера даже при масштабировании всего ресурса. Для этого в файле картинки необходимо нарисовать черные линии шириной в 1px в следующих областях:

Layout


Основную верстку делаем через вложенные LinearLayout. Размеры элементов и блоков в пикселях переносим с макета в weight и

соответственно. Отступы верстаем FrameLayout или в нужных местах добавляем

Для примера сверстаем ячейку списка приложений:
Как увеличить или уменьшить шрифты и элементы интерфейса на Android

Scrollview и list

Подход с weightSum не примемим к прокручивающимся элементам, их внутренний размер вдоль прокрутки ничем не ограничен. Для верстки ScrollView и List нам потребуется задать их размеры в коде (130 — высота элемента списка).

if (view == null) {
    view = mInflater.inflate(R.layout.item_app_list, viewGroup, false);
    view.setLayoutParams(new AbsListView.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, S.dScale(130)));
 }


И дальше можно применять трюк с weightSum.

Shape

Если ресурс легко раскладывается на простые геометрические фигуры и градиенты лучше вместо нарезки использовать

. Для примера нарисуем фон рамку вокруг проекта в списке, которую мы выше нарезали как Nine-patch.

The action bar

В отличие от iPhone, где название обычно находится в середине заголовка, на Android название в левом верхнем углу, рядом с логотипом приложения. Нажатие на логотип обычно вызывает боковое меню или возвращает вас “назад”, к предыдущему экрану.

Под названием приложения порой можно заметить треугольную стрелочку, благодаря ей возможна навигации внутри приложения. Прямо как в сети интернет, очень частый способ отображения выпадающего меню на Android.

Наконец, если вы серьезно относитесь к гайдлайнам, все элементы управления должны быть в правом верхнем углу. Это относится и к функции обновить (потянуть, чтоб обновить как на iPhone, очень редко используются в Android), поиск, и печально известные кнопки “действия” которые в идеале дожны быть в виде трех точек. Точки используются для тех действий, которые не смог вместить Action Bar.

Как увеличить или уменьшить шрифты и элементы интерфейса на android

На Android работает огромное количество устройств, и то, как выглядит на них какое-либо приложение, зависит от плотности изображения — DPI. Android поддерживает нативно 7 значений DPI: 120, 160, 213, 240, 360, 480 и 640. Чем больше число, тем крупнее текст и картинки. На устройствах с root-доступом это значение можно поменять вручную и разместить на экране как можно больше полезной информации или наоборот — увеличить элементы интерфейса.

Когда приложение установится, запустите его, предоставьте привилегии root-доступа и найдите строку «Set Density». Нажмите на нее и укажите желаемую плотность. Значения меньше дефолтного уменьшат шрифты и картинки, а больше — увеличат. Перезагрузите устройство, чтобы удалились все кэшированные изображения. Вернуть плотность, установленную по умолчанию, можно нажатием на «Reset density».

В некоторых случаях после изменения плотности изображение на экране выглядит некорректно. Это можно исправить, подобрав другое разрешение в пункте «Set screen size» и затемнив края экрана в пункте «Set overscan area».

Некоторые приложения запускаются на устройствах с низким DPI в планшетном режиме. Например, Chrome показывает открытые вкладки вверху и открывает десктопные версии сайтов, а не мобильные.

Чтобы вернуть все как было, откройте Window Manipulator, сбросьте все значения и перезагрузите устройство.

Картинки

Масштабирование графики силами Android трудоемкая и затратная по памяти операция. Картинки внутри Android обрабатываются как bitmap. Например, наш логотип в размере 500×500 со сплешскрина распакуется в bitmap размером 1мб (

), при масштабировании создается еще один bitmap, скажем в 500кб. Или 1,5мб из доступных

. Мы не раз сталкивались с нехваткой памяти в богатых на графику проектах.

Поэтому картинки которые нельзя описать ни Nine-patch ни Shape я предлагаю поставлять в приложении как огромный ресурс в папке nodpi и при первом запуске масштабировать изображение до нужного размера и кешировать результат. Это позволит нам ускорить работу приложения (не считая первого запуска) и уменьшить потребление памяти.

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

Кнопка “назад” (the back button)

Долгое время back была аппаратной кнопкой Android устройств, не было смысла добавлять программный аналог в пользовательский интерфейс. Сейчас модно использовать кнопку back для навигации внутри приложений. Если

“назад” пользовательского интерфейса (её называют “up button”), то между хардварной back и up есть небольшая разница. Up производит переход на один экран, в рамках приложения, в то время как back к любому приложению или контенту.

Обновленная реализация


Для себя я решил использовать коэффициент размера шрифта от

0.7f1.45f

с интервалом

0.15f

. Т.е. это 6 шагов. Для выбора конкретного значения использую

SeekBar

Просматривайте проектируемый дизайн на android устройстве

Роман Нурик из Google разработал очень полезный инструмент

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

Программу Android Design Preview можно установить на Windows, Mac OS X или практически любую из операционных систем семейства *nix. Приложение написано на Java и представляет собой обычный JAR-файл. Работает Android Design Preview следующим образом: разработчик подключает смартфон к компьютеру по USB (На ПК должны быть установлены ADT)

Размеры

Начиная с Android 2.x, минимальный размер элемента должен быть: 28px для текста, 96px для меню и заголовка, 116px для нижнего колонтитула. Это немногим больше чем в iOS (24px, 88px и 100px). Если говорить о соотношении 116% Android к iOS.

Разрешение

Параметры разрешений под Android немного путают — xhdpi (2x), hdpi (1.5x) и mdpi (1x).

Звучит крайне технически. Когда год назад я начинал работать, никто толком не мог мне объяснить какое соотношение сторон межу ними. После многих расспросов и поисков, оно составило 720×1280, 540×960 и 360×640. Проектируя дизайн макет, не забывайте учитывать хардварные кнопки и статус бар.

От переводчика: На самом деле то, что описано в этом абзаце, не совсем верно. По ссылке и в таблице вы найдете более точное описание.

Советы по работе с графикой

1. Используйте

везде где возможно, где невозможно — перерисуйте дизайн.

2. Простые элементы рисуйте с помощью

3. Избегайте масштабирования изображений в runtime

Nine-patch это графический ресурс содержащий в себе мета-информацию о том как он должен растягиваться. Подробнее в документации Android или на Хабре.

Nine-patch нужно нарезать под все dpi: ldpi mdpi tvdpi hdpi, xhdpi, xxhdpi. Масштабирование ресурсов во время работы приложения это плохо, а масштабирование Nine-Patch приводит к неожиданным артефактам. Ни в коем случае не задавайте в Nine-patch отступы, они оформляются отдельными элементами layout, чтобы растягиваться пропорционально контенту.

Шрифты

Шрифты, к сожалению, зависят от специфики устройства, так что будьте готовы к казусам. Не расстраивайтесь если вам придется протестировать дизайн на старом устройстве. Были и куда худшие дни — вспомните IE6. Самый популярный шрифт на данный момент

. Впрочем

Оцените статью
Huawei Devices
Добавить комментарий