ScaleGestureDetector
  public
  
  
  
  class
  ScaleGestureDetector
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.view.ScaleGestureDetector | 
Detects scaling transformation gestures using the supplied MotionEvents.
 The OnScaleGestureListener callback will notify users when a particular
 gesture event has occurred.
 This class should only be used with MotionEvents reported via touch.
 To use this class:
 
- Create an instance of the 
ScaleGestureDetectorfor yourView - In the 
View.onTouchEvent(MotionEvent)method ensure you callonTouchEvent(android.view.MotionEvent). The methods defined in your callback will be executed when the events occur. 
Summary
Nested classes | |
|---|---|
        
        
        
        
        interface | 
      
        ScaleGestureDetector.OnScaleGestureListener
        The listener for receiving notifications when gestures occur.  | 
    
        
        
        
        
        class | 
      
        ScaleGestureDetector.SimpleOnScaleGestureListener
        A convenience class to extend when you only want to listen for a subset of scaling-related events.  | 
    
Public constructors | |
|---|---|
      
      ScaleGestureDetector(Context context, ScaleGestureDetector.OnScaleGestureListener listener)
      
      
        Creates a ScaleGestureDetector with the supplied listener.  | 
  |
      
      ScaleGestureDetector(Context context, ScaleGestureDetector.OnScaleGestureListener listener, Handler handler)
      
      
        Creates a ScaleGestureDetector with the supplied listener.  | 
  |
Public methods | |
|---|---|
        
        
        
        
        
        float
     | 
  
    
      
      getCurrentSpan()
      
      
        Return the average distance between each of the pointers forming the gesture in progress through the focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getCurrentSpanX()
      
      
        Return the average X distance between each of the pointers forming the gesture in progress through the focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getCurrentSpanY()
      
      
        Return the average Y distance between each of the pointers forming the gesture in progress through the focal point.  | 
  
        
        
        
        
        
        long
     | 
  
    
      
      getEventTime()
      
      
        Return the event time of the current event being processed.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getFocusX()
      
      
        Get the X coordinate of the current gesture's focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getFocusY()
      
      
        Get the Y coordinate of the current gesture's focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getPreviousSpan()
      
      
        Return the previous average distance between each of the pointers forming the gesture in progress through the focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getPreviousSpanX()
      
      
        Return the previous average X distance between each of the pointers forming the gesture in progress through the focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getPreviousSpanY()
      
      
        Return the previous average Y distance between each of the pointers forming the gesture in progress through the focal point.  | 
  
        
        
        
        
        
        float
     | 
  
    
      
      getScaleFactor()
      
      
        Return the scaling factor from the previous scale event to the current event.  | 
  
        
        
        
        
        
        long
     | 
  
    
      
      getTimeDelta()
      
      
        Return the time difference in milliseconds between the previous accepted scaling event and the current scaling event.  | 
  
        
        
        
        
        
        boolean
     | 
  
    
      
      isInProgress()
      
      
        Returns   | 
  
        
        
        
        
        
        boolean
     | 
  
    
      
      isQuickScaleEnabled()
      
      
        Return whether the quick scale gesture, in which the user performs a double tap followed by a swipe, should perform scaling.  | 
  
        
        
        
        
        
        boolean
     | 
  
    
      
      isStylusScaleEnabled()
      
      
        Return whether the stylus scale gesture, in which the user uses a stylus and presses the button, should perform scaling.  | 
  
        
        
        
        
        
        boolean
     | 
  
    
      
      onTouchEvent(MotionEvent event)
      
      
        Accepts MotionEvents and dispatches events to a   | 
  
        
        
        
        
        
        void
     | 
  
    
      
      setQuickScaleEnabled(boolean scales)
      
      
        Set whether the associated   | 
  
        
        
        
        
        
        void
     | 
  
    
      
      setStylusScaleEnabled(boolean scales)
      
      
        Sets whether the associated   | 
  
Inherited methods | |
|---|---|
Public constructors
ScaleGestureDetector
public ScaleGestureDetector (Context context, ScaleGestureDetector.OnScaleGestureListener listener)
Creates a ScaleGestureDetector with the supplied listener.
 You may only use this constructor from a Looper thread.
| Parameters | |
|---|---|
context | 
        
          Context: the application's context
 This value cannot be null. | 
      
listener | 
        
          ScaleGestureDetector.OnScaleGestureListener: the listener invoked for all the callbacks, this must
 not be null. | 
      
| Throws | |
|---|---|
NullPointerException | 
          if listener is null. | 
        
ScaleGestureDetector
public ScaleGestureDetector (Context context, ScaleGestureDetector.OnScaleGestureListener listener, Handler handler)
Creates a ScaleGestureDetector with the supplied listener.
| Parameters | |
|---|---|
context | 
        
          Context: the application's context
 This value cannot be null. | 
      
listener | 
        
          ScaleGestureDetector.OnScaleGestureListener: the listener invoked for all the callbacks, this must
 not be null. | 
      
