펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO
요점은 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;
}
}
그리기 부분은 따로 설명하지 않았다. 새로운 포스트로 소개할듯 싶지만,
그 전에 궁금한부분이 있으면 댓글주기바람
'Android > View' 카테고리의 다른 글
WebView를 이용해 javascript와 통신하기 (1) | 2014.04.09 |
---|---|
나인패치 (9patch) 이미지 만드는 방법 (1) | 2014.04.03 |
레이아웃의 종류와 사용법 (3) | 2014.02.04 |
SurfaceView 구현 / 사용법 (0) | 2013.12.24 |
터치이벤트(TouchEvent)로 비트맵이미지 이동시키기 2 (0) | 2013.12.24 |