前言

ViewPager展示图片时,对图片操作时出现如下异常

AndroidRuntime: FATAL EXCEPTION: main
AndroidRuntime: Process: com.biumall.image, PID: 17729
AndroidRuntime: java.lang.IllegalArgumentException: pointerIndex out of range
AndroidRuntime:        at android.view.MotionEvent.nativeGetAxisValue(Native Method)
AndroidRuntime:        at android.view.MotionEvent.getX(MotionEvent.java:2205)
AndroidRuntime:        at androidx.viewpager.widget.ViewPager.onInterceptTouchEvent(ViewPager.java:2072)
AndroidRuntime:        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2575)
AndroidRuntime:        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032)
AndroidRuntime:        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2721)
AndroidRuntime:        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032)
AndroidRuntime:        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2721)

这里简单记录一下,多谢

正文

网上有多种方式,比如方式一改源码,方式二自定ViewPager,然后onInterceptTouchEvent()处进行捕获异常。

本文采用的是第二种方式,对ViewPager进行捕获处理,如下:

public class ImageViewPager extends ViewPager {

    public ImageViewPager(Context context) {
        super(context);
    }

    public ImageViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        try {
            return super.onInterceptTouchEvent(ev);
        } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException e) {
            return false;
        }
    }
}

参考文章

  1. java.lang.IllegalArgumentException: pointerIndex out of range
  2. 图片缩放时java.lang.IllegalArgumentException: pointerIndex out of range解决方案
  3. It’s the android ViewPager’s bug

相关文章

暂无评论

none
暂无评论...