2013-11-27 1 views
2

내 응용 프로그램에서 드래그 앤 드롭 이미지 뷰를 원한다 Screen.I의 터치로 터치하면 4 방향으로 드래그 할 수 있지만 Botton으로 드래그하여 오른쪽으로 드래그하고 Imageview 드래그를 사용하지 않기를 원합니다. srceen에서 드래그 앤 드롭 이미지 뷰에 대한안드로이드에서 오른쪽 및 왼쪽 끌기 ImageView를 비활성화하는 방법?

내 코드 :

public class MainActivity extends Activity implements OnTouchListener, 
     OnDragListener { 
    private static final String LOGCAT = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     findViewById(R.id.textView1).setOnTouchListener(this); 
     findViewById(R.id.pinkLayout).setOnDragListener(this); 
     findViewById(R.id.yellowLayout).setOnDragListener(this); 
    } 

    public boolean onTouch(View view, MotionEvent motionEvent) { 
     if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
      DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
      view.startDrag(null, shadowBuilder, view, 0); 
      view.setVisibility(View.INVISIBLE); 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public boolean onDrag(View layoutview, DragEvent dragevent) { 
     int action = dragevent.getAction(); 
     switch (action) { 
     case DragEvent.ACTION_DRAG_STARTED: 
      Log.d(LOGCAT, "Drag event started"); 
      break; 
     case DragEvent.ACTION_DRAG_ENTERED: 
      Log.d(LOGCAT, "Drag event entered into " + layoutview.toString()); 
      break; 
     case DragEvent.ACTION_DRAG_EXITED: 
      Log.d(LOGCAT, "Drag event exited from " + layoutview.toString()); 
      break; 
     case DragEvent.ACTION_DROP: 
      Log.d(LOGCAT, "Dropped"); 
      View view = (View) dragevent.getLocalState(); 
      ViewGroup owner = (ViewGroup) view.getParent(); 
      owner.removeView(view); 
      LinearLayout container = (LinearLayout) layoutview; 
      container.addView(view); 
      view.setVisibility(View.VISIBLE); 
      break; 
     case DragEvent.ACTION_DRAG_ENDED: 
      Log.d(LOGCAT, "Drag ended"); 
      break; 
     default: 
      break; 
     } 
     return true; 
    } 
} 

어떻게 그것을 해결하기 위해? 감사

답변

2

사용이 당신을 도울 수 있습니다 ... 모드의

switch (event.getAction() & MotionEvent.ACTION_MASK) { 
case MotionEvent.ACTION_DOWN: 
savedMatrix.set(matrix); 
start.set(event.getX(), event.getY()); 
Log.d(TAG, "mode=DRAG"); 
mode = DRAG; 
break; 
case MotionEvent.ACTION_UP: 
case MotionEvent.ACTION_POINTER_UP: 
mode = NONE; 
Log.d(TAG, "mode=NONE"); 
break; 
case MotionEvent.ACTION_MOVE: 
if (mode == DRAG) { 
matrix.set(savedMatrix); 
matrix.postTranslate(event.getX() - start.x, 
event.getY() - start.y); 
} 
break; 
} 
+0

thanks.how 유형? –

+1

정적 final int NONE = 0; 정적 최종 int DRAG = 1; int mode = NONE; –

+0

왼쪽과 오른쪽이 작동하지 않습니다. 화면에서 왼쪽과 오른쪽으로 이동하지 못하게하십시오. –

관련 문제