Простые живые обои для Android с последовательностью изображений — обновлено с помощью кода

Я хотел бы разработать простые живые обои с последовательностью изображений. Единственная необходимая анимация — это постепенное появление и исчезновение каждого изображения.

Все учебники, которые я нашел в Интернете для LWP, демонстрируют, как использовать холст Draw для причудливой анимации и рисования. Это не обязательно для моего приложения, я хочу только перебирать коллекцию изображений.

Будучи начинающим программистом, мне нужна помощь, чтобы научиться перебирать массив изображений и отображать их в качестве обоев.

Может ли кто-нибудь поделиться кодом или указать мне хороший учебник для этого?

ОБНОВЛЕНИЕ

LWP загружается на моем устройстве, но обои не меняются. Он застрял на образе 3, железный человек

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

public class Wallpaper extends WallpaperService {
public void onCreate() {
    super.onCreate();
}

public void onDestroy() {
    super.onDestroy();
}

public Engine onCreateEngine() {
    return new CercleEngine();
}

class CercleEngine extends Engine {

    private final Handler handler = new Handler();
    private final Runnable drawRunner = new Runnable() {
        @Override
        public void run() {
            draw();
        }
    };
    private boolean visible = true;
    public Bitmap image1, image2, image3;

    CercleEngine() {
        image1 = BitmapFactory.decodeResource(getResources(),
                R.drawable.batman);
        image2 = BitmapFactory.decodeResource(getResources(),
                R.drawable.captainamerica);
        image3 = BitmapFactory.decodeResource(getResources(),
                R.drawable.ironman);
    }


    public void onCreate(SurfaceHolder surfaceHolder) {
        super.onCreate(surfaceHolder);
    }

    @Override
    public void onVisibilityChanged(boolean visible) {
        this.visible = visible;
        if (visible) {
            handler.post(drawRunner);
        } else {
            handler.removeCallbacks(drawRunner);
        }
    }

    @Override
    public void onSurfaceDestroyed(SurfaceHolder holder) {
        super.onSurfaceDestroyed(holder);
        this.visible = false;
        handler.removeCallbacks(drawRunner);
    }

    public void onOffsetsChanged(float xOffset, float yOffset, float xStep,
            float yStep, int xPixels, int yPixels) {
        draw();
    }

    void draw() {
        final SurfaceHolder holder = getSurfaceHolder();

        Canvas c = null;
        try {
            c = holder.lockCanvas();
            if (c != null) {
                c.drawBitmap(image1, 0, 0, null);
                c.drawBitmap(image2, 0, 0, null);
                c.drawBitmap(image3, 0, 0, null);
            }
        } finally {
            if (c != null)
                holder.unlockCanvasAndPost(c);
        }

        handler.removeCallbacks(drawRunner);
        if (visible) 
        {
           handler.postDelayed(drawRunner, 1000); // delay 1 sec
        }

    }
}

person tiptopjat    schedule 03.07.2012    source источник


Ответы (1)


Не существует простого способа обхода массива изображений. Это пришлось бы делать вручную.

Один из подходов, который вы могли бы принять, состоит в том, чтобы хранить ваши изображения в /res/drawable, а затем использовать массив int[] для хранения остатков изображений, а затем перебирать их.

Подробное руководство по живым обоям можно найти здесь: http://www.vogella.com/articles/AndroidLiveWallpaper/article.html

Удачи

person Raul-    schedule 03.07.2012
comment
Я посмотрел учебник vogella. У меня на телефоне установлены живые обои, но они остаются на одном изображении. Я поделюсь своим кодом. - person tiptopjat; 03.07.2012
comment
@tiptopjat, вы можете разработать живые обои с последовательностью изображений с эффектом постепенного появления и исчезновения. Я также столкнулся с той же проблемой, не могли бы вы помочь мне, пожалуйста. - person Miracle; 17.12.2012