Game Development Reference
In-Depth Information
builder.append(touched[i]);
builder.append(", ");
builder.append(id[i]);
builder.append(", ");
builder.append(x[i]);
builder.append(", ");
builder.append(y[i]);
builder.append("\n");
}
textView.setText(builder.toString());
}
public void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
textView =
new
TextView(
this
);
textView.setText("Touch and drag (multiple fingers supported)!");
textView.setOnTouchListener(
this
);
setContentView(textView);
for
(
int
i = 0; i < 10; i++) {
id[i] = -1;
}
updateTextView();
}
public boolean
onTouch(View v, MotionEvent event) {
int
action = event.getAction() & MotionEvent.
ACTION_MASK
;
int
pointerIndex = (event.getAction() & MotionEvent.
ACTION_POINTER_ID_MASK
) >>
MotionEvent.
ACTION_POINTER_ID_SHIFT
;
int
pointerCount = event.getPointerCount();
for
(
int
i = 0; i < 10; i++) {
if
(i >= pointerCount) {
touched[i] =
false
;
id[i] = -1;
continue
;
}
if
(event.getAction() != MotionEvent.
ACTION_MOVE&&
i != pointerIndex) {
// if it's an up/down/cancel/out event, mask the id to see if we should process
it for this touch point
continue
;
}
int
pointerId = event.getPointerId(i);
switch
(action) {
case
MotionEvent.
ACTION_DOWN
:
case
MotionEvent.
ACTION_POINTER_DOWN
:
touched[i] =
true
;
id[i] = pointerId;
x[i] = (
int
) event.getX(i);
y[i] = (
int
) event.getY(i);
break
;