Можно ли передать событие касания вновь созданному SurfaceView в проекте Android 4.0.3.
Позвольте мне уточнить.
Я создал собственный OnTouchListener, который обрабатывает входящие события. Событие ACTION_DOWN создает пользовательский экземпляр SurfaceView и добавляет его поверх всех других представлений (это работает нормально). Теперь SurfaceView должен обрабатывать ACTON_MOVE и уведомлять прослушиватель о ACTION_UP. Исходный OnTouchListener следует удалить после добавления SurfaceView.
Я пытался передать TouchEvent с помощью dispatchTouchEvent, но это работает, только если я делаю это постоянно. Можно ли реализовать описанное поведение и как лучше всего это сделать?
С уважением и спасибо.
Вот код:
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);
Вид поверхности:
@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;
}
}