Реализация поведения Drag&Drop в Android-приложении на основе API обработки жестов

Обложка

Цитировать

Полный текст

Аннотация

Объектом исследования выступает организация перемещения объектов пользовательского интерфейса (User Interface, UI) в Android-приложениях. Предметом исследования является разработка программного решения для реализации поведения Drag&Drop в мобильных Android-приложениях с использованием современного фреймворка пользовательского интерфейса Jetpack Compose. Целью представленной работы является создание гибкого и интуитивно понятного механизма взаимодействия пользователя с интерфейсом мобильных Android-приложений. Основные результаты исследования включают: 1. Разработку набора Composable функций для управления Drag&Drop состоянием объектов пользовательского интерфейса. 2. Объединение поведения «источника» и «получателя» перемещаемых UI-объектов с возможностью декорирования. 3. Преодоление ограничений штатных инструментов фреймворка Jetpack Compose. 4. Создание механизма обработки пользовательских жестов перемещения. 5. Формирование универсального подхода к реализации интерактивного взаимодействия с элементами интерфейса. Методология основана на применении архитектурного паттерна MVI (Model-View-Intent), который обеспечивает эффективное управление состоянием интерфейса, и использовании объектно-ориентированных паттернов проектирования, в частности, паттерна "декоратор". Методы исследования включают анализ существующих подходов к реализации Drag&Drop, проектирование программного решения, разработку прототипа и его апробацию в рамках мобильного приложения. Научная новизна исследования заключается в разработке инновационного подхода к организации Drag&Drop взаимодействия, который позволяет преодолеть ограничения штатных инструментов фреймворка Jetpack Compose. Предложенное авторами решение характеризуется: - полной изолированностью компонентов Drag&Drop; - возможностью декорирования перемещаемых UI-объектов; - гибкой настройкой поведения источника и приемника объектов интерфейса; - отсутствием жестких связей между компонентами пользовательского интерфейса. Практическая значимость работы заключается в разработке инструментария, который может быть успешно применен в различных мобильных программных проектах, требующих реализации сложных пользовательских взаимодействий. Выводы исследования демонстрируют эффективность предложенного решения в преодолении существующих ограничений Jetpack Compose и открывают новые возможности для создания более динамичных и удобных пользовательских интерфейсов в мобильных приложениях.

Об авторах

Александр Андреевич Петровский

МИРЭА-Российский технологический университет

Email: petrovskiy.a.a@edu.mirea.ru
бакалавр; институт информационных технологий;

Михаил Леонидович Рысин

МИРЭА-Российский технологический университет

Email: rysin@mirea.ru
доцент; кафедра математического обеспечения и стандартизации информационных технологий;

Список литературы

  1. What is Drag and Drop? Drag and Drop explained [Электронный ресурс]. URL: https://goodspeed.studio/glossary/what-is-drag-and-drop-drag-and-drop-explained (дата обращения: 14.03.2025).
  2. Jetpack Compose [Электронный ресурс]. URL: https://developer.android.com/compose (дата обращения: 18.03.2025).
  3. Почему так удобно использовать паттерн MVI в KMM [Электронный ресурс]. URL: https://habr.com/ru/companies/kts/articles/729832/ (дата обращения: 18.03.2025).
  4. Jetpack Compose: Drag and Drop [Электронный ресурс]. URL: https://developer.android.com/develop/ui/compose/touch-input/user-interactions/drag-and-drop (дата обращения: 20.03.2025).
  5. Google IssueTracker: DragAndDropTarget [Электронный ресурс]. URL: https://issuetracker.google.com/issues/324280271 (дата обращения: 20.03.2025).
  6. Мартин Р. Чистая архитектура. Искусство разработки программного обеспечения. – СПб.: Питер, 2024. – 352 с.
  7. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Паттерны объектно-ориентированного программирования. – СПб.: Питер, 2022. – 448 с.
  8. Jetpack Compose: CompositionLocal [Электронный ресурс]. URL: https://developer.android.com/develop/ui/compose/compositionlocal (дата обращения: 05.03.2025).
  9. Jetpack Compose: GraphicsLayer [Электронный ресурс]. URL: https://developer.android.com/develop/ui/compose/graphics/draw/modifiers (дата обращения: 10.03.2025).
  10. Kotlin: Scope-functions [Электронный ресурс]. URL: https://kotlinlang.org/docs/lambdas.html#invoking-a-function-type-instance (дата обращения: 11.03.2025).
  11. Jetpack Compose: Pointer Input [Электронный ресурс]. URL: https://developer.android.com/develop/ui/compose/touch-input/pointer-input (дата обращения: 15.03.2025).

Дополнительные файлы

Доп. файлы
Действие
1. JATS XML

Согласие на обработку персональных данных с помощью сервиса «Яндекс.Метрика»

1. Я (далее – «Пользователь» или «Субъект персональных данных»), осуществляя использование сайта https://journals.rcsi.science/ (далее – «Сайт»), подтверждая свою полную дееспособность даю согласие на обработку персональных данных с использованием средств автоматизации Оператору - федеральному государственному бюджетному учреждению «Российский центр научной информации» (РЦНИ), далее – «Оператор», расположенному по адресу: 119991, г. Москва, Ленинский просп., д.32А, со следующими условиями.

2. Категории обрабатываемых данных: файлы «cookies» (куки-файлы). Файлы «cookie» – это небольшой текстовый файл, который веб-сервер может хранить в браузере Пользователя. Данные файлы веб-сервер загружает на устройство Пользователя при посещении им Сайта. При каждом следующем посещении Пользователем Сайта «cookie» файлы отправляются на Сайт Оператора. Данные файлы позволяют Сайту распознавать устройство Пользователя. Содержимое такого файла может как относиться, так и не относиться к персональным данным, в зависимости от того, содержит ли такой файл персональные данные или содержит обезличенные технические данные.

3. Цель обработки персональных данных: анализ пользовательской активности с помощью сервиса «Яндекс.Метрика».

4. Категории субъектов персональных данных: все Пользователи Сайта, которые дали согласие на обработку файлов «cookie».

5. Способы обработки: сбор, запись, систематизация, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передача (доступ, предоставление), блокирование, удаление, уничтожение персональных данных.

6. Срок обработки и хранения: до получения от Субъекта персональных данных требования о прекращении обработки/отзыва согласия.

7. Способ отзыва: заявление об отзыве в письменном виде путём его направления на адрес электронной почты Оператора: info@rcsi.science или путем письменного обращения по юридическому адресу: 119991, г. Москва, Ленинский просп., д.32А

8. Субъект персональных данных вправе запретить своему оборудованию прием этих данных или ограничить прием этих данных. При отказе от получения таких данных или при ограничении приема данных некоторые функции Сайта могут работать некорректно. Субъект персональных данных обязуется сам настроить свое оборудование таким способом, чтобы оно обеспечивало адекватный его желаниям режим работы и уровень защиты данных файлов «cookie», Оператор не предоставляет технологических и правовых консультаций на темы подобного характера.

9. Порядок уничтожения персональных данных при достижении цели их обработки или при наступлении иных законных оснований определяется Оператором в соответствии с законодательством Российской Федерации.

10. Я согласен/согласна квалифицировать в качестве своей простой электронной подписи под настоящим Согласием и под Политикой обработки персональных данных выполнение мною следующего действия на сайте: https://journals.rcsi.science/ нажатие мною на интерфейсе с текстом: «Сайт использует сервис «Яндекс.Метрика» (который использует файлы «cookie») на элемент с текстом «Принять и продолжить».