SurfaceControlViewHost

public class SurfaceControlViewHost
extends Object

java.lang.Object
   ↳ android.view.SurfaceControlViewHost


Utility class for adding a View hierarchy to a SurfaceControl. The View hierarchy will render in to a root SurfaceControl, and receive input based on the SurfaceControl's placement on-screen. The primary usage of this class is to embed a View hierarchy from one process in to another. After the SurfaceControlViewHost has been set up in the embedded content provider, we can send the SurfaceControlViewHost.SurfacePackage to the host process. The host process can then attach the hierarchy to a SurfaceView within its own by calling SurfaceView#setChildSurfacePackage.

Summary

Nested classes

class SurfaceControlViewHost.SurfacePackage

Package encapsulating a Surface hierarchy which contains interactive view elements. 

Public constructors

SurfaceControlViewHost(Context context, Display display, IBinder hostToken)

Construct a new SurfaceControlViewHost.

Public methods

SurfaceControlViewHost.SurfacePackage getSurfacePackage()

Return a SurfacePackage for the root SurfaceControl of the embedded hierarchy.

View getView()
void relayout(int width, int height)

Modify the size of the root view.

void release()

Trigger the tear down of the embedded view hierarchy and release the SurfaceControl.

void setView(View view, int width, int height)

Set the root view of the SurfaceControlViewHost.

boolean transferTouchGestureToHost()

Transfer the currently in progress touch gesture to the parent (if any) of this SurfaceControlViewHost.

Inherited methods

Public constructors

SurfaceControlViewHost

Added in API level 30
public SurfaceControlViewHost (Context context, 
                Display display, 
                IBinder hostToken)

Construct a new SurfaceControlViewHost. The root Surface will be allocated internally and is accessible via getSurfacePackage(). The parameter, primarily used for ANR reporting, must be obtained from whomever will be hosting the embedded hierarchy. It's accessible from SurfaceView#getHostToken.

Parameters
context Context: The Context object for your activity or application. This value cannot be null.

display Display: The Display the hierarchy will be placed on. This value cannot be null.

Public methods

getSurfacePackage

Added in API level 30
public SurfaceControlViewHost.SurfacePackage getSurfacePackage ()

Return a SurfacePackage for the root SurfaceControl of the embedded hierarchy. Rather than be directly reparented using SurfaceControl.Transaction this SurfacePackage should be passed to SurfaceView#setChildSurfacePackage which will not only reparent the Surface, but ensure the accessibility hierarchies are linked.

Returns
SurfaceControlViewHost.SurfacePackage This value may be null.

getView

Added in API level 30
public View getView ()

Returns
View The view passed to setView, or null if none has been passed.

relayout

Added in API level 30
public void relayout (int width, 
                int height)

Modify the size of the root view.

Parameters
width int: Width in pixels

height int: Height in pixels

release

Added in API level 30
public void release ()

Trigger the tear down of the embedded view hierarchy and release the SurfaceControl. This will result in onDispatchedFromWindow being dispatched to the embedded view hierarchy and render the object unusable.

setView

Added in API level 30
public void setView (View view, 
                int width, 
                int height)

Set the root view of the SurfaceControlViewHost. This view will render in to the SurfaceControl, and receive input based on the SurfaceControls positioning on screen. It will be laid as if it were in a window of the passed in width and height.

Parameters
view View: The View to add This value cannot be null.

width int: The width to layout the View within, in pixels.

height int: The height to layout the View within, in pixels.

transferTouchGestureToHost

Added in API level 34
public boolean transferTouchGestureToHost ()

Transfer the currently in progress touch gesture to the parent (if any) of this SurfaceControlViewHost. This requires that the SurfaceControlViewHost was created with an associated hostInputToken.

Returns
boolean Whether the touch stream was transferred.