2013-08-01 78 views
10

我正在製作一個遊戲應用程序,我需要使用ondraglistener來拖放這裏我正在做的一個實現onDraglistener的類。使用onDraglistener拖放動畫回到原始位置,如果沒有丟到目標上

@Override 
public boolean onDrag(View v, DragEvent event) { 
    switch (event.getAction()) { 
    case DragEvent.ACTION_DRAG_STARTED: 
     Log.v("here","drag started"); 
     //no action necessary 
     break; 
    case DragEvent.ACTION_DRAG_ENTERED: 
     //no action necessary 
     Log.v("here","drag enteres"); 
     break; 
    case DragEvent.ACTION_DRAG_LOCATION: 
    int mCurX = (int) event.getX(); 
    int mCurY = (int) event.getY(); 
    Log.v("Cur(X, Y) : " ,"here ::" + mCurX + ", " + mCurY); 
    break; 
    case DragEvent.ACTION_DRAG_EXITED:   
     //no action necessary 

     Log.v("here","drag exits"); 
     break; 
    case DragEvent.ACTION_DROP: 
      .................do what ever when dropped... 
    } 

在這裏我做一個視圖的touchlistener被draged和下降:

public boolean onTouch(View view, MotionEvent motionEvent) { 
    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
     /* 
     * Drag details: we only need default behavior 
     * - clip data could be set to pass data as part of drag 
     * - shadow can be tailored 
     */ 
     view.setTag("option"+index); 
     ClipData data = ClipData.newPlainText("tag", "option"+index); 
     shadowBuilder = new View.DragShadowBuilder(view); 

     //start dragging the item touched 
     view.startDrag(data, shadowBuilder, view, 0); 


     offsetX = (int)view.getX();//(int)motionEvent.getX(); 
     offsetY = (int)view.getY();//motionEvent.getY(); 
     Log.v("here","it is ::" + (int)motionEvent.getX() + " , "+(int)motionEvent.getY()); 

     return false; 
} 

現在它建立其獲得拖動到任意位置拖動手指陰影生成器。現在,我怎麼能讓暗影建造者或者視圖回到原來的位置,而不是降到目標。我嘗試了公共布爾onInterceptTouchEvent(MotionEvent事件),並移動到父視圖,並採取x,y位置和動畫它回到原來的位置,但它取消行動。有沒有什麼辦法讓x,y座標到一個地方,除了目標以外,視圖也會掉落。然後我就可以提前

+0

嘗試: http://stackoverflow.com/questions/20741022/drag-拖放到目標後的原始位置後有陰影/ 20784464#20784464 –

+0

嘿! @karan,找到你的問題的任何解決方案? – Vijju

+0

@ karan421。你有沒有找到解決方案? – Beena

回答

-3

的positions.Thanks之間設置動畫它您需要處理的下降:

switch (event.getAction()) { 
    case DragEvent.ACTION_DRAG_ENTERED: 
    //break here was removed in purpose so you can see the shadow and the element is still at its initial place. 
    case DragEvent.ACTION_DROP: 
      View view = (View) event.getLocalState(); 
     if (prioritiesList.contains(v)) { 

      ViewGroup viewgroup = (ViewGroup) view.getParent(); 
      viewgroup.removeView(view); 

      LinearLayout containView = (LinearLayout) v; 
      containView.addView(view); 
      view.setVisibility(View.VISIBLE); 
        break; 
} 
相關問題