2012-02-29 9 views
2

アプリですべてのタッチイベントを記録しようとしています。 これまでのところ、私はすべての動きとタッチのイベントを記録することができますが、ドラッグアンドドロップを使用すると、ドラッグシャドウは通常の移動イベントをオーバーライドします。 私が知りたいのは、ドラッグシャドウのすべての動きのx座標とy座標を取得する方法があるかどうかです。アンドロイドのドラッグシャドウ位置を取得

答えて

3
@Override 
    public boolean onDrag(View v, DragEvent event) { 
     int action = event.getAction(); 
     ViewGroup owner = (ViewGroup) v.getParent(); 

     switch (event.getAction()) { 
     case DragEvent.ACTION_DRAG_STARTED: 
      break; 
     case DragEvent.ACTION_DRAG_LOCATION: 
      mCurX = (int) event.getX(); 
      mCurY = (int) event.getY(); 
      mText.setText("Cur(X, Y) : " + mCurX + ", " + mCurY); 
      break; 
     case DragEvent.ACTION_DRAG_ENTERED: 
      dragState = "DRAG_ENTERED"; 
      break; 
     case DragEvent.ACTION_DRAG_EXITED: 
      dragState = "DRAG_EXITED"; 
      break; 
     case DragEvent.ACTION_DROP: 
      Log.d(TAG, "ACTION_DRAG_ENDED"); 
      break; 
     case DragEvent.ACTION_DRAG_ENDED: 
      if(dragState == "DRAG_EXITED"){ 
        DropAction();      
      } 
      break; 
     default: 
      break; 
     } 
     return true; 
+0

この回答は疑問です。 ACTION_DRAG_LOCATIONは、ドラッグされたオブジェクトがドロップオブジェクトの境界内にある場合にのみ発生します。 getX()/ getY()は、境界内のドラッグオブジェクトの相対位置を返します。 – GabrielWeis

関連する問題