안드로이드 Activity의 onTouchEvent에서 pinch zoom in&out을 구현하는 방법은 다음과 같다.
diff 에 MotionEvent.ACTION_MOVE 이벤트 마다, 실제 pinch gesture에 의해 변환된 차이가 저장된다.
이 값을 이용하여 적절히 활용하면 된다.
실제 거리가 아닌 비율이 필요하다면, 제곱근 연산을 제거할 수 도 있겠다.
@Override
public boolean onTouchEvent(MotionEvent event) {
final int pointerCount = event.getPointerCount();
final int actionMasked = event.getActionMasked();
if (pointerCount == 2 && actionMasked == MotionEvent.ACTION_MOVE) {
final float distX = event.getX(1) - event.getX(0);
final float distY = event.getY(1) - event.getY(0);
final float distance = (float) Math.sqrt(distX * distX + distY * distY);
float diff = 0;
if (mLastDistance == Float.MIN_VALUE) {
mLastDistance = distance;
} else {
diff = distance - mLastDistance;
mLastDistance = distance;
}
return true;
} else if (actionMasked == MotionEvent.ACTION_POINTER_UP) {
mLastDistance = Float.MIN_VALUE;
}
}
diff 에 MotionEvent.ACTION_MOVE 이벤트 마다, 실제 pinch gesture에 의해 변환된 차이가 저장된다.
이 값을 이용하여 적절히 활용하면 된다.
실제 거리가 아닌 비율이 필요하다면, 제곱근 연산을 제거할 수 도 있겠다.
'리눅스 & 안드로이드' 카테고리의 다른 글
Putty 터미널에서 한글 깨짐현상 해결 (0) | 2011.12.09 |
---|---|
이클립스(Eclipse)에서 키워드를 더블클릭 하면 하이라이트 시키는 옵션 (0) | 2011.12.03 |
Git 여러줄로 commit 메시지를 작성하는 방법 (0) | 2011.12.01 |
Optimize ToolBox(15 functions) (0) | 2011.11.21 |
Debug Certificate expired ...... Unknown Android Packaging Problem (0) | 2011.11.08 |