Перетаскивание

Поддержка перетаскивания расширяет возможности пользовательского интерфейса, позволяя перемещать все типы входных данных, поддерживаемых Surface Duo.

В этом примере показано, как реализовать перетаскивание в приложении Android.

sample app UI using drag-and-drop

Значение ключа

Перетаскивание позволяет пользователю без усилий перемещать данные в пределах одного приложения или между разными приложениями на двух экранах.

Типы приложений с поддержкой этого режима:

  • Приложения, содержащие текст или изображения.

См. сведения о возможности перетаскивания в руководстве по использованию двухэкранных устройств.

Ознакомьтесь с нашим примером

Получите пример с возможностью перетаскивания на GitHub.

Общие сведения об исходном коде

В этих фрагментах кода показано, как реализовать возможность перетаскивания.

  1. Свяжите dragListener с целевым представлением.

    View.setOnDragListener();
    
  2. Реализуйте ACTION_DROP в onDrag().

    public boolean onDrag(View v, DragEvent event) {
        switch (event.getAction()) {
            case DragEvent.ACTION_DROP:
                return true;
        }
    }
    
  3. Получите URI из DragEvent.

    DragEvent.getClipData().getItemAt().getUri();
    
  4. Запросите разрешения для этого URI.

    requestDragAndDropPermissions(DragEvent);
    
  5. Создайте запрос к ContentProvider, чтобы получить перетаскиваемый элемент.

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