我正在研究动态壁纸。在此,我正在绘制位图并想要移动它们。在ATM上,只能绘制一张位图。但是在每隔一个滴答声之后(每次调用第二次“绘制”),它都会添加一个位图。
这是我从我的服务中提取的钱:
private void draw() {
SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
if (canvas != null) {
for (DrawElement element : elements) {
element.draw(canvas);
}
}
} finally {
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
}
handler.removeCallbacks(drawRunner);
if (visible) {
handler.postDelayed(drawRunner, 1000/25);
}
}
}
和我的ImageElement:
public ImageMovingObject(Context context, @DrawableRes int resource) {
this.bitmap = getResizedBitmap(BitmapFactory.decodeResource(context.getResources(), resource), 100, 100);
this.paint = new Paint();
Log.e("In Constructor", "In Constructor");
}
@Override
public void draw(Canvas canvas) {
positionX += translation;
Log.e("Position: ", positionX);
canvas.drawBitmap(bitmap, positionX, 0, paint);
}
位图应从设备的左侧移动到右侧。但是,您可以看到它创建了多个元素,所有元素都从x = 0位置开始。每次抽奖只进行一次抽签,日志仅写入最正确的一次。
我不知道我在做什么错。我的错误在哪里? 谢谢!