大佬教程收集整理的这篇文章主要介绍了android – SurfaceView使用自定义相机缩放IN和OUT功能,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class MainActivity extends Activity { private SurfaceView preview=null; private SurfaceHolder previewHolder=null; public Camera camera ; private Boolean inPreview=false; ImageButton btnCapture; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_main); preview=(SurfaceView)findViewById(R.id.surfacE); previewHolder=preview.getHolder(); previewHolder.addCallBACk(surfaceCallBACk); previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); previewHolder.setFixedSize(getWindow().getWindowManager() .getDefaultDisplay().getWidth(),getWindow().getWindowManager() .getDefaultDisplay().getHeight()); btnCapture = (ImageButton) findViewById(R.id.btnCapturE); btnCapture.setOnClickListener(new View.onClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(),"Capture Image(s)",Toast.LENGTH_LONG).show(); } }); } @Override public void onResume() { super.onResume(); camera=Camera.open(); } @Override public void onPause() { super.onPause(); if (inPreview) { camera.stopPreview(); } camera.release(); camera=null; inPreview=false; } private Camera.Size getBestPreviewSize(int width,int height,Camera.Parameters parameters){ Camera.Size result=null; for (Camera.Size size : parameters.getSupportedPreviewSizes()) { if (size.width<=width && size.height<=height) { if (result==null) { result=size; } else { int resultArea=result.width*result.height; int newArea=size.width*size.height; if (newArea>resultArea) { result=size; } } } } return(result); } SurfaceHolder.CallBACk surfaceCallBACk=new SurfaceHolder.CallBACk(){ public void surfaceCreated(SurfaceHolder holder) { try { camera.setPreviewDisplay(previewHolder); } catch (Throwable t) { Log.e("PreviewDemo-surfaceCallBACk","Exception in setPreviewDisplay()",t); Toast.makeText(MainActivity.this,t.getmessage(),Toast.LENGTH_LONG).show(); } } public void surfaceChanged(SurfaceHolder holder,int format,int width,int height) { Camera.Parameters parameters=camera.getParameters(); Camera.Size size=getBestPreviewSize(width,height,parameters); if (size!=null) { parameters.setPreviewSize(size.width,size.height); camera.setParameters(parameters); camera.startPreview(); inPreview=true; } } public void surfaceDestroyed(SurfaceHolder holder) { } }; }
activity_main.xml中: –
<RelativeLayout xmlns:android="http://scheR_807_11845@as.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:BACkground="@drawable/splash_BACkground" > <android.view.SurfaceView android:id="@+id/surface" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <ImageButton android:id="@+id/btnCapture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:BACkground="@drawable/capture" android:contentDescription="@String/app_name" /> </RelativeLayout>
public class DemoActivity extends Activity { private FrameLayout pCameraLayout = null; // this layout contains surfaceview private ZoomControls zoomControls ; Camera mCamera=null; @Override protected void onCreate(Bundle savedInstanceStatE) { // TODO Auto-generated method stub super.onCreate(savedInstanceStatE); enableZoom(); } private void enableZoom() { zoomControls = new ZoomControls(this); zoomControls.setIsZoominenabled(true); zoomControls.setIsZoomOutEnabled(true); zoomControls.setOnZoomInClickListener(new View.onClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub zoomCamera(false); } }); zoomControls.setOnZoomOutClickListener(new View.onClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub zoomCamera(true); } }); pCameraLayout.addView(zoomControls); } /** * Enables zoom feature in native camera . Called from listener of the view * used for zoom in and zoom out. * * * @param zoomInOrOut "false" for zoom in and "true" for zoom out */ public void zoomCamera(Boolean zoomInOrOut) { if(mCamera!=null) { Parameters parameter = mCamera.getParameters(); if(parameter.isZoomSupported()) { int MAX_ZOOM = parameter.getMaxZoom(); int currnetZoom = parameter.getZoom(); if(zoomInOrOut && (currnetZoom <MAX_ZOOM && currnetZoom >=0)) { parameter.setZoom(++currnetZoom); } else if(!zoomInOrOut && (currnetZoom <=MAX_ZOOM && currnetZoom >0)) { parameter.setZoom(--currnetZoom); } } else Toast.makeText(context,"Zoom Not Avaliable",Toast.LENGTH_LONG).show(); mCamera.setParameters(parameter); } }
以上是大佬教程为你收集整理的android – SurfaceView使用自定义相机缩放IN和OUT功能全部内容,希望文章能够帮你解决android – SurfaceView使用自定义相机缩放IN和OUT功能所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。