Android - Как увеличить / увеличить изображение по кругу?

Я пытаюсь позволить пользователю дотронуться до изображения, и тогда в основном появится круговая лупа, которая позволит пользователю лучше выбрать определенную область на изображении. Когда пользователь отпускает прикосновение, увеличенная часть исчезнет. Это используется в нескольких приложениях для редактирования фотографий, и я пытаюсь реализовать свою собственную версию. Приведенный ниже код увеличивает круговую часть изображения, но не удаляет и не очищает зум, когда я отпускаю палец. В настоящее время я устанавливаю растровое изображение на холст, используяcanvas = new Canvas(bitMap); а затем установите вид изображения с помощьюtakenPhoto.setImageBitmap(bitMap); Я не уверен, что пойду правильно. Код onTouch ниже:

zoomPos = new PointF(0,0);
        takenPhoto.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                 int action = event.getAction(); 
                    switch (action) { 
                        case MotionEvent.ACTION_DOWN: 
                            zoomPos.x = event.getX();
                            zoomPos.y = event.getY();
                            matrix.reset();
                            matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
                            shader.setLocalMatrix(matrix);
                            canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
                            takenPhoto.invalidate();
                            break; 
                        case MotionEvent.ACTION_MOVE: 
                            zoomPos.x = event.getX();
                            zoomPos.y = event.getY();
                            matrix.reset();
                            matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
                            canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
                            takenPhoto.invalidate();
                            break; 
                        case MotionEvent.ACTION_UP:   
                            //clear zoom here?

                            break; 
                        case MotionEvent.ACTION_CANCEL: 
                            break; 
                        default: 
                            break; 
            }
                    return true; 
            } 
            });

Ответы на вопрос(4)

Ваш ответ на вопрос