profile image

L o a d i n g . . .

반응형

안드로이드 zoom in/zoom out lib photoview

Android zoom in/zoom out lib photoview

Viewpager photoview

 

안드로이드에서 손가락 두개로 멀티 터치를 하여 확대와 축소(Zoom in/ Zoom out)할 수 있는 것을 자주 볼 수 있는데, 이를 제공해주는 아무 유명한 라이브러리가 있다.

PhotoView 라는 라이브러리로 아마도 zoom in/zoom out이라면 다 이 라이브러리를 쓰고 있지 않을까 싶다.

라이브러리 제작자 조차 꾸준한 업데이트를 하고 있어 아주 믿음직 스럽다.

라이브러리 깃허브는 아래와 같다.

github.com/Baseflow/PhotoView

 

Baseflow/PhotoView

Implementation of ImageView for Android that supports zooming, by various touch gestures. - Baseflow/PhotoView

github.com

 

라이브러리를 사용하기 위한 준비도 아주 간단하다.

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도 잘된다.

 

개발을 하면서도..애초에 누가 이미지 확대를 할까 라는 생각이 들지만, 그래도 기획이 이렇게 나왔으니 개발은 해둔다.

개발자는 기획자를 잘 만나도록 하자.!

반응형
복사했습니다!