PhotoView源码初始化BUG修复

来源:互联网 发布:房产端口是什么意思 编辑:程序博客网 时间:2024/04/30 18:47

源码地址:https://github.com/chrisbanes/PhotoView/


PhotoView 图片初始化完成之后,单指不停的滑动图片,会发现图片出现放大


此BUG在首次单指滑动的情况下出现,仅仅修改首次单指滑动监听


现在项目已经不在考虑API <14,所以仅仅改动以下监听


在监听之前,判断是否是双指的,如果是双指,则添加OnTouch监听

如果是单指操作,则不监听操作


首次单指不做缩放监听,其余不变


 if(ev.getPointerCount() > 1){

        mDetector.onTouchEvent(ev);

        isSingleTouch = true;

 }else  if(isSingleTouch){
        mDetector.onTouchEvent(ev);
 }


@TargetApi(8)public class FroyoGestureDetector extends EclairGestureDetector {    protected final ScaleGestureDetector mDetector;    private Boolean isSingleTouch = false;    public FroyoGestureDetector(Context context) {        super(context);        ScaleGestureDetector.OnScaleGestureListener mScaleListener = new ScaleGestureDetector.OnScaleGestureListener() {            @Override            public boolean onScale(ScaleGestureDetector detector) {                float scaleFactor = detector.getScaleFactor();                if (Float.isNaN(scaleFactor) || Float.isInfinite(scaleFactor))                    return false;                mListener.onScale(scaleFactor,                        detector.getFocusX(), detector.getFocusY());                return true;            }            @Override            public boolean onScaleBegin(ScaleGestureDetector detector) {                return true;            }            @Override            public void onScaleEnd(ScaleGestureDetector detector) {                // NO-OP            }        };        mDetector = new ScaleGestureDetector(context, mScaleListener);    }    @Override    public boolean isScaling() {        return mDetector.isInProgress();    }    @Override    public boolean onTouchEvent(MotionEvent ev) {        try {            if(ev.getPointerCount() > 1){                isSingleTouch = true;                mDetector.onTouchEvent(ev);            }else  if(isSingleTouch){                mDetector.onTouchEvent(ev);            }            return super.onTouchEvent(ev);        } catch (IllegalArgumentException e) {            // Fix for support lib bug, happening when onDestroy is            return true;        }    }}


0 0
原创粉丝点击