...
🤳 Блог Android новостей, посвященный советам экспертов, новостям, обзорам, телефонам Android, приложениям, инструкциям, планшетам и мобильным телефонам.

Изучение фрагментов Android P: создание интерактивных и динамических фрагментов

514

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

На конференции I / O в этом году Google анонсировал Android-фрагменты – новую функцию, которая поможет пользователям поддерживать интерес к вашему приложению. Срезы Android появляются там, где многие пользователи Android проводят много времени, в том числе в результатах поиска Google, поэтому они являются эффективным способом заставить пользователей возвращаться к вашему приложению.

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

Что такое слайсы Android?

Android-фрагменты – это фрагменты содержимого вашего приложения, отображаемые вне вашего приложения. Они будут дебютировать в поиске Google, и в будущем Google планирует добавить поддержку слайсов в другие приложения и области операционной системы.

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

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

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

Android Slices также являются частью Android Jetpack, поэтому они поддерживаются всем, начиная с Android 4.4. Если вы добавите фрагменты в свой проект, по данным Google, эти фрагменты могут охватить 95 процентов всех пользователей Android!

Создайте свой первый кусочек

Срезы могут выполнять ряд действий, но давайте пока будем простыми и создадим срез, который запускает MainActivity нашего приложения .

Начните с создания нового проекта с использованием последней канареечной сборки Android Studio 3.2, затем откройте файл build.gradle своего проекта и добавьте зависимости androidx.slice. Чтобы сохранить последовательность, я также использую пространство имен AndroidX для других зависимостей.

dependencies {
   implementation fileTree(dir: 'libs', include: ['.jar'])
   implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
   implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
   implementation 'androidx.slice:slice-core:1.0.0-alpha2'
   implementation 'androidx.slice:slice-builders:1.0.0-alpha2'
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'androidx.test:runner:1.1.0-alpha1'
   androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha1'
}

Во время написания, процесс создания слайса иногда заставлял Android Studio автоматически добавлять повторяющиеся зависимости ядра слайса и построителей слайсов. Если вы видите странные сообщения об ошибках, проверьте файл build.gradle, чтобы убедиться, что этого не произошло.

Создайте своего поставщика срезов

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

Чтобы создать поставщика срезов:

  • Удерживая нажатой клавишу Control, щелкните пакет «src» вашего проекта и выберите «Создать…»> «Другое»> «Поставщик фрагментов».
  • Назовите этого поставщика фрагментов «MySliceProvider».
  • Нажмите «Готово».

Каждый раз, когда ведущему приложению требуется отобразить фрагмент, оно отправляет вашему провайдеру фрагмента запрос привязки с унифицированным идентификатором ресурса (URI) фрагмента, который он хочет отобразить. Затем провайдер среза вызовет onCreateSliceProvider() и построит срез, вызвав метод onBindSlice (). Наконец, метод onBindSlice () вернет срез и передаст его ведущему приложению.

Если вы откроете свой класс MySliceProvider, автоматически сгенерированный код предоставит обзор этого процесса:

import

Поскольку SliceProvider является поставщиком контента, он должен быть объявлен в Manifest вашего проекта. Когда вы создаете поставщика слайсов с помощью Android Studio, перейдя в New…> Other> Slice Provider, это объявление автоматически добавляется в ваш манифест:

</activity>

Создание интерактивных фрагментов Android: создание действия фрагмента

Если этот слайс Android будет запускать MainActivity нашего приложения, нам нужно внести некоторые изменения в провайдер слайса:

Определить SliceAction

Вы делаете срез интерактивным, создавая одно или несколько действий среза. SliceAction может состоять из заголовка, пиктограммы и PendingIntent, который обрабатывает взаимодействие с пользователем в ваших ломтиках.

Я собираюсь определить одно действие среза для запуска MainActivity нашего приложения .

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

Определите содержимое среза

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

Чтобы создать пользовательский интерфейс среза, вам необходимо реализовать ListBuilder, указать тип строк, которые вы хотите отобразить, и определить содержимое для каждой строки.

