Multi-pointer case - covered

This commit is contained in:
vakrilov
2016-05-16 13:52:35 +03:00
parent 8d5ef9b15b
commit c22f7ce478

View File

@ -468,7 +468,7 @@ class CustomPanGestureDetector {
} }
private trackStart(currentEvent: android.view.MotionEvent) { private trackStart(currentEvent: android.view.MotionEvent) {
let inital = this.getMotionEventCenter(this.lastEventCache ? this.lastEventCache : currentEvent); let inital = this.getEventCoordinates(this.lastEventCache ? this.lastEventCache : currentEvent);
this.initialX = inital.x; this.initialX = inital.x;
this.initialY = inital.y; this.initialY = inital.y;
this.isTracking = true; this.isTracking = true;
@ -478,7 +478,7 @@ class CustomPanGestureDetector {
} }
private trackChange(currentEvent: android.view.MotionEvent) { private trackChange(currentEvent: android.view.MotionEvent) {
let current = this.getMotionEventCenter(currentEvent); let current = this.getEventCoordinates(currentEvent);
this.deltaX = current.x - this.initialX; this.deltaX = current.x - this.initialX;
this.deltaY = current.y - this.initialY; this.deltaY = current.y - this.initialY;
@ -486,20 +486,30 @@ class CustomPanGestureDetector {
_executeCallback(this.observer, args); _executeCallback(this.observer, args);
} }
private getMotionEventCenter(event: android.view.MotionEvent): { x: number, y: number } { private getEventCoordinates(event: android.view.MotionEvent): { x: number, y: number } {
let count = event.getPointerCount(); var count = event.getPointerCount();
let res = { x: 0, y: 0 }; if (count === 1) {
for (let i = 0; i < count; i++) { return {
res.x += event.getRawX(); x: event.getRawX() / this.density,
res.y += event.getRawY(); y: event.getRawY() / this.density
};
}
else {
var res = { x: 0, y: 0 };
var offX = event.getRawX() - event.getX();
var offY = event.getRawY() - event.getY();
for (var i = 0; i < count; i++) {
res.x += event.getX(i) + offX;
res.y += event.getY(i) + offY;
} }
res.x /= (count * this.density); res.x /= (count * this.density);
res.y /= (count * this.density); res.y /= (count * this.density);
return res; return res;
} }
} }
}
class CustomRotateGestureDetector { class CustomRotateGestureDetector {
private observer: GesturesObserver; private observer: GesturesObserver;