是否可以將觸摸事件傳遞給Android 4.0.3項目中新創建的SurfaceView。將TouchEvent傳遞給新創建的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;
}
}
請儘可能在您的問題中包含代碼,這樣人們更有可能爲您提供高質量的答案 – Sheena