gesture-imageview icon indicating copy to clipboard operation
gesture-imageview copied to clipboard

Solve gesture-imageview in viewpage can't Drag

Open canven opened this issue 9 years ago • 0 comments

Don't know good place where i should post this method, Holp to help some people.

In GestureImageViewTouchListener.java file, locate Ontouch methed.

@Override public boolean onTouch(View v, MotionEvent event) {

    Log.i("", "-----onTouch-----" + inZoom);

    if (!inZoom) {

        if (!tapDetector.onTouchEvent(event)) {
            if (event.getPointerCount() == 1 && flingDetector.onTouchEvent(event)) {
                startFling();
            }

            if (event.getAction() == MotionEvent.ACTION_UP) {
                handleUp();
            } else if (event.getAction() == MotionEvent.ACTION_DOWN) {
                stopAnimations();

                last.x = event.getX();
                last.y = event.getY();

                if (boundaryLeft != last.x) {
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                }

                if (imageListener != null) {
                    imageListener.onTouch(last.x, last.y);
                }

                touched = true;
            } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
                if (event.getPointerCount() > 1) {
                    multiTouch = true;
                    if (initialDistance > 0) {

                        pinchVector.set(event);
                        pinchVector.calculateLength();

                        float distance = pinchVector.length;

                        if (initialDistance != distance) {

                            float newScale = (distance / initialDistance) * lastScale;

                            if (newScale <= maxScale) {
                                scaleVector.length *= newScale;

                                scaleVector.calculateEndPoint();

                                scaleVector.length /= newScale;

                                float newX = scaleVector.end.x;
                                float newY = scaleVector.end.y;

                                handleScale(newScale, newX, newY);
                            }
                        }
                    } else {
                        initialDistance = MathUtils.distance(event);

                        MathUtils.midpoint(event, midpoint);

                        scaleVector.setStart(midpoint);
                        scaleVector.setEnd(next);

                        scaleVector.calculateLength();
                        scaleVector.calculateAngle();

                        scaleVector.length /= lastScale;
                    }
                } else {


                    if (!touched) {
                        touched = true;
                        last.x = event.getX();
                        last.y = event.getY();
                        next.x = image.getImageX();
                        next.y = image.getImageY();
                    } else if (!multiTouch) {

                        Log.i("", "x:" + next.x + " multiTouch:" + boundaryRight
                                + "  " + boundaryLeft);
                        if ((boundaryRight / 2) == next.x) { // nomal model
                            v.getParent().requestDisallowInterceptTouchEvent(false);
                        } else {
                            if (next.x > 0 && boundaryRight > 0 && boundaryLeft > 0) {   //double model

                                v.getParent().requestDisallowInterceptTouchEvent(  //disable parant event
                                        false);
                            } else if (next.x != boundaryLeft && next.x < 0) {    //right boundary  on srceen
                                v.getParent()
                                        .requestDisallowInterceptTouchEvent(true);
                            } else if (next.x != boundaryRight && next.x > 0) {   //left boundary  on srceen
                                v.getParent()
                                        .requestDisallowInterceptTouchEvent(true);  
                            } else {
                                v.getParent().requestDisallowInterceptTouchEvent(
                                        false);
                            }

                        }

                        if (handleDrag(v, event.getX(), event.getY())) {
                            image.redraw();
                        }
                    }
                }
            }
        }
    } 

canven avatar Jun 11 '15 06:06 canven