如何获得Drag的X和Y位置?

eri*_*rik 2 android drag-and-drop

我有一个DragListener我想获得视图发布位置的坐标.但是,不管我在哪里砸我得到x = 0y = 0.显然我做错了什么.我如何获得xy发布点?

this.setOnDragListener(new View.OnDragListener() {
    CustomIcon temp;
    CustomIcon dragging;
    Boolean thisOne;

    public boolean onDrag(View v, DragEvent event) {

        for(int i= 0; i<mIcons.size();i++) {
            temp = mIcons.get(i);
            thisOne = temp.getDragging();
            if(thisOne) {
                dragging = temp;
            }
        }
        final int action = event.getAction();
        switch (action) {
            case DragEvent.ACTION_DRAG_STARTED: {

                Toast.makeText(getContext(), "Dragging: "+v+" Width:"+dragging.getWidth()+ " X:"+dragging.getX(),Toast.LENGTH_SHORT).show();        
                dragging.setVisibility(View.INVISIBLE);

            } break;

            case DragEvent.ACTION_DRAG_ENDED: {

                dragging.setVisibility(View.VISIBLE);
                dragging.stopDragging();

                // WHERE MY PROBLEM IS:
                Toast.makeText(getContext(), "Result: "+event.getResult()+" endX:"+(int) event.getX() + " endY:"+event.getY(),Toast.LENGTH_SHORT).show();
                final boolean dropped = event.getResult();

            } break;
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

ian*_*mas 6

我认为你的案子正在倾听错误的事件. http://developer.android.com/reference/android/view/DragEvent.html#getX()

public float getX()

获取拖动点的X坐标.该值仅在事件操作为ACTION_DRAG_LOCATION或ACTION_DROP时有效.

尝试将您的案例更改为DragEvent.ACTION_DROP