Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SurfaceView多次绘制位图_Android_Surfaceview_Surfaceholder - Fatal编程技术网

Android SurfaceView多次绘制位图

Android SurfaceView多次绘制位图,android,surfaceview,surfaceholder,Android,Surfaceview,Surfaceholder,我正在尝试在surfaceView中绘制位图,我可以成功绘制,但我需要根据其他一些用户移动在屏幕上移动该位图,但当我设置 canvas.drawColor(Color.TRANSPARENT); canvas.drawBitmap(bitmap, left, top, null); 它在屏幕上多次绘制相同的位图 但当我这样做的时候 canvas.drawColor(Color.GREEN); canvas.drawBitmap(bitmap, left, top, null); 它可

我正在尝试在surfaceView中绘制位图,我可以成功绘制,但我需要根据其他一些用户移动在屏幕上移动该位图,但当我设置

 canvas.drawColor(Color.TRANSPARENT);
 canvas.drawBitmap(bitmap, left, top, null);
它在屏幕上多次绘制相同的位图

但当我这样做的时候

 canvas.drawColor(Color.GREEN);
 canvas.drawBitmap(bitmap, left, top, null);
它可以正常工作,只绘制一个位图并移动它,但我需要透明的背景,而不是彩色的

代码

公共类DotsSurfaceView扩展了SurfaceView,实现了SurfaceHolder.Callback{ 私人土地持有人; 创建私有布尔值; 位图

@Override
public void surfaceCreated(SurfaceHolder holder) {
    // draw();
    created = true;
}

@Override
// This is always called at least once, after surfaceCreated
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    // draw();
    created = true;
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}

public DotsSurfaceView(Context context) {
    super(context);
    holder = getHolder();         
    holder.addCallback(this);
    holder.setFormat(PixelFormat.TRANSPARENT);
    Drawable drawable = ARTrackingActivity.contexti.getDrawable(R.drawable.ic_tune_black_24px);
    bitmap =Utils.drawableToBitmap(drawable);
}

public void draw(float left, float top) {
    Canvas canvas = null;
    try {
        canvas = holder.lockCanvas();

        synchronized (holder) {
            draw2(canvas, left, top);
        }
    } finally {
        if (canvas != null) {
            holder.unlockCanvasAndPost(canvas);
        }
    }
}


public void draw2(Canvas canvas, float left, float top) {
    if (created) {
        canvas.drawColor(Color.TRANSPARENT);
        canvas.drawBitmap(bitmap, left, top, null);
    }
}

}

您能发布DotsSurface视图的完整来源吗?最好看到exteded类/EDITED:我添加了完整的源代码你能发布DotsSurfaceView的完整源代码吗?最好看到exteded类/EDITED:我添加了完整的源代码