Особенности современного андроид-приложения

06.05.2020
Posted in blog-article
06.05.2020 admin

Особенности современного андроид-приложения

Без чего нельзя представить приложение, отвечающее запросам времени? Ответ совсем близко ​👇🏻

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

Несмотря на то, что пользователи не могу видеть то, насколько устарели те или иные решения, на что им следует обратить внимание — это то, насколько современными являются внешний вид и ощущения программы и насколько хорошо она ладит с системой, в которой это ПО функционирует. Позвольте мне немного разглагольствовать о некоторых пользовательских функциях Android, которые, по моему мнению, все еще позорно недоиспользуются или не используются должным образом нами, разработчиками приложений. Принятие новых тенденций UX является решающим шагом в эволюции платформы, и мы должны коллективно попытаться сделать лучше, чтобы мы могли предложить свежий и более последовательный опыт для наших пользователей в 2020 году.

Масштабируемый UI

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

Сегодня мы имеем Хромбуки с приложениями на Android с изменяемыми размерами окна. Samsung DEX делает то же самое (более конкретно, один пользовательский интерфейс имеет функцию “всплывающее окно”, которая даже не требует внешнего монитора). Даже редактор макетов Android Studio позволяет нам перетащить угол окна предварительного просмотра и проверить, как будет выглядеть макет для любого возможного соотношения сторон. В общем, время для android:screenOrientation=»portrait» и android:resizableActivity=»false» закончилось, так как связывать руки пользователям просто лень. То, что нам нужно, — это UI, которые могут быстро и изящно адаптироваться к любому размеру в любой момент времени, не теряя вид.

Многие библиотеки Jetpack облегчают выполнение этой задачи. Сохранение слоя данных полностью отделенным от вида — самый простой способ сделать это, и ViewModel был специально создан для этой цели. Тщательная обработка событий жизненного цикла может также устранить потенциальные проблемы. Еще одна вещь, которая может нарушить восстановление вида, — это неверный фрагмент backstack, то, что навигационный компонент может абстрагироваться.

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

Учитывая все обстоятельства, поддержка freeform multi-window является более сложной задачей для команды дизайнеров, чем для нас, поскольку хорошо продуманная архитектура имеет побочный эффект правильного сохранения и восстановления состояния экрана после изменения конфигурации.

Обработка оконных вставок

Края дисплея и отверстия для камеры, занимающие ценные области экрана, — это новая проблема, о которой мы действительно не просили… Но опять же, отказ от нее воспринимается как бегство от проблемы, и мы выше этого! Последние API позволяют нам рисовать любой контент под системными панелями, заполняя важные фрагменты информации в зависимости от экранных вставок, прилагая удивительно мало усилий.

Библиотека Insetter от Криса Бэйнса инкапсулирует сложность переопределения метода dispatchApplyWindowInsets () пользовательской корневой группы просмотра или написания нашего собственного OnApplyWindowInsetsListener. Мы не должны забывать, что, поскольку мы не хотим блокировать приложение в портретной ориентации (см. предыдущий раздел), мы должны иметь дело не только с верхней и нижней вставками окна, но и со всеми четырьмя из них.

Давайте также рассмотрим установку атрибута android: windowLayoutInDisplayCutoutMode темы приложения в shortEdges: это распределит пользовательский интерфейс под вырезом дисплея в горизонтальном положении (в отличие от поведения по умолчанию, которое делает это только в портретном и возвращается к буквенной обработке в ландшафтном режиме). Более подробную информацию об этом можно найти здесь.

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

Поддержка темной темы

Если ваш драгоценный брендинг работает только на ослепительно белом фоне, я не буду открывать ваше приложение после захода солнца. Поскольку все больше и больше дизайнов охватывают темную сторону Материала, те, кто отказываются это делать, становятся белыми воронами. То же самое можно сказать и наоборот: некоторые пользователи предпочитают дневную тему (которая, несмотря на всю недавнюю темную шумиху, может быть более удобной для просмотра, особенно при прямом солнечном свете). Решение понятно: пользователям нужен выбор, поэтому мы можем также поддерживать оба предпочтения темы с самого начала разработки.

Особенности современного андроид-приложения, изображение №2

Лучше поздно, чем никогда: ночной режим больше не скрывается в настройках разработчика. Теперь каждый может переключаться между светлыми и темными темами в любое время, но результаты, к сожалению, не те, что они могли бы ожидать (даже в случае Google apps). iOS здесь далеко впереди: один мастер-переключатель влияет на каждое отдельное приложение, в то время как в нашем случае отдельные реализации очень непоследовательны.

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

Фактическая реализация поддержки двойной темы, опять же, не очень сложна для совершенно нового проекта, но может быть довольно большой работой для унаследованного. Квалификаторы ресурсов night и notnight, вероятно, являются лучшими местами для начала, в то время как использование пользовательских атрибутов вместо прямых ссылок на цвета также является чем-то, что следует рассмотреть.

Заставка

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

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

Для загрузки приложений Android требуется некоторое время, прежде чем будет вызван метод onCreate() первого действия. В это время на экране рисуется фон окна темы приложения. Лучший экран-заставка — это просто пользовательский фон для рисования (возможно, список слоев) для темы, который переопределяется в момент создания первого действия (вызывая setTheme () перед super.onCreate ()). Здесь вы можете найти очень простой пример: Activity, Manifest, theme file, splash drawable.

Напоследок

Несмотря на то, что существует еще множество аспектов успешного современного приложения, я думаю, что перечисленные выше 4 подходят для любого Android-проекта (даже для игр, попробуйте меня переубедить!). Кто-то может рассматривать их базовые требования для плавной интеграции опыта, которую предоставляет их приложение с помощью внешнего вида.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Contact

Давайте работать вместе!

Пишите нам и найдем точки соприкосновения, может станем партнерами, а может поможем вам зайти в нашу чудесную нишу

Вы разработчик?

Пишите! Нам постоянно нужны новые кадры, либо можем помочь в продвижении вашего приложения

Новичок?

Поможем быстро войти в нишу, не тратя годы на понимание

Давно в нише?

Рады будем пообщаться как на темы whitehat, так и blackhat тематики ^_^ + всегда есть что обсудить по поводу рекламных сетей

ПИШИ В TELEGRAM!

Contact