如何使onDraw绘图更流畅

时间:2012-04-23 11:55:27

标签: android multithreading surfaceview smooth ondraw

我正在从屏幕顶部移动图像,直到它到达屏幕底部,给它一个像效果一样的掉针。它工作正常,但问题在于动画效果。我希望它尽可能顺利,但我很容易在这种下降效果中找到混蛋。

我使用了Surfaceview和一个线程来实现这一目标。线程继续将图像的位置更新一个像素,并调用Surfaceview的onDraw(画布)方法,其中绘制了具有更新坐标的图像。

以下是一些代码段。首先是不断更新我的图像坐标的绘图线程。

while(mRun){
    canvas = null;
    try{
        canvas = mSurfaceHolder.lockCanvas();
        //increment the coordinate by 5 pixels
            image.getCoordinate.setX(image.getCoordinate.getX + 5);
            image.getCoordinate.setY(image.getCoordinate.getY + 5);

        synchronized (mSurfaceHolder) {

            //call onDraw method to update position on canvas
            mPanel.onDraw(canvas);
        }

    }finally{
        if(canvas != null){
            mPanel.getSurfaceHolder().unlockCanvasAndPost(canvas);
        }
    }
}

然后我的SurfaceView类中的onDraw方法在画布上绘制更新的图像:

canvas.drawBitmap(image, image.getCoordinate().getX(),image.getCoordinate().getY(), null);

这似乎很简单,但有混蛋,我正在寻找一些方法来避免这些混蛋。

提前致谢。

1 个答案:

答案 0 :(得分:0)

@Saurabh Pareek:感谢好友给你的好建议。

我在模拟器上测试了同样的东西。但是当我试图在设备上运行相同的时候,它运行正常。没有混蛋和相当不错的动画。