在canvas.translate()中使用canvas.drawBitmap()

时间:2013-04-04 13:51:58

标签: android canvas android-image

我的代码在此处收到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);

        }
}

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

1 个答案:

答案 0 :(得分:0)

为了清楚起见,在这里回答我自己的问题,我离线了。 UI不能在这样的线程上完成,我需要使用android UI线程代替。 runOnUIUpdatethread和async tasks