Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/view/SurfaceControl.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/view/SurfaceControl.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/view/SurfaceControl.Builder#inhmethods)

# SurfaceControl.Builder

*** ** * ** ***


`
public
static


class
SurfaceControl.Builder
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.view.SurfaceControl.Builder |

<br />

*** ** * ** ***

Builder class for `https://developer.android.com/reference/android/view/SurfaceControl` objects.

By default the surface will be hidden, and have "unset" bounds, meaning it can
be as large as the bounds of its parent if a buffer or child so requires.

It is necessary to set at least a name via `https://developer.android.com/reference/android/view/SurfaceControl.Builder#setName(java.lang.String)`

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#Builder()() ` Begin building a SurfaceControl. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/view/SurfaceControl` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#build()() ` Construct a new `https://developer.android.com/reference/android/view/SurfaceControl` with the set parameters. |
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#setBufferSize(int,%20int)(int width, int height) ` Set the initial size of the controlled surface's buffers in pixels. |
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#setFormat(int)(int format) ` Set the pixel format of the controlled surface's buffers, using constants from `https://developer.android.com/reference/android/graphics/PixelFormat`. |
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#setHidden(boolean)(boolean hidden) ` Set the initial visibility for the SurfaceControl. |
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#setName(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Set a debugging-name for the SurfaceControl. |
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#setOpaque(boolean)(boolean opaque) ` Indicates whether the surface must be considered opaque, even if its pixel format is set to translucent. |
| ` https://developer.android.com/reference/android/view/SurfaceControl.Builder` | ` https://developer.android.com/reference/android/view/SurfaceControl.Builder#setParent(android.view.SurfaceControl)(https://developer.android.com/reference/android/view/SurfaceControl parent) ` Set a parent surface for our new SurfaceControl. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### Builder

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder ()
```

Begin building a SurfaceControl.

<br />

## Public methods

### build

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl build ()
```

Construct a new `https://developer.android.com/reference/android/view/SurfaceControl` with the set parameters. The builder
remains valid.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl` | This value cannot be `null`. <br /> |

### setBufferSize

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl.Builder setBufferSize (int width, 
                int height)
```

Set the initial size of the controlled surface's buffers in pixels.

<br />

| Parameters ||
|---|---|
| `width` | `int`: The buffer width in pixels. Value is 0 or greater <br /> |
| `height` | `int`: The buffer height in pixels. Value is 0 or greater <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl.Builder` | This value cannot be `null`. <br /> |

### setFormat

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl.Builder setFormat (int format)
```

Set the pixel format of the controlled surface's buffers, using constants from
`https://developer.android.com/reference/android/graphics/PixelFormat`.

<br />

| Parameters ||
|---|---|
| `format` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/graphics/PixelFormat#RGBA_8888` - `https://developer.android.com/reference/android/graphics/PixelFormat#RGBX_8888` - `https://developer.android.com/reference/android/graphics/PixelFormat#RGBA_F16` - `https://developer.android.com/reference/android/graphics/PixelFormat#RGBA_1010102` - `https://developer.android.com/reference/android/graphics/PixelFormat#RGB_888` - `https://developer.android.com/reference/android/graphics/PixelFormat#RGB_565` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl.Builder` | This value cannot be `null`. <br /> |

### setHidden

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl.Builder setHidden (boolean hidden)
```

Set the initial visibility for the SurfaceControl.

<br />

| Parameters ||
|---|---|
| `hidden` | `boolean`: Whether the Surface is initially HIDDEN. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl.Builder` | This value cannot be `null`. <br /> |

### setName

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl.Builder setName (String name)
```

Set a debugging-name for the SurfaceControl.

<br />

| Parameters ||
|---|---|
| `name` | `String`: A name to identify the Surface in debugging. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl.Builder` | This value cannot be `null`. <br /> |

### setOpaque

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl.Builder setOpaque (boolean opaque)
```

Indicates whether the surface must be considered opaque,
even if its pixel format is set to translucent. This can be useful if an
application needs full RGBA 8888 support for instance but will
still draw every pixel opaque.


This flag only determines whether opacity will be sampled from the alpha channel.
Plane-alpha from calls to setAlpha() can still result in blended composition
regardless of the opaque setting.

Combined effects are (assuming a buffer format with an alpha channel):

- OPAQUE + alpha(1.0) == opaque composition
- OPAQUE + alpha(0.x) == blended composition
- OPAQUE + alpha(0.0) == no composition
- !OPAQUE + alpha(1.0) == blended composition
- !OPAQUE + alpha(0.x) == blended composition
- !OPAQUE + alpha(0.0) == no composition

If the underlying buffer lacks an alpha channel, it is as if setOpaque(true) were set automatically.

<br />

<br />

| Parameters ||
|---|---|
| `opaque` | `boolean`: Whether the Surface is OPAQUE. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl.Builder` | This value cannot be `null`. <br /> |

### setParent

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SurfaceControl.Builder setParent (SurfaceControl parent)
```

Set a parent surface for our new SurfaceControl.

Child surfaces are constrained to the onscreen region of their parent.
Furthermore they stack relatively in Z order, and inherit the transformation
of the parent.

<br />

| Parameters ||
|---|---|
| `parent` | `SurfaceControl`: The parent control. This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/SurfaceControl.Builder` | This value cannot be `null`. <br /> |