【Flutter原理】FlutterView相关源码分析(2)

private void disconnectSurfaceFromRenderer() {

flutterRenderer.stopRenderingToSurface();

}

}

​ 上面的代码逻辑相当简介易懂,可以看到,FlutterSurfaceView实际上是一个SurfaceView,用法也是跟SurfaceView一样,只是渲染数据是最终是通过flutterJNI作为桥梁实现Flutter Engine与Android View层进行数据传递实现界面绘制的。

FlutterTextureView分析

===================================================================================

与上面的FlutterSurfaceView一样,逻辑实现简洁易懂,先看看主要逻辑:

//继承自TextureView,实现RenderSurface接口

public class FlutterTextureView extends TextureView implements RenderSurface {

private final SurfaceTextureListener surfaceTextureListener =

new SurfaceTextureListener() {

@Override

public void onSurfaceTextureAvailable(

SurfaceTexture surfaceTexture, int width, int height) {

connectSurfaceToRenderer();

}

@Override

public void onSurfaceTextureSizeChanged(

@NonNull SurfaceTexture surface, int width, int height) {

changeSurfaceSize(width, height);

}

@Override

public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {

// Invoked every time a new frame is available. We don’t care.

}

@Override

public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) {

disconnectSurfaceFromRenderer();

return true;

}

};

public void attachToRenderer(@NonNull FlutterRenderer flutterRenderer) {

connectSurfaceToRenderer();

}

public void detachFromRenderer() {

disconnectSurfaceFromRenderer();

}

pr

你可能感兴趣的:(【Flutter原理】FlutterView相关源码分析(2))