А пока давайте будем простыми и воспользуемся базовым RowBuilder, который поддерживает все следующие типы контента:

  • Заглавный элемент. Он появляется в начале строки. Элемент заголовка может быть меткой времени, изображением или SliceAction.
  • Заголовок. Это одна строка текста, отформатированная как заголовок.
  • Подзаголовок. Это одна строка текста, отформатированная как обычный текст.
  • Начальный элемент. Это может быть значок, отметка времени или SliceAction.
  • Конечные элементы. Это элементы, которые появляются в конце каждой строки. Вы можете указать несколько конечных элементов для каждой строки, но в зависимости от доступного пространства некоторые из этих конечных элементов могут не отображаться на определенных устройствах. Ваш начальный и конечный элементы могут быть меткой времени, значком или SliceAction.
  • Первичное действие. Это действие, которое запускается всякий раз, когда пользователь нажимает строку.

Чтобы не усложнять задачу, я собираюсь создать одну строку, состоящую из заголовка «Launch MainActivity».

import

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

Тестирование фрагментов Android с помощью Slice Viewer

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

Чтобы установить Slice Viewer:

  • Убедитесь, что ваше устройство Android подключено к машине для разработки или что ваше виртуальное устройство Android (AVD) запущено и работает.
  • Загрузите приложение Slice Viewer.
  • Переместите APK-файл Slice Viewer в папку Android / sdk / platform-tools.
  • Откройте командную строку (Windows) или терминал (Mac).
  • Измените каталог («cd»), чтобы окно указывало на вашу папку Android / sdk / platform-tools, например:

cd / Users / jessicathornsby / Library / Android / SDK / платформенные инструменты

  • Установите APK-файл Slice Viewer на свое устройство Android или AVD, введя следующую команду в командной строке или окне терминала и нажав клавишу Enter:

./adb install -r -t slice-viewer.apk

Затем вам нужно создать конфигурацию запуска среза и передать ей уникальный URI вашего среза:

  • Выберите «Выполнить»> «Изменить конфигурации…» на панели инструментов Android Studio.
  • Щелкните маленький значок «+» и выберите «Android-приложение».

Изучение фрагментов Android P: создание интерактивных и динамических фрагментов

  • Введите «срез» в поле «Имя».
  • Откройте раскрывающийся список “Модуль” и выберите “приложение”.
  • Откройте раскрывающийся список «Запуск» и выберите «URL».
  • Затем введите URL-адрес фрагмента в формате slice-content: // имя-пакета / URL-адрес фрагмента. Например, URL-адрес моего фрагмента:

срез-контент: //com.jessicathornsby.launchslice/mainActivity

  • Нажмите ОК.
  • Выберите «Выполнить»> «Выполнить фрагмент»  на панели инструментов Android Studio и выберите свое устройство.

Теперь это приложение будет установлено на вашем Android-устройстве. Slice Viewer запросит разрешение на доступ к фрагментам вашего приложения; нажмите Разрешить, и ваш фрагмент должен появиться на экране.

Изучение фрагментов Android P: создание интерактивных и динамических фрагментов

Нажмите кнопку «Launch MainActivity» фрагмента, и фрагмент должен отреагировать, запустив MainActivity вашего приложения .

Скачайте готовое приложение с GitHub.

Создание динамического среза

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

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

Чтобы создать этот фрагмент, либо создайте новый проект, либо обновите существующее приложение. Если вы все же решите создать новый проект, вам нужно будет повторить следующую настройку:

  • Создайте класс MySliceProvider, щелкнув, удерживая клавишу Control, папку «src» вашего проекта и выбрав New…> Other> Slice Provider.
  • Добавьте в файл build.gradle следующие зависимости :
dependencies {
   implementation fileTree(dir: 'libs', include: ['.jar'])
   implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
   implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
   implementation 'androidx.annotation:annotation:1.0.0-alpha1'
   implementation 'androidx.slice:slice-core:1.0.0-alpha2'
   implementation 'androidx.slice:slice-builders:1.0.0-alpha2'
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'androidx.test:runner:1.1.0-alpha2'
   androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha2'
}

