Le framework de glisser-déposer Android vous permet d'ajouter des fonctionnalités interactives de glisser-déposer à votre application. Grâce au glisser-déposer, les utilisateurs peuvent copier ou déplacer du texte, des images, des objets et tout contenu pouvant être représenté par un URI, d'un élément View à un autre au sein d'une application, ou entre des applications en mode multifenêtre.
Figure 1 : Glisser-déposer dans une application
Figure 2. Glisser-déposer d'une application à une autre
Le framework comprend une classe d'événement de déplacement, des écouteurs de déplacement, ainsi que des classes et des méthodes d'assistance. Bien qu'il soit principalement conçu pour permettre le transfert de données, vous pouvez l'utiliser pour d'autres actions d'interface utilisateur. Par exemple, vous pouvez créer une application qui mélange les couleurs lorsque l'utilisateur fait glisser une icône de couleur sur une autre. Toutefois, le reste du document décrit le framework par glisser-déposer dans le contexte du transfert de données.
Présentation
Quelques éléments sont impliqués dans le processus de déplacement.
Faire glisser la source: point de départ du processus de glisser-déposer.
Cible de dépôt: vue pouvant accepter les données de déplacement.
Ombre de déplacement : une ombre déplacée est une représentation des données déplacées. Elle est visible par les utilisateurs.
Événements de déplacement : lorsque l'utilisateur déplace l'ombre de glissement sur la mise en page de l'application, le système envoie des événements de déplacement aux écouteurs d'événements de déplacement et aux méthodes de rappel associés aux objets View dans la mise en page.
Une opération de glisser-déposer démarre lorsque l'utilisateur effectue un geste dans l'interface utilisateur que votre application reconnaît comme un signal pour commencer à faire glisser des données. En réponse, l'application informe le système qu'une opération de glisser-déposer est en cours de démarrage. Le système appelle votre application pour obtenir une ombre glisser et la montrer aux utilisateurs lors du processus de glisser-déposer.
Lorsque l'utilisateur déplace l'ombre de déplacement sur la mise en page de l'application, le système envoie des événements de déplacement aux écouteurs d'événements de déplacement et méthodes de rappel associés aux objets View de la mise en page. Si l'utilisateur libère l'ombre glissante sur une cible de dépôt, le système lui envoie les données. L'opération de glisser-déposer se termine lorsque l'utilisateur libère l'ombre de glissement, que celle-ci se trouve ou non sur une cible de dépôt.
Exemples de glisser-déposer : découvrez différentes manières d'implémenter le glisser-déposer et d'accepter le format rich media.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/26 (UTC)."],[],[],null,["# Enable drag and drop\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to use drag and drop in Compose. \n[Drag and drop →](/develop/ui/compose/touch-input/user-interactions/drag-and-drop) \n\n\u003cbr /\u003e\n\n| **Note:** See the improved method of implementing drag and drop in [Receive rich\n| content](/develop/ui/views/receive-rich-content) for a better UX and improved maintainability of your code.\n\nThe Android drag-and-drop framework lets you add interactive drag-and-drop\ncapabilities to your app. With drag and drop, users can copy or move text,\nimages, objects, and any content that can be represented by a URI, from one\n[`View`](/reference/android/view/View) to another within an app, or between apps\nin [multi-window mode](/develop/ui/views/touch-and-input/drag-drop/multi-window#DragPermissionsMultiWindow).\n\n|--------------------------------------------|-------------------------------------------|\n| | |\n| **Figure 1.** Drag and drop within an app. | **Figure 2.** Drag and drop between apps. |\n\nThe framework includes a drag event class, drag listeners, and helper classes\nand methods. Although primarily designed to enable the transfer of data, you can\nuse the framework for other UI actions. For example, you can create an app that\nmixes colors when the user drags a color icon over another icon. However, the\nrest of document describes the drag-and-drop framework in the context of data\ntransfer.\n\nOverview\n--------\n\nThere are a few elements involved in the drag process.\n\n1. Drag source: The start point view of drag-and-drop process.\n\n2. Drop target: A view that can accept the drag data.\n\n3. [Drag shadow](/develop/ui/views/touch-and-input/drag-drop/concepts#AboutDragShadowBuilder):\n A *drag shadow* is a representation\n of the data being dragged, it's visible to users.\n\n4. [Drag events](/develop/ui/views/touch-and-input/drag-drop/concepts#AboutDragEvent):\n As the user moves the drag shadow over the\n app's layout, the system sends drag events to the drag event listeners and\n callback methods associated with the `View` objects in the layout.\n\nA drag-and-drop operation starts when the user makes a UI gesture that your app\nrecognizes as a signal to start dragging data. In\nresponse, the app notifies the system that a drag-and-drop operation is\nstarting. The system calls back to your\napp to get a *drag shadow*. and show it to users during drag-and-drop process.\n\nAs the user moves the drag shadow over the app's layout, the system sends drag\nevents to the [drag event listeners and callback methods](/develop/ui/views/touch-and-input/drag-drop/concepts#AboutDragListeners)\nassociated with the `View` objects in the layout. If the user releases the drag\nshadow over a drop target, the system sends the data to it. The drag-and-drop\noperation ends when the user releases the drag shadow, whether or not the drag\nshadow is over a drop target.\n\nTopics\n------\n\n[Key Concepts](/develop/ui/views/touch-and-input/drag-drop/concepts)\n: Understand the drag-and-drop process.\n\n[DropHelper for simplified drag and drop](/develop/ui/views/touch-and-input/drag-drop/drophelper)\n: Learn how to implement drag and drop with `DropHelper`.\n\n[Implement drag and drop with views](/develop/ui/views/touch-and-input/drag-drop/view)\n: Alternatively, implement drag and drop with Android views, this allows\n developers to have more control of the details.\n\n[Drag and drop in multi-window mode](/develop/ui/views/touch-and-input/drag-drop/multi-window)\n: Support drag and drop in multi-window mode, allow objects to move across\n different applications.\n\nAdditional resources\n--------------------\n\n- [Codelab for Drag and Drop](/codelabs/codelab-dnd-views) using views\n- [Drag \\& drop for seamless multitasking](https://www.youtube.com/watch?v=WOm76wSfkbU) video\n- [Drag and Drop Samples](https://github.com/android/platform-samples/tree/main/samples/user-interface/draganddrop) which contains various ways to implement drag and drop along with accepting rich media."]]