Периодические проблемы с обновлением при прокрутке вверх и вниз на 9810 + Blackberry - PullRequest
3 голосов
/ 31 марта 2012

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

В верхней части находится Vertical Field Manager, который содержит еще один VerticalFieldManager (содержащий поля меток и buttonFields) и FlowFieldManager (содержащий изображения).Теперь проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я прокручиваю экран вверх и вниз, на экране появляется много серых линий.Кажется, как будто есть некоторая проблема обновления экрана с устройством.Я тестировал на предыдущей версии ОС (4.5, 4.5 4.7 5.0), на них все работает отлично.Проблема возникает на версии ОС выше 6.0.

Distorted Image

В то время как правильный экран должен выглядеть как

Correct Image

Как вы можетеэти серые линии появляются, когда я прокручиваю экран вверх и вниз.Есть идеи, как исправить эту проблему?

Ответы [ 2 ]

4 голосов
/ 31 марта 2012

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

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

Есть два способа исправить это:

  1. Отключить оптимизацию. Переопределите isScrollCopyable , чтобы вернуть false. Ваши проблемы со зрением должны исчезнуть, но производительность прокрутки пострадает.

  2. Не добавляйте эффекты пользовательского интерфейса поверх прокручиваемой области.

2 голосов
/ 12 апреля 2012

Мне очень жаль за поздний ответ. Однако я решил проблему самостоятельно. Я просто переопределил метод paintBackground в своем классе и внутри него я написал graphics.clear (). Кажется, это решает проблему с прокруткой. Я тоже попробую метод Майкла.

...