我正在从屏幕顶部移动图像,直到它到达屏幕底部,以使其具有类似落针的效果。它工作正常,但问题在于动画效果。我希望这尽可能平滑,但我很容易在这种下降效果中找到混蛋。
我使用了 Surfaceview 和线程来实现这一点。线程不断将图像的位置更新一个像素,并调用 Surfaceview 的 onDraw(canvas) 方法,在该方法中绘制具有更新坐标的图像。
这是一些代码片段。首先是绘图线程不断更新我的图像坐标一些像素。
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);
这似乎很简单,但有一些混蛋,我正在寻找一些方法来避免这些混蛋。
提前致谢。