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_HORIZONTAL_ROTATE_90
Mirror horizontally and rotate 90 degrees clock-wise. |
int |
BUFFER_TRANSFORM_MIRROR_VERTICAL
Mirror vertically. |
int |
BUFFER_TRANSFORM_MIRROR_VERTICAL_ROTATE_90
Mirror vertically and rotate 90 degrees clock-wise. |
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. |
Protected methods | |
|---|---|
void
|
finalize()
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. |
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_HORIZONTAL_ROTATE_90
public static final int BUFFER_TRANSFORM_MIRROR_HORIZONTAL_ROTATE_90
Mirror horizontally and rotate 90 degrees clock-wise.
Equivalent to (BUFFER_TRANSFORM_MIRROR_HORIZONTAL |
BUFFER_TRANSFORM_ROTATE_90).
Constant Value: 5 (0x00000005)
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_MIRROR_VERTICAL_ROTATE_90
public static final int BUFFER_TRANSFORM_MIRROR_VERTICAL_ROTATE_90
Mirror vertically and rotate 90 degrees clock-wise.
Equivalent to (BUFFER_TRANSFORM_MIRROR_VERTICAL |
BUFFER_TRANSFORM_ROTATE_90).
Constant Value: 6 (0x00000006)
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
|
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 the following:
|
Protected methods
finalize
protected void finalize ()
Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.
A subclass overrides the finalize method to dispose of
system resources or to perform other cleanup.
The general contract of finalize is that it is invoked
if and when the Java virtual
machine has determined that there is no longer any
means by which this object can be accessed by any thread that has
not yet died, except as a result of an action taken by the
finalization of some other object or class which is ready to be
finalized. The finalize method may take any action, including
making this object available again to other threads; the usual purpose
of finalize, however, is to perform cleanup actions before
the object is irrevocably discarded. For example, the finalize method
for an object that represents an input/output connection might perform
explicit I/O transactions to break the connection before the object is
permanently discarded.
The finalize method of class Object performs no
special action; it simply returns normally. Subclasses of
Object may override this definition.
The Java programming language does not guarantee which thread will
invoke the finalize method for any given object. It is
guaranteed, however, that the thread that invokes finalize will not
be holding any user-visible synchronization locks when finalize is
invoked. If an uncaught exception is thrown by the finalize method,
the exception is ignored and finalization of that object terminates.
After the finalize method has been invoked for an object, no
further action is taken until the Java virtual machine has again
determined that there is no longer any means by which this object can
be accessed by any thread that has not yet died, including possible
actions by other objects or classes which are ready to be finalized,
at which point the object may be discarded.
The finalize method is never invoked more than once by a Java
virtual machine for any given object.
Any exception thrown by the finalize method causes
the finalization of this object to be halted, but is otherwise
ignored.
| Throws | |
|---|---|
Throwable |
|
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 2026-02-13 UTC.