Создать макет приложения

Начните с создания пользовательского интерфейса приложения.

Откройте файл activity_main.xml своего проекта и создайте кнопки «Увеличить» и «Уменьшить», а также TextView, чтобы в конечном итоге отобразить динамическое значение приложения:

<?xml version="1.0" encoding="utf-8"?>

Нам также нужно создать строковый ресурс, который будет отображать наше динамическое значение:

<resources>

Создание векторов с помощью Vector Asset Studio

В срезе я собираюсь отобразить стрелки «Вверх» и «Вниз», которые изменяют значение приложения при нажатии:

  • Удерживая нажатой клавишу Control, щелкните каталог «res» вашего проекта и выберите «Создать»> «Векторный объект».
  • Щелкните маленький значок «Картинки».
  • Выберите ресурс «Стрелка вверх» и нажмите «ОК».
  • Дайте своему активу имя «ic_count_up» и нажмите «Далее».
  • Нажмите Готово.

Повторите вышеуказанные шаги, но на этот раз выберите значок «Стрелка вниз» и дайте ему имя «ic_count_down».

Обновление среза во время выполнения

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

Чтобы проинформировать срез об изменениях, нашему приложению необходимо вызвать context.getResolver.notifyChange (Uri, null), который запустит метод onBindSlice () и заставит срез перестроить с новым содержимым.

import

Создание среза с множественным выбором

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

  • Создайте несколько SliceActions. Нам нужно определить отдельные действия среза, когда пользователь увеличивает значение, а когда он уменьшает значение.
  • Обработка пользовательского ввода. Нам также потребуется определить PendingIntent для регистрации событий изменения значения нашего приложения. На следующем шаге мы создадим BroadcastReceiver для обработки этих PendingIntents.
  • Поставьте некоторые конечные предметы. Вы можете отображать временные метки, значки и действия среза в конце каждой строки. Я собираюсь использовать векторы «Вверх» и «Вниз» в качестве конечных элементов моего среза.

Вот готовый класс MySliceProvider :

import

Обработка намерений среза

Наконец, нам нужно создать широковещательный приемник для получения каждого нового значения и информирования провайдера среза всякий раз, когда ему нужно перестроить срез:

  • Удерживая нажатой клавишу Control, щелкните папку «src» вашего проекта и выберите «Создать»> «Другое»> «Приемник трансляции».
  • Введите имя «MyBroadcastReceiver» и нажмите «Готово».
  • Откройте файл MyBroadcastReceiver и добавьте следующее:
import

Испытайте свой динамический фрагмент

Чтобы протестировать этот фрагмент, вам необходимо создать конфигурацию второго запуска, которая передает уникальный URI этого конкретного фрагмента:

  • Выберите «Выполнить»> «Изменить конфигурации» на панели инструментов Android Studio.
  • Щелкните маленький значок «+» и выберите «Android-приложение».
  • Дайте этой конфигурации имя.
  • Откройте раскрывающееся меню «Запуск» и выберите «URL».
  • Введите URI для запуска этого фрагмента. Я использую следующее:

срез-контент: //com.jessicathornsby.dynamicslice/clickCount

  • Нажмите «ОК».
  • Выберите «Выполнить»> «Выполнить фрагмент» на панели инструментов Android Studio.

Теперь ваш фрагмент появится в эмуляторе или подключенном устройстве Android.

Изучение фрагментов Android P: создание интерактивных и динамических фрагментов

Чтобы проверить этот фрагмент, коснитесь его стрелок «Вверх» и «Вниз» и переключитесь на MainActivity вашего приложения. Нажмите любую из кнопок приложения «Увеличить» или «Уменьшить», и он должен начать отсчет с значения, созданного вами в срезе, а не с нуля. Если вы снова переключитесь на срез, вы должны обнаружить, что значение обновилось автоматически.

Загрузите полный проект с GitHub.

Подведение итогов

Теперь вы знаете, как реализовать эту новую функцию. Будете ли вы использовать слайсы в своих собственных проектах Android? Дайте нам знать в комментариях ниже!

Источник записи: https://www.androidauthority.com

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