2016-12-13 18 views
0

Я использую OnDragListener, чтобы перетащить изображение. У меня есть MOTIONEVENT.ACTION_MOVE для реализации функции перемещения изображений. В какой-то момент движения действия я хочу закончить перетаскивание и удалить его тень. Можно ли установить действие в событии перетаскивания? Прежде чем выпустить палец, я хочу вызвать событие drop.Как установить действие в DragEvent

switch(event.getAction()) { 

     case MotionEvent.ACTION_MOVE: 
      //here i want to remove shadow and stop dragging 
      break; 
     case DragEvent.ACTION_DROP:break; 
    } 
+0

Изменение фона соответственно во время выполнения. – Vinodh

+0

Вы используете ** Listview ** или ** Recyclerview **? – Lovekesh

ответ

0

Вы можете реализовать OnDragListener в своем классе/фрагменте.

  class MyDrag implements OnDragListener { 
      Drawable image = getResources().getDrawable(
          R.drawable.shape_droptarget); 

      @Override 
      public boolean onDrag(View v, DragEvent event) { 
        int action = event.getAction(); 
        switch (event.getAction()) { 
        case DragEvent.ACTION_DRAG_STARTED: 
          // Signals the start of a drag and drop operation 
          break; 
        case DragEvent.ACTION_DRAG_ENTERED: 
          //Signals to a View that the drag point has entered the bounding box of the View 
          v.setBackgroundDrawable(image); 
          break; 
        case DragEvent.ACTION_DRAG_EXITED: 
          //Signals that the user has moved the drag shadow out of the bounding box of the View or into a descendant view that can accept the data. 
          v.setBackgroundDrawable(image); 
          break; 
        case DragEvent.ACTION_DROP: 
          // Signals to a View that the user has released the drag shadow, and the drag point is within the bounding box of the View and not within a descendant view that can accept the data. 
          View view = (View) event.getLocalState(); 
          ViewGroup owner = (ViewGroup) view.getParent(); 
          owner.removeView(view); 
          LinearLayout container = (LinearLayout) v; 
          container.addView(view); 
          view.setVisibility(View.VISIBLE); 
          break; 
        case DragEvent.ACTION_DRAG_ENDED: 
          //Signals to a View that the drag and drop operation has concluded. 
          v.setBackgroundDrawable(image); 
        default: 
          break; 
        } 
        return true; 
      } 
    } 

для получения более подробной информации см здесь Drag and Drop

+0

ya я использую такой же. но я также использую case MotionEvent.ACTION_MOVE для отслеживания перемещения. поэтому в определенной точке Action_move case я хочу запустить DragEvent.ACTION_DROP. – android

+0

см. Https://developer.android.com/guide/topics/ui/drag-drop.html – sasikumar