안드로이드 개발 질문/답변
(글 수 45,052)
http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2/1747?tag=rbxccnbzd1
위사이트에 예제대로 해서 멀티터치 줌과 이미지 이동을 하였는데요.
확대축소가 무한으로되는데 적당히 되는방법없을까요
http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2/1747?tag=rbxccnbzd1
위사이트에 예제대로 해서 멀티터치 줌과 이미지 이동을 하였는데요.
확대축소가 무한으로되는데 적당히 되는방법없을까요
Matrix의 getValues() 메서드로 매트릭스의 배열값을 얻을 수 있습니다. 인덱스값 Matrix.MSCALE_X 로 x 확대 값 받아서(MSCALE_Y 써도 무방 어차피 가로세로 동일 비율이니)
이렇게 얻은 확대값에 방금 스크롤해서 얻은 상대적인 scale 값을 구해서 두 값을 곱해주면 내가 원하는 비율을 넘어갔는지 알 수 있는데 넘어갔을경우 내가 원하는 비율 만큼으로 맞춰주고 확대 해버리면 됩니다. 축소도 마찬가지구요
코드로 나타내보자면
최소 축소값이 0.8배 최대 확대값이 5배라고 하겠습니다.
그리고 현재 스크롤한 확대비율을 float mCurrentScale; 값이라고 하면
float values[] = new float[9];
matrix.getValues(values);
float scale = values[Matrix.MSCALE_X];
if (scale * mCurrentScale > 5.0f) {
mCurrentScale = 5.0f / scale;
} else if (scale * mCurrentScale < 0.8f) {
mCurrentScale = 0.8f / scale;
}
matrix.postScale(mCurrentScale, mCurrentScale, x중간값, y중간값);