上のスクショだと→の鳥がもともと表示してあるImageView、
中央にあるのがドラッグ中のものです。()
img_bird = (ImageView) findViewById(R.id.img_bird);
img_bird.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
ClipData data = ClipData.newPlainText("Launch", "LaunchIcon");
view.startDrag(data, new View.DragShadowBuilder(view), (Object) view, 0);
return false;
}
});
img_bird.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View view, DragEvent dragEvent) {
switch (dragEvent.getAction()){
case DragEvent.ACTION_DRAG_STARTED :
break;
case DragEvent.ACTION_DRAG_ENDED :
// 終了位置を取得、それによってアレする
float x = dragEvent.getX();
float y = dragEvent.getY();
break;
case DragEvent.ACTION_DRAG_EXITED :
break;
default:
break;
}
return false;
}
});
ImageViewにonTouchListenerをセット、
その中でstartDragを呼び出しています。
タッチしたときにDragが始まって、別にセットされたonDragListenerの
onDragで取得したEventを処理する感じらしいです。
なんでこんな中途半端かというと、動かせた時点で「あ、やりたいこと違うな」とおもって
今から別のコードに書き換えるから。
とりあえず忘備録として。
Android 3.0の新APIで簡単ドラッグ&ドロップ実装
Drag and Dropを用いてViewをドラッグする
6.7 ドラッグ & ドロップ - ソフトウェア技術ドキュメントを勝手に翻訳

