Wie man Drag & Drop-Button in Android
Ich das machen will, einen drag-und-drop-button. Ziehen Sie es, wo Sie wollen, es zu tun, und es bleibt dort. Unter code nur Waage die-Taste, nicht seine position ändern.
package com.dynamic;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.dynamic.R;
import com.dynamic.R.layout;
public class dy extends Activity {
int status;
private FrameLayout layout;
ImageView image;
Button b;
LayoutParams params;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frm);
final Button tv=(Button)findViewById(R.id.txt_birth);
tv.setDrawingCacheEnabled(true);
layout = (FrameLayout) findViewById(R.id.frm);
params = new LayoutParams(100,100);
params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
tv.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent me) {
//TODO Auto-generated method stub
if (me.getAction() == MotionEvent.ACTION_DOWN) {
System.out.println("up");
status = 0;
}
if (me.getAction() == MotionEvent.ACTION_UP) {
status = 1;
//Log.i("Drag", "Stopped Dragging");
} else if (me.getAction() == MotionEvent.ACTION_MOVE) {
if (status == 0) {
System.out.println("Dragging");
tv.setPadding((int) me.getRawX(), (int) me.getRawY(), 0, 0);
// b.setPadding(0,50,0,0);
tv.invalidate();
}
}
return false;
}
});
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Arbeite ich auf etwas ähnlich wie diese. Hier ist der OnTouchListener, dass ich mit:
v ist der Ansicht, dass Sie wollen, zu bewegen, in Ihrem Fall würden Sie ersetzen v mit der Schaltfläche. Beachten Sie auch, dass, um diese Arbeit musste ich ein AbsoluteLayout als der übergeordneten Ansicht in meiner xml-Datei. Ich weiß, dass es veraltet ist, aber es schien logisch, dass dann ein RelativeLayout und versuche, die Ränder dynamisch zu bewegen die Ansicht. Die Formel, die ich für die neue x-und y-Positionen versucht es so zu machen, dass die Ansicht ist zentriert auf Ihre finger, während Sie diese verschieben. Aber es ist nicht ganz perfekt, abhängig von der Größe der view wird es noch ein wenig aus der Mitte, aus Ihrem finger.
Ich weiß, diese Frage ist ein wenig alt, aber ich fand es, wenn Sie versuchen zu implementieren drag-and-drop eine Schaltfläche. Mit FoamyGuy die Methode, die ich war in der Lage, per drag-and-drop, um die Arbeit mit einem LinearLayout als die übergeordnete Ansicht, die durch Einstellung der Seitenränder, die Ansicht, in der onTouch-Methode.
HINWEIS: Dies funktioniert nur, wenn die Ansicht, die Sie ziehen, ist die Letzte Ansicht in der Hierarchie. Ansonsten bewegt es sich alle anderen Ansichten in Bezug auf die Ansicht, die Sie ziehen.
Vielleicht die Antworten, die verbessert werden sollten, denn diese Frage ist immer noch sehr prominent, wenn Sie google fot es.
Heute gibt es ein Framework, welches eingesetzt werden kann für drag und drop. Es wurde mit Android 4.
Finden Sie ein nettes tutorial auf der Google developer Seite:
https://developer.android.com/guide/topics/ui/drag-drop.html
probiere meine Lösung, die nicht neu erstellen layutParams und übernimmt auch die Kanten schön:
https://stackoverflow.com/a/18806475/878126