Обзор элементов для андроид

Обзор Android P

Содержание

Введение

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

Интересно, что бета Android P сейчас доступна не только для Google Pixel, но и для ряда других смартфонов:

  • Sony Xperia XZ2
  • Nokia 7 Plus
  • Xiaomi Mi MIX 2s
  • Vivo X21
  • Oppo R15 Pro
  • Essential Phone
  • OnePlus 6

Я долго не мог понять, почему такая странная и разношерстная выборка моделей и компаний. Оказалось, что за ранний доступ к Android P надо благодарить компанию Qualcomm, во всяком случае, такой информацией со мной поделился один из производителей. И действительно, все указанные выше аппараты работают на Qualcomm Snapdragon 845 или Snapdragon 660.

В тексте я буду рассказывать про все элементы Android P, поэтому не удивляйтесь, если в описании увидите не только нововведения с конференции.

Как обновиться?

Google Pixel 2 официально не продается в России, поэтому для меня стало хорошей новостью, что бету можно протестировать на одном из указанных выше смартфонов. Для этого я обратился в Sony и попросил у них Xperia XZ2. Морально я был готов ко всяким рутам, анлокам и прочим прелестям бета-версий и кастомных прошивок, однако весь процесс обновления происходит в фирменном приложении, вы просто зажимаете кнопку «Alt» и жмете «Обновить». Я уже обрадовался и начал думать, как я похвалю такой легкий процесс обновления, но не тут-то было, приложение отписалось, что мой смартфон нельзя обновить до Android P DP2. Оказалось, что на российской версии XZ2 бета-прошивка недоступна, поэтому пришлось попросить коллег из Sony прошить его в ручном режиме.

Забегая вперед, скажу, что бета еще очень нестабильная и не подойдет для повседневного использования, поэтому не расстраивайтесь, если вы купили XZ2 и тут же планировали обновиться. Тем более что её наличие очень показательно с точки зрения скорости обновлений. Думаю, что прошивка с рабочим Android P выйдет на XZ2 в ближайшее время после анонса финальной версии.

Инструкции по обновлению всех указанных выше моделей находятся на официальном сайте для разработчиков Android. Вот прямая ссылка.

Наэкранные кнопки

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

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

Читайте также:  Как вконтакте скрыть друзей с андроида

Рабочие столы

Визуально встроенный лаунчер довольно простой, сверху находится поисковая строка Google, а далее идут ярлыки установленных приложений. Меню приложений и рабочие столы разделены. Интересно, что сетка иконок в лаунчере автоматически меняется при изменении масштабирования. Делаете интерфейс мельче, и на рабочих столах помещается больше приложений.

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

Звонилка

Я как-то пропустил этот момент, но в одной из последних версий Android в фирменной звонилке появились русские буквы. И это замечательно, ведь теперь не нужно заменять её на exDialer или его аналоги. Тут же отмечу, что при входящих/исходящих звонках на незнакомые номера Google может определять, от кого они. Работает сервис пока так себе, у меня смог определить только немецкое посольство. Плюс мне не нравится, что название места пишется на английском.

Сообщения

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

Регулировка громкости и кнопка включения

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

Строка состояния

Переключатели в строке состояния немного изменились визуально, но по-прежнему имеют ту же функциональность: короткое нажатие включает/выключает интерфейс, долгое отправляет его в настройки. Шторку можно опускать дважды. В первом случае будет пять иконок и уведомления, во втором — все переключатели и ползунок регулировки яркости.

Также на Google I/O обещали улучшить отображение и группировку уведомлений, но я пока не ощутил этого за месяц использования бета-версии.

Настройки экрана

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

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

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

Цифровое здоровье

В Android P появился отдельный раздел «Цифровое здоровье», в нем можно посмотреть, сколько времени вы проводите в том или ином приложении, и сделать соответствующие выводы. К сожалению, на моей прошивке эта функция не работала.

Настройки батареи

В Google уже давно заняты решением проблемы автономной работы и в Android P представили новую технологию энергосбережения. Она отслеживает фоновую активность приложений и автоматически закрывает их. Функция называется Battery Manager.

Также в Google были обеспокоены временем, которое пользователи проводят со смартфоном, в частности, на YouTube, и в сервисе появилась статистика потребления контента. Если вы смотрите YouTube больше определенного времени, то система напомнит вам о том, что не мешало бы сделать перерыв. Правда, в моей прошивке эта опция не работала.

Читайте также:  Sites com apps android

Заключение

Пользоваться бета-версией Android P пока не очень комфортно, периодически у меня вылетали некоторые приложения («Яндекс.Такси» и «Транспорт»), плюс часть анонсированных функций пока не работает или вовсе отсутствует. То есть того же черно-белого режима еще нет, например, это же касается и новых функций в приложении «Фото» и переключателя горизонтальный/вертикальный режим.

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

Источник

Создание сложного списка элементов за 20 минут в Android на базе Groupie

Списки являются основным способом представления различного контента в мобильных приложениях. Будь то социальная сеть, приложение для чтения книг или интернет-магазин, в большинстве таких приложений встречаются списки с разными видами ячеек, разного уровня вложенности. Самый наглядный пример, известный любому Android-разработчику — это приложение Google Play, начальный экран которого является сложным списком с множеством вложенных элементов:

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

