2013-01-21 3 views
18

私はランチャー2(アンドロイド4.2)で行われたようにドラッグアンドドロップを実装する必要があるカスタムランチャーアプリを開発しようとしています。私のカスタムランチャーアプリケーションでAndroidドラッグアンドドロップフレームワークを使用

だから、hereに説明したように二つのアプローチ

1)Drag and Drop framework
2)実装DragController、DragSourceのようなアンドロイドlauncher2の方法を使用して発見しました。

しかし、私はなぜAndroidのユーザーが独自のアプリケーションで開発したドラッグアンドドロップフレームワークを使用していないのか理解しがたいです。誰でもアプローチの背後にある可能な根拠について簡単に説明できますか?(メモリ/パフォーマンスという意味で)

ありがとうございます。

+1

こんにちは、私はまた、この2つのアプローチを発見しました。それの背後には何らかの理由がありますか? – Muthuraj

答えて

2

Androidランチャーのドラッグ&ドロップは、同じViewGroup内と同じウィンドウ内でオーバーレイ描画として行われます。しかし、アンドロイドのドラッグアンドドロップ方式は、別々のウィンドウタイプを持つ別々のウィンドウを作成します。

リソースとメモリの賢明な標準的なアンドロイドドラッグアンドドロップアプローチはコストがかかる。

パフォーマンスが非常に重要な場合は、私の提案はAndroidランチャーのようになります。

+0

もっと詳しく説明してください。同じViewGroup内と同じウィンドウ内にオーバーレイ描画することができますか?ここではかなり似たような質問をしています:http:// stackoverflow .com/questions/29410875 /ドラッグ・アンド・ドロップ・アイコンからホーム画面へ –

+0

ViewGroup.javaのdispatchDrawメソッドをチェックアウトします。レイアウトでは、dispatchdrawメソッドをオーバーライドして、super.dispatchdraw()を呼び出した後にビューのビットマップを描画します。これはあなたのビットマップを上にレンダリングします。ユーザーのタッチ位置に応じてビットマップ描画位置を変更すると、ドラッグ効果が表示されます。 – manjusg

0

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

0

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

0

あなたのアプリケーションがそれほど複雑でない場合には、WindowManaagerを使用してドラッグアンドドロップを制御する必要があります。これは実装が容易で、位置の変更が容易です。コードを取得Here

3

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

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

+0

あなたはもっとたくさんの "レイヤー"のメカニズムを説明してください。私はここで質問しました:http://stackoverflow.com/questions/29410875/drag-and-dropicon-to-home-screen –

+0

正確には、ランチャー3と同じようにホーム画面(ワークスペース)にアプリケーションを追加する必要があります –

関連する問題