Drag & DropDrag and drop

Die Unterstützung von Drag & Drop sorgt bei Verwendung der verschiedenen von Surface Duo unterstützten Eingabeformen für ein hervorragendes Benutzererlebnis.Support for drag-and-drop ensures a great user experience using all the different input types supported by the Surface Duo.

Dieses Beispiel veranschaulicht, wie Du Drag & Drop gemäß der Android-Anleitung zu Drag & Drop in deiner Android-App implementieren kannst.This sample demonstrates how to implement drag-and drop in your Android app, following the Android drag and drop guidance.

Beispiel einer App-Benutzeroberfläche mit Drag & Drop

HauptnutzenKey value

Dank Drag & Drop können Benutzer auf zwei Bildschirmen Daten einfach zwischen Teilen einer App oder verschiedenen Apps austauschen.Drag-and-drop lets a user easily share data between parts of an app, or between different apps on two screens.

Typen von Apps, die von diesem Muster profitieren könnenTypes of apps that may benefit from this pattern

  • Apps, die Text oder Bilder enthaltenApps that contain text or images.

Weitere Informationen findest du in der Einführung in Doppelbildschirmgeräte im Abschnitt Drag & Drop.For more info see the drag-and-drop section of Introduction to dual-screen devices.

Ausprobieren unseres BeispielsTry our sample

Hol dir das Drag & Drop-Beispiel auf GitHub:Get the drag-and-drop sample on GitHub:

Java:Java: Drag & Drop-BeispielDrag-and-drop Sample
Kotlin:Kotlin: Drag & Drop-BeispielDrag-and-drop Sample
C# (Xamarin):C# (Xamarin): DemnächstComing soon

Übersicht über den QuellcodeSource code overview

Diese Codeausschnitte zeigen die wichtigsten Schritte für Drag & Drop.These snippets show the key steps for drag-and-drop.

  1. Füge einen dragListener an die Ansicht an, in der das Ablegen erfolgen soll.Attach a dragListener to the view where you want to drop.

    View.setOnDragListener();
    
  2. Implementieren von ACTION_DROP in onDrag()Implement ACTION_DROP in onDrag()

    public boolean onDrag(View v, DragEvent event) {
        switch (event.getAction()) {
            case DragEvent.ACTION_DROP:
                return true;
        }
    }
    
  3. Abrufen des URI aus DragEventGrab URI from DragEvent

    DragEvent.getClipData().getItemAt().getUri();
    
  4. Anfordern einer Berechtigung für diesen URIRequest a permission to this URI

    requestDragAndDropPermissions(DragEvent);
    
  5. Richten einer Abfrage an ContentProvider zum Abrufen des abgelegten ElementsMake a query to ContentProvider to fetch the dropped item

    File Metadata : ContentResolver.query( uri, new String[]{OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE}, null, null, null))
    Actual file :  ContentResolver.openFile(uri)