ドラッグ&ドロップを有効にする

Compose をお試しください
Jetpack Compose は、Android で推奨される UI ツールキットです。Compose でドラッグ&ドロップを使用する方法をご覧ください。

Android のドラッグ&ドロップ フレームワークを使用すると、インタラクティブなドラッグ&ドロップ 機能をアプリに追加できます。ドラッグ&ドロップを使用すると、ユーザーは、テキスト、 画像、オブジェクトなど、URI で表現できるすべてのコンテンツを、アプリ内の 1 つの View から別の View に、またはマルチ ウィンドウ モードのときはアプリ間で、ドラッグできます。

アプリ内でドラッグ&ドロップされているテキスト文字列と画像 分割画面モードのアプリ間でドラッグ&ドロップされているテキスト文字列と画像
図 1. アプリ内でのドラッグ&ドロップ
図 2. アプリ間でのドラッグ&ドロップ

このフレームワークには、ドラッグ イベント クラス、ドラッグ リスナー、ヘルパークラス、ヘルパー メソッドが含まれています。このフレームワークは、主にデータ転送を可能にするように設計されていますが、他の UI 操作にも使用できます。たとえば、ユーザーがカラーアイコンを別のアイコンにドラッグしたときに色を混ぜるアプリを作成できます。ただし、このドキュメントでは、データ転送におけるドラッグ&ドロップ フレームワークについて説明します。

概要

ドラッグ プロセスにはいくつかの要素が関わります。

  1. ドラッグ元: ドラッグ&ドロップ プロセスの開始点ビュー。

  2. ドロップ ターゲット: ドラッグデータを処理できるビュー。

  3. ドラッグ シャドウ: ドラッグ シャドウ は、ドラッグされるデータの表現であり、ユーザーに表示されます。

  4. ドラッグ イベント: ユーザーがアプリのレイアウト上にドラッグ シャドウを移動させると、レイアウト内の View オブジェクトに関連付けられたドラッグ イベント リスナーやコールバック メソッドに、ドラッグ イベントが送信されます。

ドラッグ&ドロップ オペレーションは、アプリでデータのドラッグが開始されるシグナルとして認識される UI ジェスチャーをユーザーが行った時点で始まります。これに応じて、アプリはドラッグ&ドロップ オペレーションが開始されることをシステムに通知します。システムはアプリにコールバックしてドラッグ シャドウ を取得し、ドラッグ&ドロップ プロセス中にユーザーに表示します。

ユーザーがアプリのレイアウト上にドラッグ シャドウを移動させると、レイアウト内の View オブジェクトに関連付けられたドラッグ イベント リスナーやコールバック メソッドに、ドラッグ イベントが送信されます。ユーザーがドロップ ターゲット上でドラッグ シャドウを解放すると、そのデータがシステムからターゲットに送信されます。ドラッグ シャドウがドロップ ターゲット上にあるかどうかにかかわらず、ユーザーがドラッグ シャドウを解放すると、ドラッグ&ドロップ オペレーションが終了します。

トピック

主なコンセプト
ドラッグ&ドロップ プロセスについて説明します。
ドラッグ&ドロップを簡単にする DropHelper
DropHelper を使用してドラッグ&ドロップを実装する方法を説明します。
ビューを使用してドラッグ&ドロップを実装する
または、Android ビューを使用してドラッグ&ドロップを実装します。これにより、デベロッパーは詳細をより細かく制御できます。
マルチウィンドウ モードでのドラッグ&ドロップ
マルチウィンドウ モードでのドラッグ&ドロップをサポートし、オブジェクトを異なるアプリケーション間で移動できるようにします。

参考情報