2014-06-10 16 views
6

Sürükleme işlemini başlatmak için view.startDrag() kullanıyorum. Sürüklenirken, olaylar OnDragListener'da alınır. Ayrıca sürüklerken View B son görüntüsünü göstermek için DragShadowBuilder kullanıyorum.İşletim sırasında sürükleme sırasında Android'de View.OnDragListener nasıl iptal edilir?

Bazı harici olaylardan veya işlemlerden dolayı sürüklemenin veya iptal edilmenin veya iptal etmenin bir yolu var mı? örneğin, View A ve View B olmak üzere 2 görünüm vardır, View A üzerinden View B sürüklemiyorum. Sürüklerken, bazı harici olaylar veya işlemler nedeniyle, sürükleme işlemlerini iptal etmek veya OnDragListener'u iptal etmek (parmağımı view B'dan kaldırmadan) iptal etmek istiyorum. DragShadowBuilder için

Kod Parçacığı:

DragShadowBuilder shadowBuilder = new DragShadowBuilder(view) { 
    @Override 
    public void onDrawShadow(Canvas canvas) { 
     canvas.drawBitmap(b, 0, 0, new Paint()); 
     super.onDrawShadow(canvas); 
    } 
}; 
boolean dragSuccess = false; 
dragSuccess = view.startDrag(null, shadowBuilder, view, 0); 

Kod Parçacığı OnDragListener için: Bunun için herhangi bir hile bulamadık

private final class ViewDragListener implements OnDragListener { 
    @Override 
    public boolean onDrag(View v, DragEvent event) { 
     int action = event.getAction(); 
     switch (event.getAction()) { 
      case DragEvent.ACTION_DRAG_STARTED: 
       log("ACTION_DRAG_STARTED"); 
       break; 
      case DragEvent.ACTION_DRAG_ENTERED: 
       log("ACTION_DRAG_ENTERED"); 
       break; 
      case DragEvent.ACTION_DRAG_EXITED: 
       log("ACTION_DRAG_EXITED"); 
      case DragEvent.ACTION_DROP: 
       log("ACTION_DROP"); 
       mX = (int) event.getX(); 
       mY = (int)event.getY(); 
       break; 
      case DragEvent.ACTION_DRAG_ENDED: 
       log("ACTION_DRAG_ENDED"); 
       //Doing some cleanup operations. 
       break; 
      case DragEvent.ACTION_DRAG_LOCATION: 
       log("ACTION_DRAG_LOCATION"); 
       break; 
      default: 
       break; 
     } 
     return true; 
    } 
} 

cevap

0

. ACTION_UP bir hareket etkinliği göndermeyi denedim ve hiçbir şey yapmadı. Kullanıcının parmağı tutulduğu sürece, olay hiyerarşisine müdahale olmaz, öyle görünüyor. Google arama ile ilgili hiçbir şey bulamadım.

Sadece bir global belirledim ve sürükle bitene kadar bekledikten sonra devam ettim.

İlgili konular