0

我的代码在这里接收一个值bmpXbmpY使用它们在屏幕上的该位置绘制位图。这完全符合我的要求,但我宁愿使用该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);

        }
}

我希望我足够清楚地解释了我的问题。谢谢!

4

1 回答 1

0

为了清楚起见,在我离线后回答我自己的问题。UI 不能在这样的线程上完成,我需要使用 android UI 线程。runOnUIUpdatethread 和异步任务

于 2013-04-11T11:14:22.580 回答