前言

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

  1. AndroidRuntime: FATAL EXCEPTION: main
  2. AndroidRuntime: Process: com.biumall.image, PID: 17729
  3. AndroidRuntime: java.lang.IllegalArgumentException: pointerIndex out of range
  4. AndroidRuntime: at android.view.MotionEvent.nativeGetAxisValue(Native Method)
  5. AndroidRuntime: at android.view.MotionEvent.getX(MotionEvent.java:2205)
  6. AndroidRuntime: at androidx.viewpager.widget.ViewPager.onInterceptTouchEvent(ViewPager.java:2072)
  7. AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2575)
  8. AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032)
  9. AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2721)
  10. AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032)
  11. AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2721)
复制

这里简单记录一下,多谢

正文

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

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

  1. public class ImageViewPager extends ViewPager {
  2. public ImageViewPager(Context context) {
  3. super(context);
  4. }
  5. public ImageViewPager(Context context, AttributeSet attrs) {
  6. super(context, attrs);
  7. }
  8. @Override
  9. public boolean onInterceptTouchEvent(MotionEvent ev) {
  10. try {
  11. return super.onInterceptTouchEvent(ev);
  12. } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException e) {
  13. return false;
  14. }
  15. }
  16. }
复制

参考文章

  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
暂无评论...