--- layout: page title: "Gestures" description: "Gestures control" category: docs order: 5 date: 2018-12-20 20:49:35 disqus: 1 --- `CameraView` listen to lots of different gestures inside its bounds. You have the chance to map these gestures to particular actions or camera controls, using the `mapGesture()` method. This lets you emulate typical behaviors in a single line: ```java cameraView.mapGesture(Gesture.PINCH, GestureAction.ZOOM); // Pinch to zoom! cameraView.mapGesture(Gesture.TAP, GestureAction.AUTO_FOCUS); // Tap to focus! cameraView.mapGesture(Gesture.LONG_TAP, GestureAction.TAKE_PICTURE); // Long tap to shoot! ``` Simple as that. There are two things to be noted: - Not every mapping is valid. For example, you can't control zoom with long taps, or start focusing by pinching. - Some actions might not be supported by the sensor. Check out `CameraOptions` to know what's legit and what's not. |Gesture|Description|Can be mapped to| |-------------|-----------|----------------| |`PINCH`|Pinch gesture, typically assigned to the zoom control.|`ZOOM` `EXPOSURE_CORRECTION` `FILTER_CONTROL_1` `FILTER_CONTROL_2` `NONE`| |`TAP`|Single tap gesture, typically assigned to the focus control.|`AUTO_FOCUS` `TAKE_PICTURE` `NONE`| |`LONG_TAP`|Long tap gesture.|`AUTO_FOCUS` `TAKE_PICTURE` `NONE`| |`SCROLL_HORIZONTAL`|Horizontal movement gesture.|`ZOOM` `EXPOSURE_CORRECTION` `FILTER_CONTROL_1` `FILTER_CONTROL_2` `NONE`| |`SCROLL_VERTICAL`|Vertical movement gesture.|`ZOOM` `EXPOSURE_CORRECTION` `FILTER_CONTROL_1` `FILTER_CONTROL_2` `NONE`| ### Gesture Actions Looking at this from the other side: |Gesture action|Description|Can be mapped to| |--------------|-----------|----------------| |`NONE`|Disables this gesture.|`TAP` `LONG_TAP` `PINCH` `SCROLL_HORIZONTAL` `SCROLL_VERTICAL`| |`AUTO_FOCUS`|Launches a [touch metering operation](metering#touch-metering) on the finger position.|`TAP` `LONG_TAP`| |`TAKE_PICTURE`|Takes a picture using [takePicture](capturing-media).|`TAP` `LONG_TAP`| |`ZOOM`|[Zooms](controls#zoom) in or out.|`PINCH` `SCROLL_HORIZONTAL` `SCROLL_VERTICAL`| |`EXPOSURE_CORRECTION`|Controls the [exposure correction](metering#exposure-correction).|`PINCH` `SCROLL_HORIZONTAL` `SCROLL_VERTICAL`| |`FILTER_CONTROL_1`|Controls the first parameter (if any) of a [real-time filter](filters).|`PINCH` `SCROLL_HORIZONTAL` `SCROLL_VERTICAL`| |`FILTER_CONTROL_2`|Controls the second parameter (if any) of a [real-time filter](filters).|`PINCH` `SCROLL_HORIZONTAL` `SCROLL_VERTICAL`| ### XML Attributes ```xml ``` ### Related APIs |Method|Description| |------|-----------| |`mapGesture(Gesture, GestureAction)`|Maps a certain gesture to a certain action. No-op if the action is not supported.| |`getGestureAction(Gesture)`|Returns the action currently mapped to the given gesture.| |`clearGesture(Gesture)`|Clears any action mapped to the given gesture.|