Livewallpaper - растровое изображение нарисовано несколько раз

Я работаю над живыми обоями. На этом я рисую растровые изображения и хочу их переместить. В банкомате нужно нарисовать только одно растровое изображение. Но после каждого второго тика (каждый раз вызывается "draw"), он добавляет растровое изображение.

Это моя ничья из моего сервиса:

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. Ничья вызывается только один раз за тик, и журнал записывает только самый правильный.

введите описание изображения здесь

Я не знаю, что я делаю не так. Где моя ошибка? Спасибо!

0 ответов

Другие вопросы по тегам