Android 放大镜效果实现.pdf
《Android 放大镜效果实现.pdf》由会员分享,可在线阅读,更多相关《Android 放大镜效果实现.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Android 放大镜效果实现放大镜就是直接调用相机,使用放大缩小的功能实现,调用相机有两种方式,一种是直接调用系统的;另一种是自定义相机,需要自定义一个预览界面,下面简单介绍自定义相机方式:参考:http:/ 里添加使用相机的权限/使用相机属性/相机自动对焦12345671234567然后再判断是否有相机存在:/*Check if this device has a camera*/private boolean checkCameraHardware(Context context)if(context.getPackageManager().hasSystemFeature(Packag
2、eManager.FEATURE_CAMERA)/this device has a camerareturn true;else/no camera on this devicereturn false;12345678910123456789102.打开相机,官网实现的安全方式打开相机/*A safe way to get an instance of the Camera object.*/public static Camera getCameraInstance()Camera c=null;try c=Camera.open();/attempt to get a Camerain
3、stancecatch(Exception e)/Camera is not available(in use or does notexist)return c;/returns null if camera is unavailable123456789101112345678910113、创建预览窗口,这是最主要的部分SurfaceView:该类是一个视图组件,实现了照片的预览功能。SurfaceHolder:一个抽象接口,是 SurfaceView 的支持类,一般通过 SurfaceView 的 getHolder()方法获得。允许你控制界面的尺寸和格式、编辑界面的像素,以及监控界面尺
4、寸的改变。SurfaceHolder.Callback:SurfaceHolder 的一个内部接口,可以实现该接口获取界面改变的信息。该接口中有三个方法,surfaceCreated()方法在界面创建时被调用,一般在该方法中打开 照相机并设置预览。surfaceChanged()方法在界面尺寸改变时 被调用,一般在该方法中设置相机的参数(大小、格式等)。surfaceDestroyed()方法在界面被销毁时调用,在该方法中清除相机实例,释放资源。Camera:相机类,实现拍照功能。Camera.PictureCallback:Camera 的一个内部接口,处理照片准备好后的回调。接着我们定义预
5、览窗口的自定义 View/*A basic Camera preview class*/public class MyPreview extends SurfaceViewimplements SurfaceHolder.Callback private SurfaceHolder mHolder;private Camera mCamera;public MyPreview(Context context,Cameracamera)super(context);mCamera=camera;/Install a SurfaceHolder.Callback so we getnotified
6、 when the/underlying surface is created anddestroyed.mHolder=getHolder();mHolder.addCallback(this);/deprecated setting,but required on Androidversions prior to 3.0mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);public void surfaceCreated(SurfaceHolder holder)/The Surface has been created,no
7、w tell thecamera where to draw the preview./获取相机属性Camera.Parameters parameters=mCamera.getParameters();/自动对焦parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);/由于相机默认是横屏的,创建时旋转一下调正位置if(this.getResources().getConfiguration().orientation!=Configuration.ORIENTATION_LANDSCAPE)parameters.set(orie
8、ntation,portrait);mCamera.setDisplayOrientation(90);parameters.setRotation(90);elseparameters.set(orientation,landscape);mCamera.setDisplayOrientation(0);parameters.setRotation(0);mCamera.setParameters(parameters);try mCamera.setPreviewDisplay(holder);mCamera.startPreview();catch(IOException e)e.pri
9、ntStackTrace();public void surfaceDestroyed(SurfaceHolderholder)/empty.Take care of releasing the Camerapreview in your activity.public void surfaceChanged(SurfaceHolderholder,int format,int w,int h)/If your preview can change or rotate,takecare of those events here./Make sure to stop the preview be
10、foreresizing or reformatting it.if(mHolder.getSurface()=null)/preview surface does not existreturn;/stop preview before making changestry mCamera.stopPreview();catch(Exception e)/ignore:tried to stop a non-existentpreview/make any resize,rotate or reformattingchanges here/start preview with new sett
11、ingstry mCamera.setPreviewDisplay(mHolder);mCamera.startPreview();catch(Exception e)e.printStackTrace();Overridepublic boolean onTouchEvent(MotionEvent event)/return super.onTouchEvent(event);/按下时自动对焦if(event.getAction()=MotionEvent.ACTION_DOWN)mCamera.autoFocus(null);return true;1234567891011121314
12、151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848512345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838
13、4854、添加 seekbar 调节预览区域的缩放。由于在 Nexus5 上获取到的 maxZoom 是 99,如果你的设备取不到这么大,那么需要将 progress 的刻度乘一个比例,以免报错。/*maxZoom=parameters.getMaxZoom();最大缩放*ratio=100/maxZoom;获取比例*/seekBar.setOnSeekBarChangeListener(newSeekBar.OnSeekBarChangeListener()Camera c=mCamera;Overridepublic void onProgressChanged(SeekBarseekBa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 放大镜效果实现 放大镜 效果 实现
限制150内