요점은 ACTION_DOWN 이벤트 발생 시, 해당 좌표값 저장, 이후 MOVE 발생 시
다른 변수에 해당 값 저장. 둘의 값 비교 == 이동량
이미지를 기존 이미지 위치 - 이동량 하여 새로그려줌
그리고 처음 DOWN때 위치를 저장한 변수에 두번째 값을 넘겨주고
다시 MOVE 이벤트 발생시 값 갱신 하는식으로
MOVE시마다 이전값과 이후값의 차가 이동한 거리이므로 계속 새려그려주면 손가락을 따라 움직이는것처럼 표현된다.
float saveX, saveY;
float moveX, moveY;
float diffX, diffY;
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
saveX = event.getX();
saveY = event.getY();
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
moveX = event.getX();
moveY = event.getY();
diffX = saveX - moveX;
diffY = saveY - moveY;
// SurfaceView나 View에 따라 그리는 방식은 달라짐. SurfaceView같은경우
canvas.canvas = mHolder.lockCanvas();
canvas.drawBitmap(img, 기존이미지X - diffX, 기존이미지Y - diffY, p);
holder.unlockCanvasAndPost(canvas);
//뷰같은경우 locakCanvas(); 대신 invalidate();로 재호출.
saveX = moveX;
saveY = moveY;
}
}
그리기 부분은 따로 설명하지 않았다. 새로운 포스트로 소개할듯 싶지만,
그 전에 궁금한부분이 있으면 댓글주기바람