【发布时间】:2012-10-22 16:46:22
【问题描述】:
是否可以在android 4.0.3项目中将触摸事件传递给新创建的SurfaceView。
让我更准确。
我创建了一个处理传入事件的自定义 OnTouchListener。 ACTION_DOWN 事件实例化自定义 SurfaceView 并将其添加到所有其他视图之上(这工作正常)。 SurfaceView 现在应该处理 ACTON_MOVE 并在 ACTION_UP 上通知侦听器。添加 SurfaceView 后,应将原来的 OnTouchListener 移除。
我尝试使用 dispatchTouchEvent 传递 TouchEvent,但这只有在我连续执行时才有效。是否可以实现所描述的行为,最好的方法是什么?
最好的问候,谢谢。
这里有一些代码:
触摸监听器:
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);
表面视图:
@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;
}
}
【问题讨论】:
-
请尽可能在您的问题中包含代码,这样人们更有可能为您提供高质量的答案
标签: android surfaceview touch-event