在 Android 中 PhotoView 是一個(gè)用于查看圖片的庫,支持多點(diǎn)觸摸來放大縮小圖片,應(yīng)用很廣泛。單獨(dú)使用 PhotoView 時(shí)一般沒什么問題,但是我們經(jīng)常會(huì)有這樣的需求,多張圖片能夠切換瀏覽查看,并且每張圖片都要支持放大縮小,這就需要用到 ViewPager 來實(shí)現(xiàn)了,遺憾的是在某些機(jī)型中,多點(diǎn)觸摸放大縮小時(shí)會(huì)出現(xiàn)這樣的異常:
#10903 java.lang.IllegalArgumentException
pointerIndex out of range
android.view.MotionEvent.nativeGetAxisValue(Native Method)
解決方案如下,自定義一個(gè) ViewPager ,捕獲掉觸摸時(shí)的異常:
public class PhotoViewPager extends ViewPager {
public PhotoViewPager(Context context) {
super(context);
}
public PhotoViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
try {
return super.onTouchEvent(ev);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
}