Страница 1 из 1

Рисование блоков с задержкой между появлением каждого.

Добавлено: 14 мар 2015, 13:16
HapKOT
Есть функция, рисующая все фигуры на экране

Код: Выделить всё

protected void onDraw(Canvas canvas) {

                    if (...) {
                        canvas.drawRect(100, 100, 200, 200, p);
                        canvas.drawRect(100, 300, 200, 400, p);
                        canvas.drawRect(100, 500, 200, 600, p);
                    }
}
Нужно каждый квадрат рисовать по очереди с интервалом 0.5 сек.
Делаю так

Код: Выделить всё


                    if (...) {
                        epoch[0] = System.currentTimeMillis()+500;
                        while (System.currentTimeMillis() <= epoch[0]) {

                        }
                        canvas.drawRect(100, 100, 200, 200, p);

                        epoch[1] = System.currentTimeMillis()+500;
                        while (System.currentTimeMillis() <= epoch[1]) {

                        }
                         canvas.drawRect(100, 300, 200, 400, p);

                        epoch[2] = System.currentTimeMillis()+500;
                        while (System.currentTimeMillis() <= epoch[2]) {

                        }
                        canvas.drawRect(100, 500, 200, 600, p);
                    }

Но 3 блока рисуются вместе после задержки в 1.5 сек.
Тогда, подумал, нужно перерисосывать после каждой задержки.
Сделал так

Код: Выделить всё


                    if (...) {
                        epoch[0] = System.currentTimeMillis()+500;
                        while (System.currentTimeMillis() <= epoch[0]) {

                        }
                        canvas.drawRect(100, 100, 200, 200, p);
                        invalidate();

                        epoch[1] = System.currentTimeMillis()+500;
                        while (System.currentTimeMillis() <= epoch[1]) {

                        }
                        canvas.drawRect(100, 300, 200, 400, p);
                        invalidate();

                        epoch[2] = System.currentTimeMillis()+500;
                        while (System.currentTimeMillis() <= epoch[2]) {

                        }
                        canvas.drawRect(100, 500, 200, 600, p);
                        invalidate();
                    }

Но 3 блока так же рисуются вместе после задержки в 1.5 сек.

Как сделать появление блоков по очереди с задержкой между каждым 0.5 сек?

Re: Рисование блоков с задержкой между появлением каждого.

Добавлено: 14 мар 2015, 13:52
doter.ua
По логике protected void onDraw(Canvas canvas) { это "1 кадр". Подготавливаешь все что нужно вывести и он выводит.
Как вариант можно сделать глобальную переменную, которая будет следить за отрисовкой.
Быдло код конечно, но я так сходу придумываю:

Код: Выделить всё

int frame = 1;
...
protected void onDraw(Canvas canvas) { 
...
if( frame == 1) рисуем фигуру1;
if( frame == 2) рисуем фигуру2;
if( frame == 3) рисуем фигуру3;

frame++;
...
Только вот не знаю нужно ли повторно рисовать фигуры добавленные ранее. Т.е. каждый новый кадр обнуляет старый либо добавляет контент поверх старого.