Android TextureView:DrawBitmap仅显示每行的最后2个像素

Android TextureView:DrawBitmap仅显示每行的最后2个像素,android,android-ndk,android-bitmap,Android,Android Ndk,Android Bitmap,我正在制作一个视频会议应用程序 在NDK方面,我从解码器中获得YUV420中的图像,因此我使用它将RGB888转换为Android位图 然后将位图打印到曲面视图中。 一切顺利,我很高兴 现在我尝试使用textureview而不是surfaceview(以简化视图层次结构/合成)。我有一个非常奇怪的结果:只渲染位图的最后到像素。它们被渲染到位 Canvas canvas = lockCanvas(); if (canvas == null) return ; canvas.drawRGB

我正在制作一个视频会议应用程序

在NDK方面,我从解码器中获得YUV420中的图像,因此我使用它将RGB888转换为Android位图

然后将位图打印到曲面视图中。
一切顺利,我很高兴

现在我尝试使用textureview而不是surfaceview(以简化视图层次结构/合成)。我有一个非常奇怪的结果:只渲染位图的最后到像素。它们被渲染到位

Canvas canvas = lockCanvas();
if (canvas == null)
    return ;

canvas.drawRGB(0, 0, 0);
canvas.save();
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.restore();
unlockCanvasAndPost(canvas);
当纹理视图应渲染时:

|------------------|
|xxxxxx            |
|xxxxxx            |
|xxxxxx            |
|                  |
|                  |
|------------------|
这就是它呈现的内容

|------------------|
|    xx            |
|    xx            |
|    xx            |
|                  |
|                  |
|------------------|
最奇怪的是,这两个像素列是正确的。它们是位图每行的最后两个像素。它们在正确的位置正确渲染

这是已知的bug吗


有什么我做错了吗?

似乎是每个像素的alpha分量有问题

在位图上调用
setHasAlpha(false)
修复了该问题