2011-06-28 27 views

回答

9

在您的相機佈局添加ZoomControls。

<ZoomControls 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignBottom="@+id/surface_camera" 
android:layout_centerInParent="true" 
android:id="@+id/CAMERA_ZOOM_CONTROLS"> 
</ZoomControls> 

這些變量添加到您的cameraActivity

int currentZoomLevel = 0, maxZoomLevel = 0; 

然後下面的代碼添加到您的surfaceChanged方法。

ZoomControls zoomControls = (ZoomControls) findViewById(R.id.CAMERA_ZOOM_CONTROLS); 

    if(params.isZoomSupported()){  
    maxZoomLevel = params.getMaxZoom(); 

    zoomControls.setIsZoomInEnabled(true); 
     zoomControls.setIsZoomOutEnabled(true); 

     zoomControls.setOnZoomInClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
        if(currentZoomLevel < MAX_ZOOM){ 
         currentZoomLevel++; 
         camera.startSmoothZoom(currentZoomLevel); 
        } 
      } 
     }); 

    zoomControls.setOnZoomOutClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
        if(currentZoomLevel > 0){ 
         currentZoomLevel--; 
         camera.startSmoothZoom(currentZoomLevel); 
        } 
      } 
     });  
    } 
    else 
    zoomControls.setVisibility(View.GONE); 
+0

看起來這樣:http://stackoverflow.com/questions/20235511/camera-zoom-in-out-functionality-in-custom-camera-null-pointer-exception問題,使用你的解決方案 – Android

2

這些變量添加到您的活動課

int currentZoomLevel = 0, maxZoomLevel = 0; 
private Parameters params; 
private Camera mCamera; 
private LayoutInflater controlInflater = null; 

添加到您的onCreate方法

controlInflater = LayoutInflater.from(getBaseContext()); 
    View viewControl = controlInflater.inflate(R.layout.custom, null); 
    LayoutParams layoutParamsControl = new LayoutParams(LayoutParams.MATCH_PARENT, 
                 LayoutParams.MATCH_PARENT); 
    this.addContentView(viewControl, layoutParamsControl); 

     ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomControls1);   

     if (params.isZoomSupported()) { 
     final int maxZoomLevel = params.getMaxZoom(); 
     Log.i("max ZOOM ", "is " + maxZoomLevel); 
     zoomControls.setIsZoomInEnabled(true); 
     zoomControls.setIsZoomOutEnabled(true); 

     zoomControls.setOnZoomInClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
     if(currentZoomLevel < maxZoomLevel){ 
     currentZoomLevel++; 
     //mCamera.startSmoothZoom(currentZoomLevel); 
     params.setZoom(currentZoomLevel); 
     mCamera.setParameters(params); 
     } 
     } 
     }); 

     zoomControls.setOnZoomOutClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
     if(currentZoomLevel > 0){ 
     currentZoomLevel--; 
     params.setZoom(currentZoomLevel); 
     mCamera.setParameters(params); 
     } 
     } 
     }); 
     } 
     else 
     zoomControls.setVisibility(View.GONE); 

在它自己的佈局被稱爲 「custom.xml」

<ZoomControls 
    android:id="@+id/zoomControls1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="80dp" 
    android:layout_marginTop="200dp" /> 
添加此

如果我幫你在任何w唉幫助我,並檢查出我的YouTube頻道感謝。 https://www.youtube.com/watch?v=MSdghmyCrOE