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

时间:2013-12-16 18:17:24

标签: android android-ndk android-bitmap

我正在制作视频会议应用。

在NDK侧,我从解码器获取YUV420中的图像,因此我使用http://wss.co.uk/pinknoise/yuv2rgb/将其转换为RGB8888到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            |
|                  |
|                  |
|------------------|

最奇怪的是,这两个像素列是正确的。它们是位图每行的最后两个像素。它们在正确的位置正确呈现。

这是一个已知的错误吗?

我有什么问题吗?

1 个答案:

答案 0 :(得分:0)

似乎每个像素的alpha分量都存在问题。

在位图上调用setHasAlpha(false)解决了问题。