2013年9月12日木曜日

Androidでドラッグ&ドロップ

 ドラッグ&ドロップを実装しますよー


上のスクショだと→の鳥がもともと表示してある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 ドラッグ & ドロップ - ソフトウェア技術ドキュメントを勝手に翻訳