如何为Pinch-ZOOM保留onTouch()的状态?

时间:2016-05-20 09:16:05

标签: java android ontouchlistener pinchzoom android-gesture

我使用下面的代码来进行捏缩放。它工作正常,但没有保留以前的状态,因此当我尝试第二次缩放时,它不会从之前的状态缩放。请建议我如何保存以前的状态。

OnTouchListener MyOnTouchListener
= new OnTouchListener(){

    @Override
    public boolean onTouch(View view, MotionEvent event) {
        // TODO Auto-generated method stub

        float distx, disty;

        switch(event.getAction() & MotionEvent.ACTION_MASK){
        case MotionEvent.ACTION_DOWN:
            //A pressed gesture has started, the motion contains the initial starting location.
            myTouchEvent.setText("ACTION_DOWN"); 
            touchState = TOUCH;
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            //A non-primary pointer has gone down.
            myTouchEvent.setText("ACTION_POINTER_DOWN"); 
            touchState = PINCH;

            //Get the distance when the second pointer touch
            distx = event.getX(0) - event.getX(1);
            disty = event.getY(0) - event.getY(1);
            dist0 = FloatMath.sqrt(distx * distx + disty * disty);

            break;
        case MotionEvent.ACTION_MOVE:
            //A change has happened during a press gesture (between ACTION_DOWN and ACTION_UP).
            myTouchEvent.setText("ACTION_MOVE");

            if(touchState == PINCH){                        
                //Get the current distance
                distx = event.getX(0) - event.getX(1);
                disty = event.getY(0) - event.getY(1);
                distCurrent = FloatMath.sqrt(distx * distx + disty * disty);

                drawMatrix();
            }

            break;
        case MotionEvent.ACTION_UP:
            //A pressed gesture has finished.
            myTouchEvent.setText("ACTION_UP"); 
            touchState = IDLE;
            break;
        case MotionEvent.ACTION_POINTER_UP:
            //A non-primary pointer has gone up.
            myTouchEvent.setText("ACTION_POINTER_UP"); 
            touchState = TOUCH;
            break;
        }

        return true;
    }

};

由于

0 个答案:

没有答案