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.