photoview library
우리가 흔히 사진에 줌 기능을 넣을 때 쓰는 라이브러리가 chrisbanes 의 PhotoView다.
https://github.com/chrisbanes/PhotoView
사용을 위해 간편하게 디펜던시에 추가하면 끝
compile 'com.commit451:PhotoView:1.2.4'
사용법도 간편하다
ImageView iv = (ImageView) findViewById(R.id.imageView);
Drawable bitmap = getResources().getDrawable(R.drawable.wallpaper);
iv.setImageDrawable(bitmap);
PhotoViewAttacher mAttacher = new PhotoViewAttacher(mImageView);
ImageView를 가지고 PhotoViewAttacher를 생성하면 된다.
하지만 더 간편한 방법이 있다.
<uk.co.senab.photoview.PhotoView
android:id="@+id/widget_photoview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:layout_gravity="center"/>
이렇게 layout에 미리 생성하면 된다.
그러면 photoview에 대한 id만 찾아서 쓰면된다.
사용법은 아래와 같다.
PhotoView photoView = (PhotoView) view.findViewById(R.id.widget_photoview);
Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(photoView);
Viewpager에 PhotoView를 이용하여 슬라이드 구현을 많이 하게되는데
간혹 java.lang.IllegalArgumentException: pointerIndex out of range 에러가 떨어질 때가 있다.
구글링하여 보니 viewpager와 photoview간의 버그라고 한다.
처리방법은 viewpager를 상속받는 class를 생성한 뒤 예외처리를 하면된다.
방법은 아래와 같다.
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
try {
return super.onTouchEvent(ev);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
}
return false;
}
}
출처: https://akaisun.tistory.com/20?category=622886 [아카이의 개발창고]
'안드로이드 > 개발 TIP' 카테고리의 다른 글
Firebase Auth 와 Realtime Database (0) | 2020.12.09 |
---|---|
모바일 통계 분석 툴 google Analytics에서 Firebase Analytics로... (0) | 2020.12.09 |
Android Issue Tracker 디버깅을 쉽게 !! Fabric crashlytics (0) | 2020.12.09 |
non-zero exit value Multidex Error (0) | 2020.12.09 |
구글맵 사용하기 (0) | 2020.12.09 |
Goolgle map api 설정 (0) | 2020.12.09 |
내 주변의 와이파이 목록 가져오기 (0) | 2020.12.09 |
Decompile - 디컴파일 (0) | 2020.12.09 |