프로그래밍

PhotoView 현재의 이미지 상태(줌, 위치)를 저장했다가 다시 적용하는 법

비즈토리 2019. 8. 12. 12:12

PhotoView는 안드로이드에서 핀치 줌을 손쉽게 구현할 수 있는 라이브러리이다.

PhotoView를 사용할 때 이미지의 현재 확대 수준과 포커스 위치를 저장했다가 이미지를 변경한 후 다시 적용해야 할 경우가 있는데, getSuppMatrix와 setSuppMatrix 함수를 통해서 할 수 있다. 코틀린으로 설명한다.

1.현재 상태 저장

var matrix = Matrix() // 현재 상태를 저장할 매트릭스를 생성한다.
photoView.getSuppMatrix(matrix) // 매트릭스를 인자로 넘겨서 상태를 받아온다.

2.이미지 변경

photoView.setImage(bitmap)

3.저장한 상태 적용

photoView.setSuppMatrix(matrix) // 저장했던 상태를 이미지가 변경된 이후에 다시 적용한다.

 

이렇게만 하면 전 이미지에서 확대/포커싱 한 상태가 이미지가 바뀐 후에도 적용된다.

연속적인 이미지를 표시할 때 이미지가 변경되어도 그 전 이미지에서 확대했던 부분을 계속해서 볼 수 있다.