【发布时间】:2017-05-15 02:57:09
【问题描述】:
我正在研究 Surface-Camera-Preview,并且想用 seekbar 实现缩放控制,已经完成了捏缩放,那么有什么方法可以用 seekbar 控制它吗?谢谢。
【问题讨论】:
标签: android android-camera surfaceview
我正在研究 Surface-Camera-Preview,并且想用 seekbar 实现缩放控制,已经完成了捏缩放,那么有什么方法可以用 seekbar 控制它吗?谢谢。
【问题讨论】:
标签: android android-camera surfaceview
如果你用捏缩放设置缩放,你可以使用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。
【讨论】: