Implementation of Drag&Drop behavior in an Android application based on the gesture processing API.

Cover Page

Cite item

Full Text

Abstract

The subject of the study is the organization of the movement of user interface objects (User Interface, UI) in Android applications. The focus of the research is the development of a software solution for implementing Drag&Drop behavior in mobile Android applications using the modern user interface framework Jetpack Compose. The relevance of the presented work is due to the need to create flexible and intuitive mechanisms for user interaction with the interface of mobile Android applications. The main results of the research include: 1. Development of a set of Composable functions for managing the Drag&Drop state of user interface objects. 2. Integration of the behavior of the "source" and "receiver" of the moving UI objects with the possibility of decoration. 3. Overcoming the limitations of the built-in tools of the Jetpack Compose framework. 4. Creation of a mechanism for handling user movement gestures. 5. Formation of a universal approach to implementing interactive interaction with interface elements. The methodology is based on the application of the architectural pattern MVI (Model-View-Intent), which provides effective management of interface state, and the use of object-oriented design patterns, in particular, the "decorator" pattern. Research methods include analyzing existing approaches to implementing Drag&Drop, designing a software solution, developing a prototype, and testing it within a mobile application. The scientific novelty of the research lies in the development of an innovative approach to organizing Drag&Drop interaction, which allows overcoming the limitations of built-in tools of the Jetpack Compose framework. The proposed solution is characterized by: - complete isolation of Drag&Drop components; - possibility of decorating moving UI objects; - flexible configuration of the behavior of the source and receiver of interface objects; - absence of rigid connections between user interface components. The practical significance of the work lies in the development of tools that can be successfully applied in various mobile software projects requiring complex user interactions. The conclusions of the research demonstrate the effectiveness of the proposed solution in overcoming the existing limitations of Jetpack Compose and open new opportunities for creating more dynamic and user-friendly interfaces in mobile applications.

References

  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).

Supplementary files

Supplementary Files
Action
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») на элемент с текстом «Принять и продолжить».