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

Compose を試す
Jetpack Compose は、Android に推奨される UI ツールキットです。Compose でドラッグ&ドロップを使用する方法を学習します。

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

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

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

概要

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

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

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

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

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

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

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

トピック

主な概念
ドラッグ&ドロップのプロセスを理解しましょう。
ドラッグ&ドロップを簡素化する DropHelper
DropHelper を使用してドラッグ&ドロップを実装する方法を学習します。
ビューを使用したドラッグ&ドロップの実装
または、Android ビューを使用したドラッグ&ドロップを実装すると、デベロッパーが詳細をより詳細に制御できるようになります。
マルチウィンドウ モードでのドラッグ&ドロップ
マルチウィンドウ モードでのドラッグ&ドロップをサポートし、異なるアプリ間でオブジェクトを移動できるようにします。

参考情報