Android 将canvas.drawBitmap()与canvas.translate()一起使用

Android 将canvas.drawBitmap()与canvas.translate()一起使用,android,canvas,android-image,Android,Canvas,Android Image,我的代码在此接收bmpX和bmpY的值,并使用它们在屏幕上的该位置绘制位图。这完全符合我的要求,但我更愿意使用canvas.translate()函数来处理图像的移动,而不仅仅是canvas.drawBitmap(),因为我将向画布应用其他绘图元素,并且我希望它们都以相同的数量和方向移动 我的问题是:我可以将代码中的canvas.drawBitmap()移动到哪里,以便它在开始时只绘制到画布上,但之后可以使用canvas.translate()随时移动它?无论我在哪里放置代码,都会将图像冻结在我

我的代码在此接收
bmpX
bmpY
的值,并使用它们在屏幕上的该位置绘制位图。这完全符合我的要求,但我更愿意使用
canvas.translate()
函数来处理图像的移动,而不仅仅是
canvas.drawBitmap()
,因为我将向画布应用其他绘图元素,并且我希望它们都以相同的数量和方向移动

我的问题是:我可以将代码中的
canvas.drawBitmap()
移动到哪里,以便它在开始时只绘制到画布上,但之后可以使用
canvas.translate()
随时移动它?无论我在哪里放置代码,都会将图像冻结在我绘制它的位置,无论我如何更改
canvas.translate()
。我想象它可以“粘贴”图像到画布上,可以说,然后移动画布,这也会随之移动图像

public void run() {
        // TODO Auto-generated method stub
        while(isRunning) {
            if(!surfaceHolder.getSurface().isValid()) {
                continue;
            }

            canvas = surfaceHolder.lockCanvas();
            canvas.drawRGB(255, 255, 255);
            canvas.drawBitmap(bmp, bmpX-(bmp.getWidth()/2), 
                                     bmpY-(bmp.getHeight()/2), null);

            //canvas.translate(bmpX, bmpY);

            surfaceHolder.unlockCanvasAndPost(canvas);

        }
}

我希望我把我的问题解释得足够清楚。谢谢

为了清楚起见,我在这里回答了我自己的问题,我离线时得到了一些ETR信息。UI不能在这样的线程上完成,我需要使用android UI线程。RunUnuUpdateThread和异步任务