handler | 
        
          Handler: the handler to use for running deferred listener events.
 This value may be null. | 
      
| Throws | |
|---|---|
NullPointerException | 
          if listener is null. | 
        
See also:
Public methods
getCurrentSpan
public float getCurrentSpan ()
Return the average distance between each of the pointers forming the gesture in progress through the focal point.
| Returns | |
|---|---|
float | 
        Distance between pointers in pixels. | 
getCurrentSpanX
public float getCurrentSpanX ()
Return the average X distance between each of the pointers forming the gesture in progress through the focal point.
| Returns | |
|---|---|
float | 
        Distance between pointers in pixels. | 
getCurrentSpanY
public float getCurrentSpanY ()
Return the average Y distance between each of the pointers forming the gesture in progress through the focal point.
| Returns | |
|---|---|
float | 
        Distance between pointers in pixels. | 
getEventTime
public long getEventTime ()
Return the event time of the current event being processed.
| Returns | |
|---|---|
long | 
        Current event time in milliseconds. | 
getFocusX
public float getFocusX ()
Get the X coordinate of the current gesture's focal point.
 If a gesture is in progress, the focal point is between
 each of the pointers forming the gesture.
 If isInProgress() would return false, the result of this
 function is undefined.
| Returns | |
|---|---|
float | 
        X coordinate of the focal point in pixels. | 
getFocusY
public float getFocusY ()
Get the Y coordinate of the current gesture's focal point.
 If a gesture is in progress, the focal point is between
 each of the pointers forming the gesture.
 If isInProgress() would return false, the result of this
 function is undefined.
| Returns | |
|---|---|
float | 
        Y coordinate of the focal point in pixels. | 
getPreviousSpan
public float getPreviousSpan ()
Return the previous average distance between each of the pointers forming the gesture in progress through the focal point.
| Returns | |
|---|---|
float | 
        Previous distance between pointers in pixels. | 
getPreviousSpanX
public float getPreviousSpanX ()
Return the previous average X distance between each of the pointers forming the gesture in progress through the focal point.
| Returns | |
|---|---|
float | 
        Previous distance between pointers in pixels. | 
getPreviousSpanY
public float getPreviousSpanY ()
Return the previous average Y distance between each of the pointers forming the gesture in progress through the focal point.
| Returns | |
|---|---|
float | 
        Previous distance between pointers in pixels. | 
getScaleFactor
public float getScaleFactor ()
Return the scaling factor from the previous scale event to the current
 event. This value is defined as
 (getCurrentSpan() / getPreviousSpan()).
| Returns | |
|---|---|
float | 
        The current scaling factor. | 
getTimeDelta
public long getTimeDelta ()
Return the time difference in milliseconds between the previous accepted scaling event and the current scaling event.
| Returns | |
|---|---|
long | 
        Time difference since the last scaling event in milliseconds. | 
isInProgress
public boolean isInProgress ()
Returns true if a scale gesture is in progress.
| Returns | |
|---|---|
boolean | 
        |
isQuickScaleEnabled
public boolean isQuickScaleEnabled ()
Return whether the quick scale gesture, in which the user performs a double tap followed by a swipe, should perform scaling. .
| Returns | |
|---|---|
boolean | 
        |
See also:
isStylusScaleEnabled
public boolean isStylusScaleEnabled ()
Return whether the stylus scale gesture, in which the user uses a stylus and presses the button, should perform scaling.
| Returns | |
|---|---|
boolean | 
        |
See also:
onTouchEvent
public boolean onTouchEvent (MotionEvent event)
Accepts MotionEvents and dispatches events to a OnScaleGestureListener
 when appropriate.
 
Applications should pass a complete and consistent event stream to this method. A complete and consistent event stream involves all MotionEvents from the initial ACTION_DOWN to the final ACTION_UP or ACTION_CANCEL.
| Parameters | |
|---|---|
event | 
        
          MotionEvent: The event to process
 This value cannot be null. | 
      
| Returns | |
|---|---|
boolean | 
        true if the event was processed and the detector wants to receive the rest of the MotionEvents in this event stream. | 
setQuickScaleEnabled
public void setQuickScaleEnabled (boolean scales)
Set whether the associated OnScaleGestureListener should receive onScale callbacks
 when the user performs a doubleTap followed by a swipe. Note that this is enabled by default
 if the app targets API 19 and newer.
| Parameters | |
|---|---|
scales | 
        
          boolean: true to enable quick scaling, false to disable | 
      
setStylusScaleEnabled
public void setStylusScaleEnabled (boolean scales)
Sets whether the associated OnScaleGestureListener should receive
 onScale callbacks when the user uses a stylus and presses the button.
 Note that this is enabled by default if the app targets API 23 and newer.
| Parameters | |
|---|---|
scales | 
        
          boolean: true to enable stylus scaling, false to disable. | 
      
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.