我正在使用默认的 SurfaceView 实现,代码可以在这里找到(这是一个手指绘图应用程序示例,我只是禁用了它并绘制了一个图像)。有3个主要的独立类-
- 一个活动类 ( SurfaceViewSampleActivity )
- 表面视图(画布视图)
- 线程类(UIThread)。
SurfaceView 绘制在构造函数中设置的图像(位图)。我还实现了用户可以调用相机应用程序并拍照的功能。图片必须交换默认图像(在 SurfaceView 构造函数设置图像)。
我试图在我的活动类中创建一个简单的方法并设置位图,但这不起作用:
private void setImage() {
view.bitmap = this.mImageBitmap;
}
我认为 SurfaceView 线程可能正在使用位图,所以我尝试锁定变量:
private void setImage() {
synchronized (view.bitmap) {
view.bitmap = this.mImageBitmap;
}
}
应用程序也崩溃。
SurfaceView 绘制方法:
protected void onDraw(Canvas canvas) {
setPaintProperties();
if (canvas != null) {
canvas.drawColor(Color.WHITE);
synchronized ( this.bitmap ) {
canvas.drawBitmap(this.bitmap, 0, 0, new Paint() );
}
}
}
调用构造函数后,有什么方法可以更改 SurfaceView 中的位图变量?