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が返されます。通常、Surfaceがいつ使用可能になるかを確認するには、Callback.surfaceCreatedを実装する必要があります。

于 2012-11-02T21:45:01.410 に答える