如何在 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。
我正在做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。