Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – GL表面和可见性:已经消失了大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我的应用程序中有一个GLSurfaceView由GLSurfaceView.Renderer呈现并使用JPCt作为库.

表面处于不可见的RelativeLayout(可见性:已消失).当我将可见性更改为“可见”然后再返回“已消失”时,布局会按预期显示和隐藏,但GLSurfaceView不显示,它只显示并且不会隐藏,即使我可以单击现在的项目它背后.

这似乎是一些图形缓冲问题,但我没有找到办法让这个工作…任何想法?
谢谢!

解决方法

SurfaceView(和扩展的GLSurfaceView)是 Android中有趣的野兽.来自Android javadoc的引文:

Android有一个内置的窗口合成器(窗口在这里有一点不同的含义).您的状态栏是一个窗口,您的活动有一个窗口.但是如果你的活动包含一个表面视图,那么就会创建另一个窗口,只是为了保持表面,而Android compositor会在窗口中绘制你的视图.所以SurfaceView实际上只是一个透明区域.当你隐藏它时,区域不会被绘制,不会对触摸做出反应,但是表面窗口仍然存在,android不够聪明,无法隐藏窗口.

我会推荐两种解决方

>让你的表面半透明.然后,当您需要隐藏视图时,可以渲染空表面(Android,Transparent sub-GLSurfaceView in layout?)>完全从视图层次结构中删除视图>另一种有点hacky方式是子类化GLSurfaceView并在可见性更改为GONE时调用onDetachedFromWindow().我没有测试过它,它可能无法正常工作.

大佬总结

以上是大佬教程为你收集整理的android – GL表面和可见性:已经消失了全部内容,希望文章能够帮你解决android – GL表面和可见性:已经消失了所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。