Реализация поведения 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

Согласие на обработку персональных данных

 

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