Есть ли способ заставить WebView обновлять свое изображение (представление) при прокрутке? - PullRequest
6 голосов
/ 08 февраля 2012

Если я запускаю какой-то javascript на WebView во время прокрутки WebView (с пальцем на экране), представление не обновляется с новым внешним видом, пока палец не будет снят с устройства и прокрутка останавливается.

Чтобы проверить это, я переопределяю onScroll в WebView и там я вызываю некоторый javascript, который меняет фон страницы на случайный цвет. Это вызывается снова и снова, пока страница прокручивается. Поэтому при прокрутке он должен быстро мигать разными цветами.

Однако на Nexus S с Gingerbread и Galaxy Nexus с сэндвичем с мороженым цвет обновляется только после остановки прокрутки.

Но в Xoom с Honeycomb цвет постоянно обновляется при прокрутке. Это желаемый результат.

Есть ли какие-либо идеи о том, что отличается на других устройствах и как заставить WebView обновляться при прокрутке, как это делал Xoom?

Спасибо!

Дополнительная информация: Просто чтобы заметить, что javascript получен и активирован во время прокрутки, но изображение, показывающее эти изменения, не появится, пока не закончится прокрутка. Например, если вызываемый вами javascript - "console.log ('rawr');" логи при прокрутке появляются.

Нашли что-то в исходном коде Существует WebView метод с именем startDrag () , который вызывает WebViewCore.pauseUpdatePicture (mWebViewCore) , который отключает изображение от обновления во время прокрутки. В 3.0 они представили WebSetting setEnabledSmoothTransition () , который вы можете видеть в коде 4.0, позволяет отключить паузу. Тем не менее, это доступно только 3,0 и выше, что означает менее 3% в диких устройствах. Пока я не вижу способа обойти это в устройствах до 3.0 .....: (

Ответы [ 3 ]

0 голосов
/ 12 февраля 2012

Вы можете использовать OnTouchListener для перехвата действия пальца на полосе прокрутки, перерисовать графику и затем передать движение пальца обратно на полосу прокрутки перед выходом из onTouchListener.

0 голосов
/ 16 февраля 2012

Что вы можете попробовать, так это реализовать OnTouchListener для вашего WebView через вызов onTouchEvent yourWebView. invalidate ();Это заставит View перерисовать себя.

0 голосов
/ 08 февраля 2012

Я считаю, что когда прокручивались версии Android 2.x, чтобы сделать его быстрее, экран превращался в растровое изображение и прокручивался вместо перерисовки каждого вида, который потенциально может быть на экране. поэтому, если вы не переопределите это, цвета перестанут рисоваться, пока прокрутка не прекратится

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