18

カスタム ランチャー アプリ (無制限の数のホームページ) を開発しようとしていますが、Launcher2 (android 4.2) で行ったようにドラッグ アンド ドロップを実装する必要があります。

だから私は2つのアプローチを見つけました

1)ドラッグ アンド ドロップ フレームワーク2)ここで
説明されているように、DragController、DragSource の実装のような Android launcher2 の方法を使用します。

しかし、なぜ Android の連中が開発したドラッグ アンド ドロップ フレームワークを独自のアプリケーションで使用しなかったのか、理解に苦しんでいます。彼らのアプローチの背後にある可能性のある理論的根拠について誰でも簡単に説明できますか?(つまり、メモリ/パフォーマンスの観点から)

前もって感謝します。

4

5 に答える 5

3

Android のドラッグ アンド ドロップ フレームワークは、ランチャー アプリで使用されているフレームワークと比較すると非常に基本的です。

Launcher アプリには無数の「レイヤー」があり、ドラッグ アンド ドロップはこれらのレイヤー、つまり DragLayer、ワークスペース、すべてのアプリ ビューなどで発生します。ウィンドウ フラグを使用し、ドラッグがあるときにビューを DragLayer に動的に追加/削除します。進行状況と多数のアクティビティが抗力を監視します。詳細については、特に DragLayer.java および Workspace.java ファイルを参照してください。

于 2014-03-20T05:04:54.473 に答える
2

Android Launcher でのドラッグ アンド ドロップは、同じ ViewGroup 内および同じウィンドウ内のオーバーレイ描画として行われます。しかし、Android のドラッグ アンド ドロップ アプローチでは、完全に別のウィンドウ タイプを持つ別のウィンドウが作成されます。

リソースとメモリに関しては、Android の標準的なドラッグ アンド ドロップ アプローチの方がコストがかかります。

パフォーマンスが非常に重要な場合、私の提案は Android ランチャーの方法に従うことです。それ以外の場合は、簡単でシンプルな標準の Android アプローチを好みます。

于 2014-07-21T12:35:58.713 に答える
0

http://javapapers.com/android/android-drag-and-drop/。これは、アプリケーションに同じものを実装したため、ドラッグ アンド ドロップの最良の例です。注: 11 以上のバージョンのみをサポートします。ドラッグ アンド ドロップ機能はバージョン 10 をサポートしません。代わりに、X と Y の位置を設定して絶対レイアウトでフィールドを移動する必要があります。しかし、絶対レイアウトは完全に非推奨です...

于 2013-12-22T16:16:20.383 に答える
0

ドラッグ アンド ドロップ フレームワークは sice api 11 です。私の推測では、ランチャーの多くのコードはそれ以前に書かれていて、まだ誰もそれをリファクタリングする時間がありませんでした。しかし、API は 2 番目のアプローチと同様に機能します。

于 2013-08-01T10:08:14.780 に答える
0

アプリケーションがそれほど複雑でない場合は、WindowManaager を使用してドラッグ アンド ドロップを制御する必要があります。これは実装が簡単で、位置が変更されたときに作業できます。ここでコードを入手

于 2014-03-12T09:17:05.390 に答える