如何在模拟器中模拟onDragListener

时间:2014-01-12 07:54:22

标签: android

我实现了像soo ....的onDragListener。

private final class MyDragListener implements OnDragListener {

        @Override
        public boolean onDrag(View v, DragEvent event) {
            switch (event.getAction()) {
            case DragEvent.ACTION_DRAG_STARTED:
                System.out.println("STARTED");
                break;
            case DragEvent.ACTION_DRAG_ENTERED:
                System.out.println("ENTERED");
                break;
            case DragEvent.ACTION_DRAG_EXITED:
                System.out.println("EXITED");
                break;
            case DragEvent.ACTION_DROP:
                System.out.println("DROP");
                myOnClickListener.onClick(v);
                break;
            case DragEvent.ACTION_DRAG_ENDED:
                System.out.println("ENDED");
                break;
            }
            return true;
        }

    }

并将其设置为

for (int i = 0; i < 64; i++) {
    boardLayout.getChildAt(i).setOnDragListener(myDragListener);
}

注意 boardLayout 是8x8 GridLayout

当我点击或拖动或其他任何内容时,模拟器中没有任何反应,任何想法为什么?

当我在onClickListener中制作时,一切都很完美,所以我有理由相信模拟器不知道我试图拖动...

1 个答案:

答案 0 :(得分:1)

您需要在每个孩子中注册onTouchListener()

for (int i = 0; i < 64; i++) {view.getChildAt(i).setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_DOWN) {
                          ClipData data = ClipData.newPlainText("", "");
                          DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
                          view.startDrag(data, shadowBuilder, view, 0);
                          view.setVisibility(View.INVISIBLE);
                          return true;
                        } else {
                        return false;
                        }
                }
            });
}

现在这应该有效。我引自Vogella

您正在打印输出。请参阅输出窗口。 但是在android Log.i(String, String)方法中建议用于调试目的。希望能帮助到你!