SurfaceControl
  public
  
  final
  
  class
  SurfaceControl
  
    extends Object
  
  
  
  
  
      implements
      
        Parcelable
      
  
  
| java.lang.Object | |
| ↳ | android.view.SurfaceControl | 
Handle to an on-screen Surface managed by the system compositor. The SurfaceControl is
 a combination of a buffer source, and metadata about how to display the buffers.
 By constructing a Surface from this SurfaceControl you can submit buffers to be
 composited. Using SurfaceControl.Transaction you can manipulate various
 properties of how the buffer will be displayed on-screen. SurfaceControl's are
 arranged into a scene-graph like hierarchy, and as such any SurfaceControl may have
 a parent. Geometric properties like transform, crop, and Z-ordering will be inherited
 from the parent, as if the child were content in the parents buffer stream.
Summary
Nested classes | |
|---|---|
        
        
        
        
        class | 
      
        SurfaceControl.Builder
        Builder class for   | 
    
        
        
        
        
        class | 
      
        SurfaceControl.JankData
        Jank information to be fed back via   | 
    
        
        
        
        
        interface | 
      
        SurfaceControl.OnJankDataListener
        Listener interface to be informed about SurfaceFlinger's jank classification for a specific surface.  | 
    
        
        
        
        
        class | 
      
        SurfaceControl.OnJankDataListenerRegistration
        Handle to a registered   | 
    
        
        
        
        
        class | 
      
        SurfaceControl.Transaction
        An atomic set of changes to a set of SurfaceControl.  | 
    
        
        
        
        
        interface | 
      
        SurfaceControl.TransactionCommittedListener
        Interface to handle request to
   | 
    
        
        
        
        
        class | 
      
        SurfaceControl.TransactionStats
        Transaction stats given to the listener registered in
   | 
    
        
        
        
        
        class | 
      
        SurfaceControl.TrustedPresentationThresholds
        
      This class was deprecated
      in API level 35.
    Use   | 
    
Constants | |
|---|---|
int | 
        
          BUFFER_TRANSFORM_IDENTITY
          Identity transform.  | 
    
int | 
        
          BUFFER_TRANSFORM_MIRROR_HORIZONTAL
          Mirror horizontally.  | 
    
int | 
        
          BUFFER_TRANSFORM_MIRROR_VERTICAL
          Mirror vertically.  | 
    
int | 
        
          BUFFER_TRANSFORM_ROTATE_180
          Rotate 180 degrees clock-wise.  | 
    
int | 
        
          BUFFER_TRANSFORM_ROTATE_270
          Rotate 270 degrees clock-wise.  | 
    
int | 
        
          BUFFER_TRANSFORM_ROTATE_90
          Rotate 90 degrees clock-wise.  | 
    
Inherited constants | 
|---|
Fields | |
|---|---|
    public
    static
    final
    Creator<SurfaceControl> | 
    
      CREATOR
      
  | 
  
Public methods | |
|---|---|
        
        
        
        
        
        int
     | 
  
    
      
      describeContents()
      
      
        Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.  | 
  
        
        
        
        
        
        boolean
     | 
  
    
      
      isValid()
      
      
        Check whether this instance points to a valid layer with the system-compositor.  | 
  
        
        
        
        
        
        void
     | 
  
    
      
      readFromParcel(Parcel in)
      
      
     | 
  
        
        
        
        
        
        void
     | 
  
    
      
      release()
      
      
        Release the local reference to the server-side surface.  | 
  
        
        
        
        
        
        String
     | 
  
    
      
      toString()
      
      
        Returns a string representation of the object.  | 
  
        
        
        
        
        
        void
     | 
  
    
      
      writeToParcel(Parcel dest, int flags)
      
      
        Flatten this object in to a Parcel.  | 
  
Inherited methods | |
|---|---|
Constants
BUFFER_TRANSFORM_IDENTITY
public static final int BUFFER_TRANSFORM_IDENTITY
Identity transform. These transforms that can be applied to buffers as they are displayed to a window.
Constant Value: 0 (0x00000000)
BUFFER_TRANSFORM_MIRROR_HORIZONTAL
public static final int BUFFER_TRANSFORM_MIRROR_HORIZONTAL
Mirror horizontally. Can be combined with BUFFER_TRANSFORM_MIRROR_VERTICAL
 and BUFFER_TRANSFORM_ROTATE_90.
Constant Value: 1 (0x00000001)
BUFFER_TRANSFORM_MIRROR_VERTICAL
public static final int BUFFER_TRANSFORM_MIRROR_VERTICAL
Mirror vertically. Can be combined with BUFFER_TRANSFORM_MIRROR_HORIZONTAL
 and BUFFER_TRANSFORM_ROTATE_90.
Constant Value: 2 (0x00000002)
BUFFER_TRANSFORM_ROTATE_180
public static final int BUFFER_TRANSFORM_ROTATE_180
Rotate 180 degrees clock-wise. Cannot be combined with other transforms.
 Equivalent to (BUFFER_TRANSFORM_MIRROR_HORIZONTAL |
                BUFFER_TRANSFORM_MIRROR_VERTICAL).
Constant Value: 3 (0x00000003)
BUFFER_TRANSFORM_ROTATE_270
public static final int BUFFER_TRANSFORM_ROTATE_270
Rotate 270 degrees clock-wise. Cannot be combined with other transforms.
 Equivalent to (BUFFER_TRANSFORM_ROTATE_180 | BUFFER_TRANSFORM_ROTATE_90).
Constant Value: 7 (0x00000007)
BUFFER_TRANSFORM_ROTATE_90
public static final int BUFFER_TRANSFORM_ROTATE_90
Rotate 90 degrees clock-wise. Can be combined with BUFFER_TRANSFORM_MIRROR_HORIZONTAL and BUFFER_TRANSFORM_MIRROR_VERTICAL.
Constant Value: 4 (0x00000004)
Fields
Public methods
describeContents
public int describeContents ()
Describe the kinds of special objects contained in this Parcelable
 instance's marshaled representation. For example, if the object will
 include a file descriptor in the output of writeToParcel(android.os.Parcel, int),
 the return value of this method must include the
 CONTENTS_FILE_DESCRIPTOR bit.
| Returns | |
|---|---|
int | 
        a bitmask indicating the set of special object types marshaled
 by this Parcelable object instance.
 Value is either 0 or CONTENTS_FILE_DESCRIPTOR | 
      
isValid
public boolean isValid ()
Check whether this instance points to a valid layer with the system-compositor. For
 example this may be false if construction failed, or the layer was released
 (release()).
| Returns | |
|---|---|
boolean | 
        Whether this SurfaceControl is valid. | 
release
public void release ()
Release the local reference to the server-side surface. The surface
 may continue to exist on-screen as long as its parent continues
 to exist. To explicitly remove a surface from the screen use
 Transaction.reparent with a null-parent. After release,
 isValid() will return false and other methods will throw
 an exception.
 Always call release() when you're done with a SurfaceControl.
toString
public String toString ()
Returns a string representation of the object.
| Returns | |
|---|---|
String | 
        a string representation of the object. | 
writeToParcel
public void writeToParcel (Parcel dest, int flags)
Flatten this object in to a Parcel.
| Parameters | |
|---|---|
dest | 
        
          Parcel: The Parcel in which the object should be written.
 This value cannot be null. | 
      
flags | 
        
          int: Additional flags about how the object should be written.
 May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE.
 Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES | 
      
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-08-20 UTC.