如何在 Android 的 SurfaceView Camera 中使用 seekbar 实现缩放?

How to implement zooming with seekbar in SurfaceView Camera in Android?

我正在做Surface-Camera-Preview,想用seekbar实现缩放控制,捏缩放已经完成了,请问有什么方法可以用seekbar控制吗?谢谢

如果您使用双指缩放设置缩放,您可以使用setOnSeekBarChangeListener设置相机缩放:

seekbarZoom = (SeekBar) findViewById(R.id.seekBarZoom);
    seekbarZoom.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub
            Log.d(TAG, "progress:"+progress);

            // YOur code here in set zoom for pinch zooming, sth like this
            if(mCamera.getParameters().isZoomSupported()){

                Parameters params = mCamera.getParameters();
                params.setZoom(progress);
                mCamera.setParameters(params);
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
            Log.d(TAG, "onStartTrackingTouch");
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
            Log.d(TAG, "onStartTrackingTouch");
        }

    });

RoShan Shan 分享的代码是实现此目的的方法,但如果您不设置 SeekBar 的最大值,您将因未设置 seekbarZoom.setMax(params.getMaxZoom()) 而从用户那里获得很多 IndexOutOfBoundsException。因为 SeekBar 的默认最大值为 100,但许多设备上的 maxZoom 小于 100。