業務需求,一個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>
再次感謝。