业务需求,一个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>
再次感谢。