2011-09-17 5 views
1

나는 지속적으로 줌을 구현하는 방법을 찾고 있습니다. 지속적으로 나는 한 위치로 확대하고 그 위치에서 다른 위치로 확대하고 싶다는 뜻입니다. 브라우저에서와 같이.Android : 지속적으로 줌 기능을 구현하는 방법

지금까지 내 aproach는 한 번만 확대/축소하고 다음 번까지 재설정 할 수 있습니다.

먼저 손가락 사이의 중간 지점과 중간 손가락 사이의 거리를 계산합니다.

public boolean onTouchEvent(MotionEvent event) { 

if(mode == ZOOM) { 
    float newDist = spacing(event); 
    scale = newDist/oldDist; 
    midPoint(midPoint, event); 
    invalidate(); 
} 

invalidate 메소드는 매트릭스에 스케일링을 수행하는 onDraw를 호출합니다.

protected void onDraw(Canvas canvas) { 

    matrix = canvas.getMatrix(); 
    matrix.postScale(scale, scale, midPoint.x, midPoint.y); 
    canvas.setMatrix(matrix); 

    // drawing code 
} 

누적 된 aproach가 있습니까?

답변

0

애니메이션 확대/축소를 원하면 타이머로 애니메이션을 계산해야합니다. 즉, 시간이 지남에 따라 하나의 행렬을 다른 행렬로 변환하고, 뷰를 무효화하고, 결과 행렬을 onDraw에 적용합니다. 이렇게하면 한 줌 레벨에서 다른 줌 레벨로 부드럽게 전환 할 수 있습니다.

+0

아니요 애니메이션을 갖고 싶지 않습니다. 제 질문은 터치 이벤트에 관한 것입니다. 줌은 원터치 제스처로 멈추고 다른 지점에서 다음으로 이동해야하지만 pdf 뷰어와 같은 마지막 줌 레벨로 계속 진행해야합니다. – strangeoptics

관련 문제