Задержка отображения полей в менеджере (blackberry) - PullRequest
0 голосов
/ 20 мая 2011

У меня есть цикл добавления полей в менеджер, я пытаюсь задержать время между тем, когда каждое поле отображается на экране.Я пробовал код ниже, но он просто рисует менеджер, когда все поля были добавлены к нему.Возможно ли это?

manager.add(field);
manager.invalidate();//force a repaint of the manager
Thread.sleep(1000);

Спасибо

1 Ответ

2 голосов
/ 20 мая 2011

Invalidate не обязательно вызывает рисование, оно просто говорит о том, что на следующей краске поле (или менеджер в вашем случае) необходимо перерисовать.Это тонкая разница, но это может вызвать путаницу.Вы можете попробовать Screen.doPaint(), что заставит весь экран перерисоваться.Кроме того, размещение sleep () в вашей ветке событий не поможет, потому что рисование также выполняется в той же нити.

Если вы пытаетесь последовательно добавить поля к своему менеджеру с этой второй задержкой, вы должны поместить эту логику в свой собственный поток и выполнить synchronized(UiApplication.getEventLock()){//add fields} при вызове manager.add (поле).Затем вы можете позвонить своему Thread.sleep(1000), чтобы правильно отобразить задержку.Также, как и некоторая добавленная информация, вызов add() по своей сути вызывает вызов invalidate (), поэтому вам не нужно его добавлять.Вот простой пример второй задержки при добавлении

protected void addDelayedFields() {
    Thread t = new Thread( new Runnable() {
        public void run() {
            for(int i=0;i<SOME_LIMIT;i++) {
                synchronized(UiApplication.getEventLock()) {
                    manager.add(new LabelField(i.toString());
                }
                try{
                    Thread.sleep(1000);
                }
                catch(Exception e){ }
            }
        }
    });
    t.start();
}

Рисование должно происходить после добавления (), но если этого не произойдет, вы также можете позвонить yourScreen.doPaint()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...