Skip to content
贾俊辉 edited this page Aug 13, 2018 · 2 revisions

Render即渲染视图,框架内包含RenderTextureView(TextureView的包装)和RenderSurfaceView(SurfaceView的包装)两种。

默认使用的是RenderTextureView,使用RenderTextureView的前提是应用的硬件加速必须是开启状态(默认是开启的),否则会出现无画面的情况。

TextureView优缺点:

  • 优点

动画支持良好,可以获取视频截图

视图不可见时可以保留当前帧不黑屏

  • 缺点

必须开启硬件加速,否则无画面,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。

SurfaceView优缺点:

  • 优点

可以在一个独立的线程中进行绘制,不会影响主线程使用双缓冲机制,播放视频时画面更流畅

  • 缺点

Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换

画面填充模式AspectRatio

  • AspectRatio_16_9(可能变形,可能黑边)

画面以16:9的比例呈现,屏幕比例与视频比例不一致时画面会变形。

  • AspectRatio_4_3(可能变形,可能黑边)

画面以4:3的比例呈现,屏幕比例与视频比例不一致时画面会变形。

  • AspectRatio_MATCH_PARENT(可能变形)

画面拉伸铺满视图,屏幕比例与视频比例不一致时画面会变形。

  • AspectRatio_FILL_PARENT(部分画面可能不可见)

画面缩放铺满视图,屏幕比例与视频比例不一致时画面等比缩放填充,会造成边缘部分看不到。

  • AspectRatio_FIT_PARENT(可能黑边)

画面等比缩放契合视图。

  • AspectRatio_ORIGIN(可能黑边)

画面以原画呈现,视频分辨率高于屏幕时以屏幕为准,低于屏幕时以视频尺寸为准。