我已经知道如何解决了!
void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
if (canvas != null) {
canvas.save();
canvas.translate((float) mxOffset, 0f);
if(mBackgroundBitmap != null) {
canvas.drawBitmap(mBackgroundBitmap, 0, 0, null);
}
canvas.restore();
}
}
finally {
if (canvas != null ) holder.unlockCanvasAndPost(canvas);
}
}
mBackgroundBitmap 是我想要绘制为壁纸的位图,其宽度是屏幕宽度的两倍。
mxOffsets 是在重写的 onOffsetsChanged 中获取的:
@Override
public void onOffsetsChanged(float xOffset, float yOffset,
float xOffsetStep, float yOffsetStep, int xPixelOffset,
int yPixelOffset) {
super.onOffsetsChanged(mxOffset, yOffset, xOffsetStep, yOffsetStep,
xPixelOffset, yPixelOffset);
mxOffset = xPixelOffset;
drawFrame();
}