이미지를 줌, 이동 하는 기능을 구현 중에 첫 번째 화면에서 그림이 위치하는 곳을 지정하거나, 그림의 크기를 지정해야만 했다.
그림은 원래의 사이즈를 만큼을 지정하고, 위치는 화면의 가운데에 위치하게 끔 해야했다. 하지만 잘 되지 않았다.
그림을 가운데에 위치시키기 위해서 이미지뷰의 특성을 wrap_content(원래의 사이즈만큼만 할당하게 했다)로 설정하였더니
가운데 일부분의 화면만 사용할 수 있게 되었다. (자세한 상황은 그림을 첨부해야 겠다.)
또 이미지뷰를 match_parent로 설정해 놓으니까 처음의 그림이 화면을 가득 채우는 상황이 발생했다. 이때는 화면전체를 이동하거나,
줌하는데는 무리가 없었지만 처음에 그림이 화면을 꽉 채워지는 것은 말이 안 되는 상황이다.
구글을 찾아보면서 정말 많은 시도를 해봤지만 잘 안되었다.
앞서 구현한 멀티터치 줌 구현부를 건들이면서 시도를 해보았다.
정말 많이 헤맸다.
이 코드를 사용하기 위해서는 imageview의 scaletype이 matrix였기 때문에
답은 처음 사용하는 매트릭스 값을 건드려야 했다.
매트릭스의 초기위치 값을 설정해줘야 했는데 그게 잘 안되었다.
문제는 내가 이미지의 사이즈를 재는 함수를 선언하는 위치였다.
우선 대략적인 소스는 이렇다.
이 부분을 해결하는데 정말 오래걸렸다.
중요한 것은 매트릭스란 것이 무엇인지, 액티비티 생명주기를 어떻게 잘 이용하는지에 대해서 아는 것이 중요했다.
'Android' 카테고리의 다른 글
이미지뷰에서 bitmap을 추출하는 방법 (0) | 2015.04.01 |
---|---|
안드로이드 이미지를 가져와서 원래의 흰 배경을 제거하는 방법 (0) | 2015.04.01 |
Matrix에 대해서 (0) | 2015.04.01 |
액티비티에 ontouch이벤트가 작동을 하지 않는다? (0) | 2015.04.01 |
안드로이드 멀티 터치 줌 기능 구현 (0) | 2015.04.01 |