首页 文章

SurfaceHolder.lockCanvas()返回null

提问于
浏览
2

我正在尝试使用以下代码创建一个画布并绘制一个位图:

Paint paint = new Paint();
InputStream is = assets.open("card_art" + File.separator + "texture.png");
Bitmap bitmap = BitmapFactory.decodeStream(is);
cardFrontBackingImageView = new SurfaceView(Order.getContext()).getHolder().lockCanvas();
if (cardFrontBackingImageView == null)
{
    Log.e("Canvas creation", "Canvas is null");
}
cardFrontBackingImageView.drawBitmap(bitmap, null, frame, paint);

我遇到的问题是我在代码中检查的问题 - lockCanvas()始终返回null . 随着时间的推移,我或多或少都在学习这个,所以我对SurfaceView,SurfaceHolder或Canvas的了解不足以说出我可能做错的方式;有什么建议?

1 回答

  • 3

    来自doc

    返回的Canvas可用于绘制到曲面的位图 . 如果尚未创建表面或无法编辑表面,则返回null . 您通常需要实现Callback.surfaceCreated以找出Surface何时可用 .

相关问题