1
두 개의보기가 있습니다. 하위보기와 상위보기 (하위보기는 상위보기의 일부 임); 각 뷰에는 고유 한 onTouchListener가 있습니다. 각보기 자체 onInterceptTouchEvent 처리 할 싶습니다. 지금; 그러나 자식보기의 onTouchListener는 이벤트를 수신하지 않습니다. 그것들은 모두 부모보기의 청취자에게 전송됩니다. 하위 뷰가 자체 이벤트를 수신하도록하려면 어떻게해야합니까?여러 번 모션 이벤트 처리
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
//Log.d(TAG, "onInterceptTouchEvent " + ev);
// handle child events
// note: if you horizontally fling over button its onClick() is not performed
MotionEvent ss = MotionEvent.obtain(ev);
globalVariabels.currentGallery.onTouchEvent(ss);
int bounds[] = {0,0};
globalVariabels.currentGallery.getLocationOnScreen(bounds);
int height = globalVariabels.currentGallery.getHeight() + bounds[0];
int width = globalVariabels.currentGallery.getWidth() + bounds[1];
TouchDelegate delegate = new TouchDelegate(new Rect(0, 0, 2000, 2000), globalVariabels.currentGallery);
setTouchDelegate(delegate);
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN: {
mIgnore = false;
Log.e("ooo", "oo");
Log.e("X:","" + ev.getX());
Log.e("Y:","" + ev.getY());
mNeedToRebase = true;
mInitialX = ev.getX();
mInitialY = ev.getY();
return false ;
}
case MotionEvent.ACTION_MOVE: {
if (!mIgnore) {
Log.e("22", "22");
float deltaX = Math.abs(ev.getX() - mInitialX);
float deltaY = Math.abs(ev.getY() - mInitialY);
mIgnore = deltaX < deltaY;
super.onInterceptTouchEvent(ev);
return !mIgnore;
}
return false;
}
default: {
return super.onInterceptTouchEvent(ev);
}
}
}
... 귀하의 문제는 ...? – pskink
이벤트는 자식을 슬라이드하려고 할 때 부모가 처리합니다. – user2357536
내 대답보기 : http://stackoverflow.com/questions/16979285/how-to-dispatch-touch-events-to-children-after-consuming – pskink