surfaceview遮挡了上面的控件显示的解决方法
2016-12-21 20:11
781 查看
最近在项目中使用到surfaceview做视频的实时流,遇到一个很奇葩的效果 ,在使用surfaceview因为surfaceview是双缓存机制,所以他需要设置
让他显示在所依赖的窗口的最顶层才能更好的显示
这个是在surfaceview里面找到的源码。
遇到这样的情况的解决办法是在surfaceview调用
setZOrderOnTop(true)之后调用 setZOrderMediaOverlay(true)就可以了覆盖在surfaceview就会显示出来了 ,点击事件也同样的响应。
这是setZOrderMediaOverlay(true)的源码。
看这两个源码,看他注释应该就很容易懂了
setZOrderOnTop(true);
让他显示在所依赖的窗口的最顶层才能更好的显示
这个是在surfaceview里面找到的源码。
遇到这样的情况的解决办法是在surfaceview调用
setZOrderOnTop(true)之后调用 setZOrderMediaOverlay(true)就可以了覆盖在surfaceview就会显示出来了 ,点击事件也同样的响应。
/** * Control whether the surface view's surface is placed on top of another * regular surface view in the window (but still behind the window itself). * This is typically used to place overlays on top of an underlying media * surface view. * * <p>Note that this must be set before the surface view's containing * window is attached to the window manager. * * <p>Calling this overrides any previous call to {@link #setZOrderOnTop}. */ public void setZOrderMediaOverlay(boolean isMediaOverlay) { mWindowType = isMediaOverlay ? WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY : WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA; }
这是setZOrderMediaOverlay(true)的源码。
看这两个源码,看他注释应该就很容易懂了
相关文章推荐
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
- iOS开发手记 - iOS9.3 UINavigationController添加后不显示storyboard中viewcontroller里的控件的解决方法
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
- Android开发中使用WebView控件显示找不到网页的解决方法
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
- Android平台上面输入法遮挡问题的解决方法
- 解决FLASH与DIV覆盖遮挡以及FF无法显示innerHTML等元素的方法
- android pc连接手机devices view下不显示设备的解决方法
- Android的webview显示页面格式不正确的解决方法
- div层跨越iframe帧显示在上面的解决方法附代码
- extjs 中的日期输入控件不显示数据的解决方法(datefield)
- SurfaceView绘制触摸轨迹出现闪烁的解决方法一
- C# 动态生成窗口中的控件不显示的解决方法
- SurfaceView绘制触摸轨迹闪烁的解决方法二
- MFC/VC6.0 ClassView视图中无法显示某个类的解决方法
- MFC/VC6.0 ClassView视图中无法显示某个类的解决方法
- 关于ModalPopupExtender控件不能居中显示的一些解决方法
- android的textview显示音标问题解决方法