Framework tarik lalu lepas Android memungkinkan Anda menambahkan kemampuan tarik lalu lepas
interaktif ke aplikasi. Dengan tarik lalu lepas, pengguna dapat menyalin atau memindahkan teks,
gambar, objek, dan konten apa pun yang dapat direpresentasikan oleh URI, dari satu
View ke
View lainnya dalam aplikasi, atau antar-aplikasi
dalam mode multi-aplikasi.
Gambar 1. Tarik lalu lepas dalam aplikasi.
Gambar 2. Tarik lalu lepas antar-aplikasi.
Framework ini menyertakan class peristiwa tarik, pemroses tarik, serta class dan metode helper. Meskipun terutama dirancang untuk memungkinkan transfer data, Anda dapat
menggunakan framework ini untuk tindakan UI lainnya. Misalnya, Anda dapat membuat aplikasi yang
mencampur warna saat pengguna menarik ikon warna ke atas ikon lain. Namun, bagian lainnya dalam dokumen ini menjelaskan framework tarik lalu lepas dalam konteks transfer
data.
Ringkasan
Ada beberapa elemen yang terlibat dalam proses {i>drag<i}.
Sumber tarik: Tampilan sudut awal proses tarik lalu lepas.
Target lepas: Tampilan yang dapat menerima data tarik.
Bayangan tarik:
Bayangan tarik adalah representasi
data yang sedang ditarik, dan terlihat oleh pengguna.
Peristiwa tarik:
Saat pengguna memindahkan bayangan tarik ke atas
tata letak aplikasi, sistem akan mengirimkan peristiwa tarik ke pemroses peristiwa tarik dan
metode callback yang terkait dengan objek View dalam tata letak.
Operasi tarik lalu lepas dimulai saat pengguna melakukan gestur UI yang dikenali aplikasi Anda
sebagai sinyal untuk mulai menarik data. Sebagai
respons, aplikasi akan memberi tahu sistem bahwa operasi tarik lalu lepas
dimulai. Sistem memanggil kembali ke
aplikasi Anda untuk mendapatkan bayangan tarik dan menampilkannya kepada pengguna selama proses tarik lalu lepas.
Saat pengguna memindahkan bayangan tarik ke atas tata letak aplikasi, sistem akan mengirimkan peristiwa
tarik ke pemroses peristiwa tarik dan metode callback
yang terkait dengan objek View dalam tata letak. Jika pengguna merilis bayangan
tarik di atas target lepas, sistem akan mengirimkan data ke target tersebut. Operasi tarik lalu lepas
berakhir saat pengguna merilis bayangan tarik, terlepas dari apakah bayangan
tarik berada di atas target lepas atau tidak.
Tarik lalu Lepas Contoh yang berisi berbagai cara untuk menerapkan tarik lalu lepas bersama dengan penerimaan multimedia.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-26 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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."]]