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 的了解不够,无法以一种或另一种方式说出我可能做错了什么;有什么建议么?

4

1 回答 1

3

文档

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

于 2012-11-02T21:45:01.410 回答