Add android.touch module to support touch interception via SDLSurface #3259
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new module,
android.touch, to thepythonforandroidrecipes, providing utilities for intercepting touch events on the Android SDL surface from Python code. The main additions are a bridge class for hooking into the Android touch interception mechanism and a convenience API for registering/unregistering global touch listeners with hit-testing against Kivy widgets.Touch interception API
OnInterceptTouchListener, a Python bridge for the Android Java interfaceSDLSurface.OnInterceptTouchListener, allowing Python callables to intercept and optionally consume touch events before they reach the normal event dispatch pipeline.TouchListener, a helper class to register/unregister a global touch intercept listener on the app's SDL surface, with logic to hit-test against a specified Kivytarget_widgetand consume touches only when appropriate.Hit-testing and event handling
TouchListener._pickto recursively select the deepest widget under the touch point, using Kivy's widget tree and coordinate transformations.TouchListenerconverts Android touch coordinates to Kivy's coordinate system and intercepts touches only when the target widget is hit and no other widget is found under the touch.API documentation and usage notes