Java Android应用程序因简单的绘制到画布、显示位图而崩溃
有人知道为什么上面的Android Studio代码片段会导致应用程序不断崩溃吗?我是Android Studio的新手,我想在做任何事情之前先习惯于构建矩形和形状,但似乎我在这方面也有困难Java Android应用程序因简单的绘制到画布、显示位图而崩溃,java,android,canvas,bitmap,Java,Android,Canvas,Bitmap,有人知道为什么上面的Android Studio代码片段会导致应用程序不断崩溃吗?我是Android Studio的新手,我想在做任何事情之前先习惯于构建矩形和形状,但似乎我在这方面也有困难 显示绘制值不大于0的位图时出错,但问题是在onClick中使用打印功能,从窗口或imageView中获取高度或宽度后,返回的值大于0,所以我不明白。在绘制视图之前,您在onCreate方法中获得高度和宽度,因此返回高度0,宽度0,因为android系统不知道视图的确切宽度和高度。您可以使用一些方法,如pos
显示绘制值不大于0的位图时出错,但问题是在onClick中使用打印功能,从窗口或imageView中获取高度或宽度后,返回的值大于0,所以我不明白。在绘制视图之前,您在onCreate方法中获得高度和宽度,因此返回高度0,宽度0,因为android系统不知道视图的确切宽度和高度。您可以使用一些方法,如post(Runnable)来了解视图是否已绘制。修改代码如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(this);
int height = this.getWindow().getDecorView().getHeight();
int width = this.getWindow().getDecorView().getWidth();
bitmap = Bitmap.createBitmap(height, width, Bitmap.Config.ARGB_8888 );
canvas = new Canvas(bitmap);
imageView = findViewById(R.id.imageView);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.button){
canvas.drawColor(Color.RED);
}
imageView.setImageBitmap(bitmap);
}
}
请显示您得到的错误(例如logcat…@JonGoodwin,显示绘制值不大于0的位图的错误,但问题是在onClick中使用打印功能,从窗口或imageView中获取高度或宽度后,返回的值大于0,因此我不理解人们试图关闭该问题(有充分的理由).... “寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题说明的问题对其他读者没有用”请学习如何提问。同时展示您已尝试如何解决问题。你会因此得到一枚徽章;O)
View view = this.getWindow().getDecorView();
view.post( new Runnable() {
@Override
public void run() {
width = view.getMeasuredWidth();
height = view.getMeasuredHeight();
bitmap = Bitmap.createBitmap(height, width, Bitmap.Config.ARGB_8888 );
canvas = new Canvas(bitmap);
}
});