// info, please refer to http://developer.android.com/
private boolean manual;
+ private int pointerId;
private int incX, incY;
private PublProp publisherProperties;
*/
public boolean getManual() { return this.manual; }
+ /**
+ * Set the touch pointer ID associated with
+ * this shape.
+ *
+ * @param pointerId
+ * @since 1.0
+ */
+ public void setPointerId(int pointerId) { this.pointerId = pointerId; }
+
+ /**
+ * Get the touch pointer ID associated with
+ * this shape.
+ *
+ * @return Pointer ID.
+ * @since 1.0
+ */
+ public int getPointerId() { return this.pointerId; }
+
/**
* Make triangle path for new instance.
*
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
- myX = (int) event.getX();
- myY = (int) event.getY();
+ case MotionEvent.ACTION_POINTER_DOWN:
+ myX = (int) event.getX(event.getActionIndex());
+ myY = (int) event.getY(event.getActionIndex());
for (PublisherShape shape : shapes) {
if (myX <= shape.getBounds().right
&& myY >= shape.getBounds().top
&& myY <= shape.getBounds().bottom) {
shape.setManual(true);
+ shape.setPointerId(event.getPointerId(event.getActionIndex()));
break;
}
}
return true;
case MotionEvent.ACTION_MOVE:
- myX = (int) event.getX();
- myY = (int) event.getY();
-
for (PublisherShape shape : shapes) {
if (shape.getManual()) {
+ myX = (int) event.getX(event.findPointerIndex(shape.getPointerId()));
+ myY = (int) event.getY(event.findPointerIndex(shape.getPointerId()));
+
shape.setBounds((int) (myX - shape.getShape().getWidth()/2), (int) (myY - shape.getShape().getHeight()/2), (int) (myX + shape.getShape().getWidth()/2), (int) (myY + shape.getShape().getHeight()/2));
- break;
}
}
return true;
case MotionEvent.ACTION_UP:
- myX = (int) event.getX();
- myY = (int) event.getY();
+ case MotionEvent.ACTION_POINTER_UP:
+ myX = (int) event.getX(event.getActionIndex());
+ myY = (int) event.getY(event.getActionIndex());
for (PublisherShape shape : shapes) {
if (myX <= shape.getBounds().right