0

我有一个习惯TextureView,即所有渲染都是通过 JNI/C++ 使用 OpenGL ES 处理的。

startDragAndDrop除了方法之外,几乎所有东西都在工作。这给了我一个空的拖动视图......

查看View.DragShadowBuilder该类的源代码,我发现创建拖动视图的所有渲染逻辑都在方法内部public void onDrawShadow(Canvas canvas);基本上它将画布传递给onDraw(Canvas canvas)视图的方法。

现在的问题是TextureView没有实现该onDraw(Canvas canvas)方法。而且我无法覆盖它,因为它是最终的......

TextureView有什么方法可以在这个画布中呈现我的内容...

现在,我可以使用 a 创建位图ByteBuffer并从 OpenGL 复制缓冲区。但是我又不知道如何将此位图传递给画布......

4

1 回答 1

1

调用 canvas.drawBitmap(bitmap, 0, 0, null); 应该很简单。在 onDrawShadow 里面。如果这不起作用,您可能需要在调用 bitmap.copyPixelsFromBuffer 时检查传递给 Bitmap 的 ByteBuffer 中的数据格式,以确保它与 Bitmap.Config 匹配。

于 2018-12-20T23:56:04.170 回答