2012-02-08 59 views
6

如果我運行上的WebView一些javascript而WebView被滾動(屏幕上的手指)時,視圖不與新的外觀,直到手指從裝置和滾動停止解除更新。有沒有辦法強制WebView更新其圖片(視圖),而滾動?

爲了測試這個,我在WebView中覆蓋了onScroll,在那裏我調用了一些javascript,它將頁面背景改爲隨機顏色。當頁面滾動時,這會一遍又一遍地被調用。所以它應該在您滾動時快速閃爍不同的顏色。

然而,在Nexus S的薑餅和Galaxy Nexus的冰淇淋三明治的顏色滾動停止僅更新時。

但是在帶蜂窩的Xoom上,隨着滾動,顏色會不斷更新。這是理想的結果。

什麼是對其他設備,以及如何強制的WebView進行自我更新,而滾動的Xoom做的方式不同的任何想法?

謝謝!

更多信息:只需注意,在滾動過程中會收到並制定javascript,但顯示這些更改的圖片直到滾動結束纔會顯示。例如,如果您調用的JavaScript是「console.log('rawr');」滾動時出現日誌。

源代碼找到東西有一種WebView方法稱爲startDrag()調用WebViewCore.pauseUpdatePicture(mWebViewCore)禁用從在滾動更新的圖片。在3.0中,他們介紹了您可以在4.0代碼中看到的WebSetting setEnabledSmoothTransition(),允許您禁用暫停。然而,這隻有3.0以上,這意味着在野外設備中不到3%。到目前爲止,我沒有看到任何方式來解決這個在3.0之前的設備...... :(

回答

0

我相信,當android 2.x版本滾動,使其更快,屏幕變成了一個位圖這是滾動的,而不是重新繪製每個視圖可能會在屏幕上,所以除非你重寫這個,顏色將停止繪製,直到滾動停止

+0

奇怪的是,我在Xoom上有3.1,它的工作原理與我想要的完全一樣。所以也許他們改變了他們的做法,然後再改回來,然後再改回來。關於如何「超越這個」的任何想法?謝謝! – cottonBallPaws 2012-02-08 04:15:50

0

你可以使用一個OnTouchListener來攔截手指在滾動條上的動作,重新繪製圖形,然後在退出onTouchListener之前將手指移回滾動條。

+0

你將如何重繪圖形?我想讓Webview重新繪製其內容,即網頁內容。 – cottonBallPaws 2012-02-12 06:15:08

0

您可以嘗試的是爲您的Web實現OnTouchListener查看int onTouchEvent調用你的WebView。 invalidate(); 這會強制視圖重繪自己。

+0

我試過這個有一些希望,但唉invalidate()似乎並沒有強制WebView重繪其圖片,它仍然等待,直到滾動完成。 – cottonBallPaws 2012-02-16 21:02:24

相關問題