여러 자녀가있는 ViewGroup이 있다고 가정합니다. 이 ViewGroup에 관해서는 VG라고하는 모든 자식들에 대한 모든 MotionEvent를 관리하도록하고 싶습니다.
1. 대상 (자식)에게 전달하기 전에 모든 이벤트를 가로 챌 수 있습니다.
2. VG는 이벤트를 소비하고 목표 자식에게 이벤트를 추가로 전달할 것인지 결정합니다.
3. DOWN, MOVE, UP, 비교적 독립적 인 것으로 보입니다. VG가 DOWN을 먹을 수는 있지만 MOVE 및 UP을 어린이에게 제공한다는 의미입니다.안드로이드 : ViewGroup, MotionEvent를 가로 채서 대상에 파견하거나 주문형으로 먹는 방법?
SDK 가이드 "Handling UI Event"를 읽었습니다. 이벤트 리스너, 핸들러, ViewGroup.onInterceptTouchEvent (MotionEvent) 및 View.onTouchEvent (MotionEvent)를 알고있었습니다.
여기 SDK 그렇게 말했기 때문에
@Override
public boolean onInterceptTouchEvent (MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
return true;
}
return super.onInterceptTouchEvent(event);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
return true;
}
else {
if (!consumeEvent(event)) {
// TODO: dispatch to target since I didn't want to eat event
//return this.dispatchTouchEvent(event); // infinite loop!!!
}
}
return super.onTouchEvent(event);
}
, 나는 DOWN 이벤트가 발생한 두 가지 방법 위에서 true를 반환해야 할 몇 가지 이벤트를 먹을 수 있으려면, 내 샘플입니다. 그런 다음 MOVE 및 onTouchEvent를 볼 수 있습니다. 그러나, 제 경우에는 아이들에게 사건을 파견하는 방법에 대해서는 잘 모릅니다.
위의 dispatchTouchEvent는 VG 자체가 대상이 될 수 있기 때문에 이해할 수있는 무한 루프를 발생 시켰습니다. 나는 그 순간에 어떤 타겟이 될지 알 수 없다. MotionEvent는 힌트를주지 않았기 때문에 dispatchTouchEvent는 전혀 쓸모가 없었다.
누구든지 도와주세요. 감사.
수 당신은이 상황에서 내게 도움이된다. [내 문제] (http://stackoverflow.com/questions/13309111/programatically-execute-another-touch-event-when-one-touch-event-occures-in-andr) , 또는 [기타 질문] (http://stackoverflow.com/questions/12980156/detect-touch-event-on-a-view-when-dragged-over-from-other-view) –