Как мне получить отпущенную X и Y позицию Drag? - PullRequest
2 голосов
/ 22 марта 2012

У меня есть DragListener, из которых я хотел бы получить координаты места, где открывается вид. Но где бы я ни бросил, я получаю x = 0 и y = 0. Очевидно, я делаю что-то не так. Как мне получить x и y точки релиза?

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;
    }
});

Ответы [ 2 ]

6 голосов
/ 22 марта 2012

Я думаю, что ваше дело слушает не то событие.http://developer.android.com/reference/android/view/DragEvent.html#getX()

public float getX ()

Получает координату X точки перетаскивания.Это значение действительно только в том случае, если действие события ACTION_DRAG_LOCATION или ACTION_DROP.

Попробуйте изменить свой случай на DragEvent.ACTION_DROP

0 голосов
/ 28 августа 2017

У меня была такая проблема.есть 3 важные вещи: 1 - установить прослушиватель перетаскивания в родительском представлении (например, линейное расположение или относительное или ..) 2 - использовать ACTION_DROP для принятия координат x, y, а не ACTION_DRAG_ENDED 3 - установить startDrag () для представления, которое вы хотитеперетащите его на родительский.например, вы можете использовать setonlongclick () и установить starDrag () внутри события longclick

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...