是否可以将触摸事件传递给android 4.0.3项目中新创建的SurfaceView。
让我更准确。
我创建了一个处理传入事件的自定义OnTouchListener。 ACTION_DOWN事件实例化一个自定义SurfaceView并将其添加到所有其他视图之上(这很好)。 SurfaceView现在应该处理ACTON_MOVE并通知ACTION_UP上的监听器。添加SurfaceView后,应删除原始的OnTouchListener。
我曾尝试使用dispatchTouchEvent传递TouchEvent但这只有在我连续执行时才有效。是否有可能实现所描述的行为,最好的方法是什么?
致以最诚挚的问候,谢谢。
以下是一些代码:
TouchListener:
OnTouchListener onTouchListener = new OnTouchListener() {
public boolean onTouch (View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
surfaceView = new CustomSurfaceView(this.getActivity(), drawer);
surfaceView.setZOrderOnTop(true);
surfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT);
overlayContainer.addView(surfaceView);
btnView.setOnTouchListener(null);
return surfaceView.dispatchTouchEvent(event);;
default:
return false;
}
}
};
btnView.setOnTouchListener(onTouchListener);
SurfaceView:
@Override
public boolean onTouchEvent (MotionEvent event) {
switch (action) {
case MotionEvent.ACTION_MOVE:
x = (int) event.getX();
y = (int) event.getY();
return true;
case MotionEvent.ACTION_UP:
// TODO:notify Listener
return true;
default:
return false;
}
}
答案 0 :(得分:0)
将touchevent传递给新创建的对象。在该对象中,您应该检查表面是否准备好。如果准备好则传递true,这样outter类也可以返回true等。
始终将touchevents传递给阶梯,永远不要让它们来自那里。