当屏幕加载并滚动到特定位置时防止闪烁

时间:2012-05-13 15:23:05

标签: android android-webview flicker android-scroll

目标 - 我想在webview加载网页后滚动(0,60)。至少我想防止网页加载完成时看到的闪烁。闪烁 - 当webview加载网址(例如wiki)时,用户可以滚动浏览文本。但是,webview在完成加载时会自动滚动到顶部。这不会发生在标准浏览器上。我的目标是API 8.(旧的,但人们仍在使用该版本)。

以下是一些代码:

private class WebBrowserWebViewClient extends WebViewClient 
{   
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        Log.d(TAG, "Load URL");
        view.loadUrl(url);                                 
        return true;                
    }

    @Override
    public void onPageFinished(WebView view, String url) 
    {
        super.onPageFinished(view, url);

        Log.d(TAG, "Page Finished Loading");

        //Attempt scrollTo here does not work.
        view.scrollTo(0, 60);
    }            
}

我还创建了一个图片监听器。

mWebView.setPictureListener(new PictureListener()
{               
        @Override
        public void onNewPicture(WebView view, Picture picture) 
        {
            Log.d(TAG, "On New Picture called....Y is " + view.getScrollY());

                //Does not work because it is called multiple times         
                view.scrollTo(0, 60);
            }       
});

我还继续进步

mWebView.setWebChromeClient(new WebChromeClient()
{
       @Override
       public void onProgressChanged(WebView view, int newProgress) 
       {
            super.onProgressChanged(view, newProgress);

            Log.d(TAG,"On PRogress Changed. New Prgoress = " + newProgress);
       }
});

所以我注意到Log调试是在webview完成加载URL之前调用onPageFinished()。 onNewPicture()被调用多次,具体取决于URL中的图片数量,并在调用onPageFinsiehd()后调用。 onProgressChanged()newProgress总是达到100然后停止。在onProgressChanged()达到100并且onNewPicture触发后,webview将滚动回到顶部。

问题 - 如何防止webview滚动回到顶部?

注意 - 我见过有关类似问题的其他帖子,但没有人解决此问题。

0 个答案:

没有答案