gpt4 book ai didi

java - 使用 BitmapFactory 在 Canvas 上 onDraw 时出错

转载 作者:行者123 更新时间:2023-12-02 05:58:31 25 4
gpt4 key购买 nike

我想使用 bitmapFactory 在 Canvas 上绘制图像,但它给了我一个错误。

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference
at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:54)
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:226)
at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:78)
at com.example.canvastest.GameView.onDraw(GameView.java:23)

我尝试用实际的绘制对象更改空绘制,但效果不好。
我也尝试过使用 Rect 来填充空间,但效果也不好。

    private Bitmap bmp;
public GameView(Context context) {
super(context);
bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLUE);
canvas.drawBitmap(bmp, 10, 10, null);
}

最佳答案

尝试创建方法init(Context context),如下所示:

public void init(Context context) {
this.context = context;
bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
}

然后:

public GameView(Context context) {
super(context);
init(context);
}

public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}

public GameView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}

public GameView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}

关于java - 使用 BitmapFactory 在 Canvas 上 onDraw 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55992521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com