안드로이드 zoom in/zoom out lib photoview
Android zoom in/zoom out lib photoview
Viewpager photoview
안드로이드에서 손가락 두개로 멀티 터치를 하여 확대와 축소(Zoom in/ Zoom out)할 수 있는 것을 자주 볼 수 있는데, 이를 제공해주는 아무 유명한 라이브러리가 있다.
PhotoView 라는 라이브러리로 아마도 zoom in/zoom out이라면 다 이 라이브러리를 쓰고 있지 않을까 싶다.
라이브러리 제작자 조차 꾸준한 업데이트를 하고 있어 아주 믿음직 스럽다.
라이브러리 깃허브는 아래와 같다.
라이브러리를 사용하기 위한 준비도 아주 간단하다.
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
위와같이 implementation만 시켜주면 되고 아마도 현재까지 최신버전이 2.3.0일 것이다.
사용법도 아주 간단하다
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/img"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
기존 사용하던 ImgeView를 PhotoView로 사용하면 자동으로 zoom in/zoom out이 된다.
그런데 뷰페이저(ViewPager)에 사용을 하면 확대는 잘되지만, 축소를 할 경우 뷰페이저 스크롤이 작동해 zoom out이 제대로 안되거나 중간에 풀려버리는 현상이 나타난다.
확대는 잘되는데 축소할 때 문제가 생기는 것으로 봐서는 아마도 맞을 것 같다.
열심히 구글링을 해본 결과 다행히 얼추 잘 맞는 코드를 발견할 수 있었다.
따로 커스텀을 안하고 제공해주는 라이브러리를 이용한 방법이다.
photoView.setOnMatrixChangeListener(new OnMatrixChangedListener() {
@Override
public void onMatrixChanged(RectF rect) {
productImg.setAllowParentInterceptOnEdge(productImg.getScale() == 1);
}
});
위와같이 개발할 경우 축소할 때 스크롤이 잘 작동하지 않으며 zoom out도 잘된다.
개발을 하면서도..애초에 누가 이미지 확대를 할까 라는 생각이 들지만, 그래도 기획이 이렇게 나왔으니 개발은 해둔다.
개발자는 기획자를 잘 만나도록 하자.!