小编use*_*066的帖子

如何在SurfaceView中动态更改图像?

我使用的是默认的SurfaceView实现,代码可以在这里找到(这是一个手指绘图的应用程序示例,我只是禁用它并绘制图像).有3个主要的独立课程 -

  1. 活动类(SurfaceViewSampleActivity)
  2. SurfaceView(CanvasView)
  3. 线程类(UIThread).

SurfaceView绘制在构造函数中设置的图像(Bitmap).我还实现了用户可以调用相机应用程序并拍照的功能.图片必须交换默认图像(在SurfaceView构造函数集图像上).

我试图在我的活动类中创建一个简单的方法并设置位图,但这不起作用:

private void setImage() {
    view.bitmap = this.mImageBitmap; 

}
Run Code Online (Sandbox Code Playgroud)

我以为SurfaceView线程可能正在使用位图,所以我试图锁定变量:

private void setImage() {   
    synchronized (view.bitmap) {
        view.bitmap = this.mImageBitmap;
    }   
}
Run Code Online (Sandbox Code Playgroud)

应用程序也崩溃了.

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() );
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在调用构造函数更改SurfaceView中的位图变量?

multithreading android surfaceview

6
推荐指数
1
解决办法
1917
查看次数

标签 统计

android ×1

multithreading ×1

surfaceview ×1