I have single-activity application with two fragments inside. And there is feature to drag and drop items between this fragments (like move the file to folder).
Also my activity need to listen all touch events during drag.
I tried to do it in two ways. First:
final Window window = getWindow();
final Window.Callback localCallback = window.getCallback();
window.setCallback(new CallbackWrapper(localCallback) {
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
Log.d("log_tag", "dispatchTouchEvent: x = " + event.getRawX());
return super.dispatchTouchEvent(event);
}
});
and second (override method in Activity class):
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
Log.d("log_tag", "dispatchTouchEvent: x = " + event.getRawX());
return super.dispatchTouchEvent(event);
}
But every time when the drag started, my callbacks doesn't receive any events.
I tried setOnDragListener on root view, but listener receives only ACTION_DRAG_STARTED and ACTION_DRAG_ENDED DragEvent.
So the questions is how to intercept touch events during drag without View::setOnDragListener ?