SurfaceHolder.lockCanvas()返回null

时间:2012-11-02 21:41:59

标签: android android-canvas surfaceholder

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

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 个答案:

答案 0 :(得分:3)

来自doc

  

返回的Canvas可以   用于绘制表面的位图。如果是,则返回null   表面尚未创建或无法编辑。你会   通常需要实现Callback.surfaceCreated来查找时间   表面可供使用。