Android 如何在摄像头预览的背景上加上一个手指可拖动的调节框?
巴扎黑
巴扎黑 2017-04-17 17:20:32
[Android讨论组]

请问调节框该如何绘制?是在SufaceView 中绘制么?手指拖动如何实现?

启动拍照功能后,下面是摄像头预览的背景(模拟器的),在这个背景上加上一个调节框

Activity代码


public class PickActivity extends AppCompatActivity {

    private Button mBtnPick;
    private SurfaceView mSvView;

    private SurfaceHolder.Callback mCallback;
    private Camera mCamera;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pick);
        initView();
        mCallback = new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                startCamera();
            }

            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
                stopCamera();
            }
        };
        mSvView.getHolder().addCallback(mCallback);
        mBtnPick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCamera.takePicture(null, null, new Camera.PictureCallback() {
                    @Override
                    public void onPictureTaken(byte[] data, Camera camera) {
                        File path = new File(Environment.getExternalStorageDirectory(), "test");
                        if (!path.exists()) {
                            path.mkdirs();
                        }
                        File fileName = new File(path, "test.jpg");
                        try {
                            FileOutputStream fos = new FileOutputStream(fileName);
                            fos.write(data);
                            fos.flush();
                            fos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        });
    }

    private void stopCamera() {
        mCamera.stopPreview();
        mCamera.release();
        mCamera = null;
    }

    private void startCamera() {
        mCamera = Camera.open();
        try {
            mCamera.setPreviewDisplay(mSvView.getHolder());
            mCamera.setDisplayOrientation(90);
            mCamera.startPreview();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void initView() {
        mBtnPick = (Button) findViewById(R.id.id_btn_pick);
        mSvView = (SurfaceView) findViewById(R.id.id_sv_camera);
    }
}
巴扎黑
巴扎黑

全部回复(1)
伊谢尔伦

添加seekBar

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号