Vì vậy, tôi đang phát triển một ứng dụng phải xử lý cảm ứng đa điểm. Về cơ bản tôi muốn liên lạc duy nhất để quay (điều này là không có vấn đề). Và cảm ứng đa điểm để cuộn.Cách mã cho multitouch
Tôi có mã cơ bản, nhưng tôi gặp sự cố khi thay đổi từ đơn sang cảm ứng đa điểm và ngược lại, xảy ra. Về cơ bản, chuyển động sẽ nổi lên vì vị trí trung bình của cảm ứng đa điểm (hai ngón tay) và vị trí tuyệt đối của ngón tay đơn lẻ ở khoảng cách xa. Vì vậy, nếu tôi có hai ngón tay trên màn hình, chúng tạo thành một vị trí trung bình, và sau đó nhấc một ngón tay, nó sẽ giống như một chuyển động nhanh từ vị trí trung bình đó đến vị trí ngón tay duy nhất tuyệt đối. Đây sẽ là phong trào mà tôi không muốn.
Đây là mã của tôi:
@Override
public boolean onTouchEvent(MotionEvent event) {
float xEvent[] = new float[ 2 ];
float yEvent[] = new float[ 2 ];
switch(event.getPointerCount()) {
case 1:
xEvent[ 0 ] = event.getX(0);
yEvent[ 0 ] = event.getY(0);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown(xEvent[ 0 ], yEvent[ 0 ]);
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchRotate(xEvent[ 0 ], yEvent[ 0 ]);
return true;
default: return super.onTouchEvent(event);
}
case 2:
xEvent[ 0 ] = event.getX(0);
yEvent[ 0 ] = event.getY(0);
xEvent[ 1 ] = event.getX(1);
yEvent[ 1 ] = event.getY(1);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown(((xEvent[ 0 ] + xEvent[ 1 ])/2), ((yEvent[ 0 ] + yEvent[ 1 ])/2));
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchSlide(((xEvent[ 0 ] + xEvent[ 1 ])/2), ((yEvent[ 0 ] + yEvent[ 1 ])/2));
return true;
case MotionEvent.ACTION_POINTER_1_UP:
camera.onTouchDown(xEvent[ 1 ], yEvent[ 1 ]);
return true;
case MotionEvent.ACTION_POINTER_2_UP:
camera.onTouchDown(xEvent[ 0 ], yEvent[ 0 ]);
return true;
default: return super.onTouchEvent(event);
}
default: return false;
}
}
Các onTouchDown chức năng của máy ảnh chỉ đặt giá trị đầu tiên của di chuyển cảm ứng. Đó là lý do tại sao tôi cũng sử dụng nó trong phong trào lên để thiết lập một giá trị mới bắt đầu cho các phong trào cảm ứng duy nhất khi đến từ một cảm ứng đa điểm.
Tôi hy vọng ai đó biết vấn đề của tôi là gì và có thể giúp tôi nhiều hơn nữa.
Thanx! Tôi vừa hoàn thành một triển khai hoạt động 80%. Nhưng sau khi đọc liên kết đó, tôi nghĩ rằng tôi có thể làm tốt hơn bằng cách sử dụng mặt nạ và id. – Espen