我想使用bitmapFactory在画布上绘制图像,但这给了我一个错误。
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);
}
答案 0 :(得分:0)
尝试创建方法 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);
}