ドラッグ アンド ドロップ

ドラッグ アンド ドロップのサポートにより、Surface Duo でサポートされているさまざまな入力の種類を使用して、優れたユーザー エクスペリエンスを確保することができます。

このサンプルでは、Android のドラッグ アンド ドロップに関するガイダンスに従って、Android アプリでドラッグ アンド ドロップを実装する方法を示します。

sample app UI using drag-and-drop

キー値

ドラッグ アンド ドロップによって、ユーザーはアプリのパーツ間、または 2 つの画面の異なるアプリ間でデータを簡単に共有できます。

このパターンの利点が得られる可能性があるアプリの種類

  • テキストまたは画像を含むアプリ。

詳細については、「デュアル スクリーン デバイスの概要」の「ドラッグ アンド ドロップ」セクションを参照してください。

サンプルを試す

GitHub でドラッグ アンド ドロップのサンプルを取得します。

ソース コードの概要

これらのスニペットは、ドラッグ アンド ドロップの主な手順を示しています。

  1. 削除するビューに dragListener をアタッチします。

    View.setOnDragListener();
    
  2. onDrag() で ACTION_DROP を実装します

    public boolean onDrag(View v, DragEvent event) {
        switch (event.getAction()) {
            case DragEvent.ACTION_DROP:
                return true;
        }
    }
    
  3. DragEvent から URI を取得します

    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)