文章

SurfaceView

SurfaceView

SurfaceView 调用 setZOrderOnTop(true) 遮挡其他控件

[TOC]

setZOrderOnTop

setZOrderOnTop,控制这个 surfaceView 是否被放在窗口顶层。通常,为了使它与绘图树整合,它被放在窗口之后。通过这个函数,你可以使 SurfaceView 被放在窗口顶层。这意味着它所在的窗口的其他内容都不可见。(注: 可以设置 surfaceView 透明来使其他内容可见)

这个函数必须在窗口被添加到窗口管理器之前设置。
要实现 SurfaceView 透明,需要设置 setZOrderOnTop(true),就是说必须把 SurfaceView 置于 Activity 显示窗口的最顶层才能正常显示,然后调用了 SurfaceView.setZOrderOnTop(true) 又导致了自定义的其他控件比如播放、快进等按钮被遮挡。

setZOrderMediaOverlay

疑问

  1. 如果设置 setZOrderOnTop,可以透明,但会把其他挡住
  2. 设置 setZOrderMediaOverlay,背景黑屏

SurfaceView 堆叠

存在问题

面试题

SurfaceView, TextureView 及 View 的区别。SurfaceView 怎么控制它处于的层级?

TextureView 是在主线程渲染吗?

本文由作者按照 CC BY 4.0 进行授权