Android TextureView:DrawBitmap仅显示每行的最后2个像素
我正在制作一个视频会议应用程序 在NDK方面,我从解码器中获得YUV420中的图像,因此我使用它将RGB888转换为Android位图 然后将位图打印到曲面视图中。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
一切顺利,我很高兴 现在我尝试使用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)
修复了该问题