В конце у вас получится вот такой список:

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

Подходов к решению такой задачи, множество, но суть решения одна — здесь необходимо использовать RecyclerView с различными типами ячеек, в которых также находится RecyclerView для возможности горизонтального скролла неограниченного количества ячеек. Можно использовать как стандартный подход, в котором необходимо будет создать adapter для каждого из списков, ViewHolders для разного типа ячеек и так далее. А можно использовать более быстрый подход без множества похожего кода на базе библиотеки Groupie

Groupie is a simple, flexible library for complex RecyclerView layouts.

Это простая и в тоже время мощная библиотека для упрощения построения списков на базе RecyclerView, которая заметно ускорит разработку сложных списков как в примерах выше.
Безусловно, все что мы видели можно сделать и без этой библиотеки, тем более совсем недавно в Android появился MergeAdapter (если будет интересно, то в следующей статье напишу и про него). Но так или иначе вы столкнётесь с недостатками стандартного подхода, описанного в той же статье. Поэтому, сегодня мы попробуем новый подход, ускоряющий разработку, избавляющий от написания бойлерплейт-кода и соответсвующий принципам SOLID.

Если кратко, то алгоритм действий выглядит следующим:

  • Создаём проект. Добавляем нужные зависимости.
  • Определяем нужные ячейки. Создаём layouts для отображения UI
  • Соединяем ячейки с адаптером RecyclerView и наслаждаемся результатом.

Создание проекта и добавление библиотек.

Для создания списка как в примере на картинке нам понадобится 4 библиотеки: RecyclerView, CardView, Picasso (для отображения картинок) и Groupie. Добавим всё это в build.gradle(app):

Кроме этого, добавьте в build.gradle в блок android

Читайте также:  Hiper calc pro андроид

Нажмите Sync Now для скачивания необходимых зависимостей.

Создание ячеек для отображения контента

Для отображения списка нам понадобится 3 типа ячеек:

  • Общая ячейка — контейнер для отображения вложенного списка. Обозначена красным прямоугольником.
  • Ячейка внутри основной ячейки для отображения информации о фильме. Такие ячейки выделены синим прямоугольником. Они находятся внутри основной ячейки в RecyclerView c горизонтальным скролом.
  • Квадратная ячейка для отображения обложек игр. Выделена зелёным цветом.

Создание главной ячейки с вложенным RecyclerView

Вначале создадим общую ячейку с вложенным RecyclerView для отображения более мелких ячеек.

Вёрстка такой ячейки будет состоять из CardView с LinearLayout для отображения названия, описания и RecyclerView для отображения внутренних ячеек.

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

Каждая ячейка при использовании Groupie должна быть наследником от абстрактного класса Item. Для этого необходимо переопределить всего 2 метода getLayout() и bind(). То есть для создания ячейки вам нужно указать layout который будет использоваться для отображения UI и дописать логику формирования данных для этой ячейки и всё! Теперь не нужно писать однотипные адаптеры для разных ячеек или комбинировать множество разных типов ячеек в одном адаптере, нарушая принципы SOLID. Ну или выдумывать базовые классы для ячеек, только для того, чтобы можно было переиспользовать один и тот же адаптер. C Groupie для каждой ячейки вам необходимо создать свой класс, и описать в нем UI!

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

То есть для RecyclerView который внутри этой ячейки, необходимо добавить общий GroupAdapter и наполнить его ячейками, которые являются наследниками Item.

Общий контейнер готов, теперь осталось сверстать частные ячейки для каждого типа контента.
Их будет 2:

  • Ячейка для фильма с названием фильма
  • Квадратная ячейка с обложкой игры

Ячейка для фильма

Ячейка для фильма, также должна быть наследником Item и должна реализовать 2 метода:

Верстка достаточно простая и код можно посмотреть в проекте на GitHub.

Квадратная ячейка для отображения обложки игры

Эта ячейка тоже является достаточно простой, поэтому лучше посмотрите код проекта.

Все вместе. Соединяем все ячейки вместе

Для создания списка теперь нужно создать ячейки с контентом и передать их в адаптер RecyclerView. Для создания ячеек были созданы 2 метода getPopularMovies() и getPopularGames() которые возвращают ячейки типа Item.

Каждый из методов возвращает 1 ячейку MainCardContainer — которой передаётся в качестве аргумента список ячеек уже с контентом для вложенного RecyclerView. Например, для ячейки которая отображает список фильмов нужно указать список ячеек MovieItem. Для второй ячейки, которая отображает список игр — мы создадим также метод, который создаст основную общую ячейку и передаст ячейки с играми.

В итоге создание списка теперь будет выглядеть так:

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

Ну вот и всё! Буквально за 20 минут мы создали сложный список для отображения различного типа контента с вложенным горизонтальным списком! Сравните такой подход с традиционным и сделайте выводы сами! Абсолютно точно, такой подход сэкономит вам время на разработку подобных UI — компонентов и избавит от кучи бесполезного кода. А в телеграм-канале @android_school_ru и на сайте вы сможете найти ещё больше современных туториалов на Kotlin и бесплатных мини-курсов для Android-разработчиков.
Исходный код из статьи можно посмотреть на GitHub

Источник

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