본문 바로가기
IT/Android

Android] PreviewView Pinch Zoom

by 깻잎쌈 2024. 8. 22.
반응형
// 선언 
ScaleGestureDetector detector;

// detector 기능 정의
@Override
  protected void onResume() {
  super.onResume();

        ScaleGestureDetector.SimpleOnScaleGestureListener gestureListener = new ScaleGestureDetector.SimpleOnScaleGestureListener() {
            @Override
            public boolean onScale(@NonNull ScaleGestureDetector detector) {
                float currentZoomRatio = camera.getCameraInfo().getZoomState().getValue().getZoomRatio();
                if (currentZoomRatio == null) {
                    currentZoomRatio = 1F;
                }

                float delta = detector.getScaleFactor();
                camera.getCameraControl().setZoomRatio(currentZoomRatio * delta);

                return true;
            }
        };

    detector = new ScaleGestureDetector(viewFinder.getContext(), gestureListener);
 }
    
    
// previewView에서 사용
previewView.setOnTouchListener(new View.OnTouchListener() {
	@Override
                    public boolean onTouch(View v, MotionEvent event) {
                        MeteringPointFactory factory = viewFinder.getMeteringPointFactory();
                        MeteringPoint point = factory.createPoint(event.getX(), event.getY());
                        FocusMeteringAction action = new FocusMeteringAction.Builder(point).build();
                        camera = cameraProvider.bindToLifecycle (
                                MultiCameraActivity.this, cameraSelector, preview, imageCapture
                        );

                        // pinch
                        detector.onTouchEvent(event);
                    }
                    
 }

 

 

https://medium.com/androiddevelopers/display-a-camera-preview-with-previewview-86562433d86c

 

Display a camera preview with PreviewView

Android Jetpack CameraX: PreviewView

medium.com

 

 

반응형

댓글