2
나는 드래그를 만들고 드롭이 코드를 사용하고 있습니다 :Android. 끌기를 방해하는 방법?
private final class MyTouchListener implements OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
GlobalTouchX = (int) motionEvent.getX();
GlobalTouchY = (int) motionEvent.getY();
shadowBuilder = new MyDragShadowBuilder(view);
view.startDrag(data, shadowBuilder, null, 0);
CurrentDragImage = (ImageView)view;
view.setVisibility(View.GONE);
return true;
} else {
return false;
}
}
}
가 어떻게 드래그 방법을 방해 할 수 드롭을 기다리지 않고, 또는 나는 드롭 이벤트는 프로그래밍 방식으로 호출 할 수 있습니다? 나는 여러 가지 방법을 시도했지만 행운은 없었다. onInterceptTouchEvent (MotionEvent 나)이 뷰 그룹 클래스의 메소드를 오버라이드 (override)하는 것이다 움직임을 차단의
MainRelative.setOnDragListener(new OnDragListener() {
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_LOCATION:
//!!!!!!!!!!!!!!!
//HERE I WANT TO INTERRUPT DRAG EVENT ON SOME CONDITION
//!!!!!!!!!!!!!!!
break;
case DragEvent.ACTION_DROP:
MyOnDrop(v, event, true);
break;
}
return true;}
});
답장을 보내 주셔서 감사합니다. 큰 감사를 드린다! 나는 모든 디자인을 xml 파일에 가지고 있는데, 부모 요소는 RelativeLayout이다. 그래서 당신이 제공하는 방식을 사용한다면이 부모 RelativeLayout을 프로그래밍 방식으로 만들고 onInterceptTouchEvent를 사용해야합니다. 그래서 모든 뷰를 프로그래밍 방식으로 생성해야합니다. 맞습니까? 디자인을 위해 XML 파일을 사용할 방법이 없습니까? 기존 RelativeLayout에 대해 onInterceptTouchEvent를 재정의 할 수있는 방법이 있습니까? –
당신이 할 수있는 일은 커스텀 RelativeLayout을 생성하고 그것을 XML에서 사용하는 것입니다. 예를 들어 RelativeLayoutNew가 새 클래스 인 경우 XML 파일의 RelativeLayout을 대체합니다. 나는 그것이 의미가 있기를 바랍니다. –