本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
SurfaceView
和 TextureView
是 Android 应用开发中用于显示内容的两种常用视图,尤其是在需要呈现视频或其他图形内容时。理解它们的作用和区别对于在不同场景下选择合适的视图非常重要。
SurfaceView
作用:
SurfaceView
提供了一种将内容直接绘制到屏幕上的方式,主要用于高效显示频繁更新的内容,比如视频、游戏图形等。
特点:
- 默认在独立的窗口(Surface)中绘制:
SurfaceView
创建一个独立的窗口,通过一个独立的Surface
进行绘制,绘制过程和主线程分离,减少卡顿。 - 较低延迟:由于
SurfaceView
使用独立的表面,它的绘制操作会更加顺畅高效,适合需要高帧率的场景。 - 不支持变换(Translation、Rotation 等):
SurfaceView
不支持像普通视图一样进行移动、缩放、旋转等变换操作,因为这些操作需要从根本上重排独立的Surface
。
使用场景:
- 视频播放
- 高性能游戏图形渲染
val surfaceView = findViewById<SurfaceView>(R.id.surfaceView)
val holder = surfaceView.holder
holder.addCallback(objec