멀티터치줌 기능을 구현하기 위해서 매트릭스를 사용했는데, 매트릭스의 동작 과정과 간단한 개념 정도는 알아야 할 것 같았다.
SURFACEVIEW카메라 위에 IMAGEVIEW를 MATRIX를 이용해서 멀티터치 줌, 무브기능을 구현하는 중에
가정 처음에 터치 이벤트가 들어가게 되면 이미지뷰가 중앙에 위치하던 것이 좌측 위로 옮겨졌다.
우리가 사용해야 되는것은 가급적 중앙에 위치해야 한다. 이 문제를 해결하기 위해서 매트릭스에 대해서 공부를
하게 됐다.
MATRIX는 3차원 배열로 되어 있다.
MSCALE_X 0
MSKEW_X 1
MTRANS_X 2
MSKEW_Y 3
MSCALE_Y 4
MTRANS_Y 5
MPERSP_0 6
MPERSP_1 7
MPERSP_2 8
행렬로 보면
MSCALE_X MSKEW_X MTRANS_X
MSKEW_Y MSCALE_Y MTRANS_Y
MPERSP_0 MPERSP_1 MPERSP_2
MSCALE는 크기 조절... 에 사용되는것으로 보인다 (핀치투줌을 하면서 확인해보니 맞는것같다.)
MSKEW는 이미지의 기울기 (이것은... 확실하게 구분 갈 정도로는 작업해보질 않아서 확실치는...)
MTRANS!! 이친구가 나에겐 가장 중요했는데... x좌표와 y좌표의 변환값을 나타내고, 개인적으로
느끼기엔 실질적으로 화면에서 드래그될 때, canvas상의 절대좌표 비스무리하게 이용할 수 있는 친구였다. (물론 그러라고 만든게 아닐것같기도 하지만...)
로그를 첨부로 올리니 확인해보자!!!
Log.e("Value", "value X : "+value[0]+"/"+value[1]+"/"+value[2]);
Log.e("Value", "value Y : "+value[3]+"/"+value[4]+"/"+value[5]);
Log.e("Value", "value per : "+value[6]+"/"+value[7]+"/"+value[8]);
Value(12788): value X : 1.1628919/0.0/-1147.0
Value(12788): value Y : 0.0/1.1628919/-447.0
Value(12788): value per : 0.0/0.0/1.0
Value(12788): value X : 2.7457745/0.0/-3322.0
Value(12788): value Y : 0.0/2.7457745/-1910.0
Value(12788): value per : 0.0/0.0/1.0
'Android' 카테고리의 다른 글
안드로이드 이미지를 가져와서 원래의 흰 배경을 제거하는 방법 (0) | 2015.04.01 |
---|---|
매트릭스를 통한 이미지뷰 조정 (0) | 2015.04.01 |
액티비티에 ontouch이벤트가 작동을 하지 않는다? (0) | 2015.04.01 |
안드로이드 멀티 터치 줌 기능 구현 (0) | 2015.04.01 |
안드로이드 비트맵 리사이즈 (0) | 2015.04.01 |