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

Android のドラッグ&ドロップ フレームワークでは、インタラクティブなドラッグ&ドロップ機能をアプリに追加できます。ドラッグ&ドロップにより、ユーザーは URI で表されるテキスト、画像、オブジェクト、コンテンツをコピーまたは移動できます。また、アプリ内の View から別の View へ、またはマルチウィンドウ モードのアプリ間でもコピーまたは移動できます。

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

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

概要

ドラッグ プロセスには、いくつかの要素が含まれます。

  1. ドラッグソース: ドラッグ &ドロップ プロセスの開始点です。

  2. ドロップ ターゲット: ドラッグデータを受け入れるビュー。

  3. ドラッグ シャドウ: ドラッグ シャドウは、ドラッグ中のデータを表現し、ユーザーに表示されます。

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

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

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

トピック

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