ViewPager中做圖片縮放遇到:java.lang.IllegalArgumentException: pointerIndex out of range

業務需求,一個viewpager中放一個可縮放的imageview,爆出這個bug.
感謝周剛博主提供解決方案:
來自:http://blog.csdn.net/nnmmbb/article/details/28419779

這裏做個記錄:
解決方法是,方法是:捕獲IllegalArgumentException(非法參數異常)異常 即如

private float spacing(MotionEvent event) { 
        try { 
        x = event.getX(0) - event.getX(1); 
        y = event.getY(0) - event.getY(1); 
    } catch (IllegalArgumentException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
    } 

通過複寫viewpager的onTouchEvent與onInterceptTouchEvent方法,把異常try掉。以下爲源碼:

public class ViewPagerFixed extends android.support.v4.view.ViewPager {  

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

    public ViewPagerFixed(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;  
    }  
}  

替換成fixed後的viewpager

   <com.comveedoctor.widget.ViewPagerFixed
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </com.comveedoctor.widget.ViewPagerFixed>

再次感謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章