ドラッグ アンド ドロップ
ドラッグ アンド ドロップのサポートにより、Surface Duo でサポートされているさまざまな入力の種類を使用して、優れたユーザー エクスペリエンスを確保することができます。
このサンプルでは、Android のドラッグ アンド ドロップに関するガイダンスに従って、Android アプリでドラッグ アンド ドロップを実装する方法を示します。
キー値
ドラッグ アンド ドロップによって、ユーザーはアプリのパーツ間、または 2 つの画面の異なるアプリ間でデータを簡単に共有できます。
このパターンの利点が得られる可能性があるアプリの種類
- テキストまたは画像を含むアプリ。
詳細については、「デュアル スクリーン デバイスの概要」の「ドラッグ アンド ドロップ」セクションを参照してください。
サンプルを試す
GitHub でドラッグ アンド ドロップのサンプルを取得します。
- Kotlin - ドラッグ アンド ドロップのサンプル
- Java - ドラッグ アンド ドロップのサンプル
ソース コードの概要
これらのスニペットは、ドラッグ アンド ドロップの主な手順を示しています。
削除するビューに dragListener をアタッチします。
View.setOnDragListener();
onDrag() で ACTION_DROP を実装します
public boolean onDrag(View v, DragEvent event) { switch (event.getAction()) { case DragEvent.ACTION_DROP: return true; } }
DragEvent から URI を取得します
DragEvent.getClipData().getItemAt().getUri();
この URI へのアクセス許可を要求します
requestDragAndDropPermissions(DragEvent);
削除された項目を取得するために ContentProvider に対するクエリを作成します
File Metadata : ContentResolver.query( uri, new String[]{OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE}, null, null, null)) Actual file : ContentResolver.openFile(uri)