Class FlutterRenderer
- java.lang.Object
-
- io.flutter.embedding.engine.renderer.FlutterRenderer
-
- All Implemented Interfaces:
TextureRegistry
public class FlutterRenderer extends Object implements TextureRegistry
Represents the rendering responsibilities of aFlutterEngine.FlutterRendererworks in tandem with a providedRenderSurfaceto paint Flutter pixels to an AndroidViewhierarchy.FlutterRenderermanages textures for rendering, and forwards some Java calls to native Flutter code via JNI. The correspondingRenderSurfaceprovides the AndroidSurfacethat this renderer paints.FlutterSurfaceViewandFlutterTextureVieware implementations ofRenderSurface.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFlutterRenderer.DisplayFeatureDescription of a physical feature on the display.static classFlutterRenderer.DisplayFeatureStateState of the display feature.static classFlutterRenderer.DisplayFeatureTypeTypes of display features that can appear on the viewport.static classFlutterRenderer.ViewportMetricsMutable data structure that holds all viewport metrics properties that Flutter cares about.-
Nested classes/interfaces inherited from interface io.flutter.view.TextureRegistry
TextureRegistry.OnFrameConsumedListener, TextureRegistry.OnTrimMemoryListener, TextureRegistry.SurfaceTextureEntry
-
-
Constructor Summary
Constructors Constructor Description FlutterRenderer(FlutterJNI flutterJNI)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddIsDisplayingFlutterUiListener(FlutterUiDisplayListener listener)Adds a listener that is invoked whenever thisFlutterRendererstarts and stops painting pixels to an AndroidViewhierarchy.TextureRegistry.SurfaceTextureEntrycreateSurfaceTexture()Creates and returns a newSurfaceTexturemanaged by the Flutter engine that is also made available to Flutter code.voiddispatchPointerDataPacket(ByteBuffer buffer, int position)voiddispatchSemanticsAction(int id, int action, ByteBuffer args, int argsPosition)BitmapgetBitmap()booleanisDisplayingFlutterUi()Returns true if thisFlutterRendereris painting pixels to an AndroidViewhierarchy, false otherwise.booleanisSoftwareRenderingEnabled()voidonTrimMemory(int level)Callback invoked when memory is low.TextureRegistry.SurfaceTextureEntryregisterSurfaceTexture(SurfaceTexture surfaceTexture)Registers and returns aSurfaceTexturemanaged by the Flutter engine that is also made available to Flutter code.voidremoveIsDisplayingFlutterUiListener(FlutterUiDisplayListener listener)Removes a listener added viaaddIsDisplayingFlutterUiListener(FlutterUiDisplayListener).voidsetAccessibilityFeatures(int flags)voidsetSemanticsEnabled(boolean enabled)voidsetViewportMetrics(FlutterRenderer.ViewportMetrics viewportMetrics)Notifies Flutter that the viewport metrics, e.g.voidstartRenderingToSurface(Surface surface, boolean keepCurrentSurface)Notifies Flutter that the givensurfacewas created and is available for Flutter rendering.voidstopRenderingToSurface()Notifies Flutter that asurfacepreviously registered withstartRenderingToSurface(Surface, boolean)has been destroyed and needs to be released and cleaned up on the Flutter side.voidsurfaceChanged(int width, int height)Notifies Flutter that asurfacepreviously registered withstartRenderingToSurface(Surface, boolean)has changed size to the givenwidthandheight.voidswapSurface(Surface surface)Swaps theSurfaceused to render the current frame.
-
-
-
Constructor Detail
-
FlutterRenderer
public FlutterRenderer(@NonNull FlutterJNI flutterJNI)
-
-
Method Detail
-
isDisplayingFlutterUi
public boolean isDisplayingFlutterUi()
Returns true if thisFlutterRendereris painting pixels to an AndroidViewhierarchy, false otherwise.
-
addIsDisplayingFlutterUiListener
public void addIsDisplayingFlutterUiListener(@NonNull FlutterUiDisplayListener listener)Adds a listener that is invoked whenever thisFlutterRendererstarts and stops painting pixels to an AndroidViewhierarchy.
-
removeIsDisplayingFlutterUiListener
public void removeIsDisplayingFlutterUiListener(@NonNull FlutterUiDisplayListener listener)Removes a listener added viaaddIsDisplayingFlutterUiListener(FlutterUiDisplayListener).
-
createSurfaceTexture
public TextureRegistry.SurfaceTextureEntry createSurfaceTexture()
Creates and returns a newSurfaceTexturemanaged by the Flutter engine that is also made available to Flutter code.- Specified by:
createSurfaceTexturein interfaceTextureRegistry- Returns:
- A SurfaceTextureEntry.
-
registerSurfaceTexture
public TextureRegistry.SurfaceTextureEntry registerSurfaceTexture(@NonNull SurfaceTexture surfaceTexture)
Registers and returns aSurfaceTexturemanaged by the Flutter engine that is also made available to Flutter code.- Specified by:
registerSurfaceTexturein interfaceTextureRegistry- Returns:
- A SurfaceTextureEntry.
-
onTrimMemory
public void onTrimMemory(int level)
Description copied from interface:TextureRegistryCallback invoked when memory is low.Invoke this from
Activity.onTrimMemory(int).- Specified by:
onTrimMemoryin interfaceTextureRegistry
-
startRenderingToSurface
public void startRenderingToSurface(@NonNull Surface surface, boolean keepCurrentSurface)Notifies Flutter that the givensurfacewas created and is available for Flutter rendering.If called more than once, the current native resources are released. This can be undesired if the Engine expects to reuse this surface later. For example, this is true when platform views are displayed in a frame, and then removed in the next frame.
To avoid releasing the current surface resources, set
keepCurrentSurfaceto true.See
SurfaceHolder.CallbackandTextureView.SurfaceTextureListener- Parameters:
surface- The render surface.keepCurrentSurface- True if the current active surface should not be released.
-
swapSurface
public void swapSurface(@NonNull Surface surface)Swaps theSurfaceused to render the current frame.In hybrid composition, the root surfaces changes from
SurfaceHolder.getSurface()toImageReader.getSurface()when a platform view is in the current frame.
-
surfaceChanged
public void surfaceChanged(int width, int height)Notifies Flutter that asurfacepreviously registered withstartRenderingToSurface(Surface, boolean)has changed size to the givenwidthandheight.See
SurfaceHolder.CallbackandTextureView.SurfaceTextureListener
-
stopRenderingToSurface
public void stopRenderingToSurface()
Notifies Flutter that asurfacepreviously registered withstartRenderingToSurface(Surface, boolean)has been destroyed and needs to be released and cleaned up on the Flutter side.See
SurfaceHolder.CallbackandTextureView.SurfaceTextureListener
-
setViewportMetrics
public void setViewportMetrics(@NonNull FlutterRenderer.ViewportMetrics viewportMetrics)Notifies Flutter that the viewport metrics, e.g. window height and width, have changed.If the width, height, or devicePixelRatio are less than or equal to 0, this update is ignored.
- Parameters:
viewportMetrics- The metrics to send to the Dart application.
-
getBitmap
public Bitmap getBitmap()
-
dispatchPointerDataPacket
public void dispatchPointerDataPacket(@NonNull ByteBuffer buffer, int position)
-
isSoftwareRenderingEnabled
public boolean isSoftwareRenderingEnabled()
-
setAccessibilityFeatures
public void setAccessibilityFeatures(int flags)
-
setSemanticsEnabled
public void setSemanticsEnabled(boolean enabled)
-
dispatchSemanticsAction
public void dispatchSemanticsAction(int id, int action, @Nullable ByteBuffer args, int argsPosition)
-
-