Lo ZoomControls è uno strumento utilissimo da aggiungere ad un ipotetica SurfaceView al fine di controllare lo Zoom della Camera.
Supponendo di avere un camera già in uso, si può aggiungere pochissimo codice per aggiungere questa features ad una app.
Nel layout:
<zoomcontrols
android:id="@+id/CAMERA_ZOOM_CONTROLS" android:layout_alignbottom="@+id/surface_camera"
android:layout_centerinparent="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</zoomcontrols>
Nell'activity aggiungiamo il controllo dichiarando due variabili private che sono utilizzate per mantenere l'auttuale zoom.
int currentZoomLevel = 0, maxZoomLevel = 0;
ZoomControls zoomControls = (ZoomControls) findViewById(R.id.CAMERA_ZOOM_CONTROLS); if(cp.isZoomSupported()){ maxZoomLevel = cp.getMaxZoom(); zoomControls.setIsZoomInEnabled(true); zoomControls.setIsZoomOutEnabled(true); zoomControls.setOnZoomInClickListener(new OnClickListener(){ public void onClick(View v){ if( (currentZoomLevel + 1) < maxZoomLevel){ currentZoomLevel++; camera.startSmoothZoom(currentZoomLevel); } } }); zoomControls.setOnZoomOutClickListener(new OnClickListener(){ public void onClick(View v){ if( (currentZoomLevel-1) > 0){ currentZoomLevel--; camera.startSmoothZoom(currentZoomLevel); } } }); } else zoomControls.setVisibility(View.GONE);
Lo zoom in questo estratto ha uno step di 1 ma ovviamente è possibile aumentarlo a piacimento.
Per qualsiasi domanda lasciate un commento.