我正在开发一个概念键盘,我需要在键上放置动画阴影。
在对InputMethodService
进行子类化时可以使用OpenGL ES吗?
如果我在GLSurfaceView
中使用onCreateInputView
,如果它也使用OpenGL ES,它是否会与当前的可见活动发生冲突?
在屏幕外绘图可以完全避免GLSurfaceView
吗?
Android是否支持在不同但并发的活动中使用多个OpenGL ES上下文?
我需要Android 2.2兼容性,因此TextureView
等解决方案不是一种选择。
答案 0 :(得分:1)
由于没有人认为这个问题值得回答或只是理解可能的问题,我自己就做了。
我创建了一个测试活动,该活动使用GlSurfaceView
和一些简单的片段着色器和EditText
。
然后我编辑了Android SDK中的 SoftKeyboard 示例,使其使用另一个简单着色器的GlSurfaceView
。
测试包括启动测试活动并使用更改的 SoftKeyboard 键入文本框。
在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。