我正在开发一个概念键板,我需要在钥匙上删除动画阴影。
可以在子类InputMethodService
?
如果我在onCreateInputView
中使用GLSurfaceView
,如果它也使用OpenGL ES,它是否会与当前可见活动冲突?
可以通过绘制屏幕来完全避免GLSurfaceView
吗?
Android是否支持在不同但并发活动上使用多个OpenGL ES上下文?
我需要Android 2.2兼容性,因此TextureView
之类的解决方案不是一个选项。
,因为没有人认为这个问题应该得到答案或简单地理解可能的问题,所以我自己做了。
我创建了一个测试活动,该活动使用GlSurfaceView
和一些简单的片段着色器和EditText
。然后,我编辑了来自Android SDK的 SoftKeyboard 示例,以使其与另一个简单的着色器一起使用GlSurfaceView
。
测试在于启动测试活动并使用更改的软键板键入文本框。
在Android 4.2上这项工作,并且两个GlSurfaceView
均已渲染。在Android 2.3.3上,此错误失败:
E/SurfaceFlinger(1556): createNormalSurfaceLocked() failed (Invalid argument)
W/WindowManager(1556): OutOfResourcesException creating surface
I/WindowManager(1556): Out of memory for surface! Looking for leaks...
W/WindowManager(1556): No leaked surfaces; killing applicatons!
W/ActivityManager(1556): Killing processes Free memory at adjustment 1
我知道视频硬件(及其驱动程序)的并发使用可能会导致不相容性,但我不确定这是否是由于早期Android版本无法处理多个OpenGL ES上下文或其他内容(内存)金额,硬件,驱动程序,...)
一个人可以使用NDK进行调查。