Ich nehme an, Sie haben eine Homescreen-ähnliche Anwendung, zumindest eine Ansicht mit Elementen, die Sie ziehen und ablegen möchten. Wie Austyn Mahoney sagt in seinem Kommentar können Sie auf den Android Open Source Homescreen-Code verweisen. Da Drag and Drop jedoch eine einfach zu implementierende Funktion ist, können Sie auch selbst damit umgehen.
Sie müssen Ihre Artikel in z. ein Array. Dann gehen Sie die Ereignistypen durch.
Auf jeder ACTION_DOWN müssen Sie überprüfen, ob ein Element vom Benutzer getroffen wurde. Z.B. Wenn wir Kreise als Elemente haben, müssen wir die aktuellen ACTION_DOWN-Koordinaten erfassen, damit wir prüfen können, ob sie sich innerhalb des Elements befinden und die ID des Elements erhalten, das der Benutzer gemäß den ACTION_DOWN-Koordinaten ziehen möchte.
Unter ACTION_MOVE müssen Sie nur die aktuellen x- und y-Koordinaten an das Element übergeben, um es an der neuen Position neu zu zeichnen.
Nun, das ist nur die Drag-and-Drop-Funktion. Jetzt müssen Sie testen, ob sich der Artikel in einem bestimmten Sektor befindet, den Sie als Bin bezeichnen. Sie definieren also ein Rechteck auf Ihrem Bildschirm. In ACTION_MOVE testest du den Gegenstand in diesem Bereich, das ist alles.
nur einige Beispiel-Code für Drag & Drop:
public boolean onTouchEvent(MotionEvent event){
int itemID = 0;
int X = (int)event.getX();
int Y = (int)event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
for(Items item : dragable_item){
//center coords of the item
int centerX = item.getX() + 25;
int centerY = item.getY() + 25;
//calculate the distance (radius) from touch to item
//get item to drag
if(distance < 20){
itemId = item.getID(); break;
}
}
break;
case MotionEvent.ACTION_MOVE:
if(itemID > 0){
Items[itemID-1].setX(X-25);
Items[itemID-1].setY(X-25);
}
break;
}
}
invalidate(); return true;
}
Wenn Sie wand mehr in den Code zu graben, haben einen Blick auf anddev.org - drag and drop.
Süß .. Ich mag würde wissen, wie das zu tun .. Lass mich etwas recherchieren, ich melde mich bei dir, wenn ich etwas finde. – Shardul
Schön! Ich habe jetzt einen funktionierenden Proof of Concept. Bin an Ihrer Umsetzung interessiert. – Peterdk
Die Launcher-Anwendung in Android, auf die Sie sich beziehen, ist Open Source. Ich denke, Sie können vielleicht von ihrer Implementierung lernen, indem Sie sich den Quellcode anschauen. http://android.git.kernel.org/?p=platform/packages/apps/Launcher.git;a=summary –