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.BuilderBuilder class for  | 
| 
        
        
        
        
        class | SurfaceControl.JankDataJank information to be fed back via  | 
| 
        
        
        
        
        interface | SurfaceControl.OnJankDataListenerListener interface to be informed about SurfaceFlinger's jank classification for a specific surface. | 
| 
        
        
        
        
        class | SurfaceControl.OnJankDataListenerRegistrationHandle to a registered  | 
| 
        
        
        
        
        class | SurfaceControl.TransactionAn atomic set of changes to a set of SurfaceControl. | 
| 
        
        
        
        
        interface | SurfaceControl.TransactionCommittedListenerInterface to handle request to
  | 
| 
        
        
        
        
        class | SurfaceControl.TransactionStatsTransaction stats given to the listener registered in
  | 
| 
        
        
        
        
        class | SurfaceControl.TrustedPresentationThresholds
      This class was deprecated
      in API level 35.
    Use  | 
| Constants | |
|---|---|
| int | BUFFER_TRANSFORM_IDENTITYIdentity transform. | 
| int | BUFFER_TRANSFORM_MIRROR_HORIZONTALMirror horizontally. | 
| int | BUFFER_TRANSFORM_MIRROR_VERTICALMirror vertically. | 
| int | BUFFER_TRANSFORM_ROTATE_180Rotate 180 degrees clock-wise. | 
| int | BUFFER_TRANSFORM_ROTATE_270Rotate 270 degrees clock-wise. | 
| int | BUFFER_TRANSFORM_ROTATE_90Rotate 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 0orCONTENTS_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 benull. | 
| flags | int: Additional flags about how the object should be written.
 May be 0 orParcelable.PARCELABLE_WRITE_RETURN_VALUE.
 Value is either0or a combination ofParcelable.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.
