即使WebView已满载,Progress Bar也不会消失

时间:2014-12-13 22:48:23

标签: android webview

我使用Android Devs(This)提供的示例实现了一个进度条,即使WebView似乎已完全加载并且在离开页面后它仍然存在,它似乎也不会消失。

我希望每次加载URL时都会显示进度条(即微调器)。

我对此很新,所以请保持温柔!

Logcat不断输出: 12-13 23:12:42.092 1630-1674/se.welovecode.tismatapp E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000b44 12-13 23:12:42.105 1630-1674/se.welovecode.tismatapp E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000bd0 12-13 23:12:42.125 1630-1674/se.welovecode.tismatapp E/eglCodecCommon﹕ **** ERROR unknown type 0x0 (glSizeof,72)

我的主要活动:`

package se.welovecode.tismatapp;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

@SuppressLint("SetJavaScriptEnabled") public class MainActivity extends ActionBarActivity {

    WebView myWebView;
    ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final WebView myWebView = (WebView) findViewById(R.id.webview);
        myWebView.loadUrl("http://www.welovecode.se/t-matapp");
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                view.loadUrl("file:///android_asset/index.html");
            }
        });

        final Activity activity = this;
        myWebView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                // Activities and WebViews measure progress with different scales.
                // The progress meter will automatically disappear when we reach 100%
                activity.setProgress(progress * 1000);
            }
        });


    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }


}

1 个答案:

答案 0 :(得分:0)

我认为你只是错误地调整了进度值。

WebChromeClient报告进度as a percentage, in the 0-100 range

  

newProgress - 当前页面加载进度,由整数表示   在0到100之间。

同时,setProgress()需要a number in the 0-10000 range

  

进度条的进度。有效范围为0到10000   (包括在内)。 如果给出10000,则进度条将为   完全填满并将淡出

因此,您应该乘以100,而不是1000。

    public void onProgressChanged(WebView view, int progress) {
        activity.setProgress(progress * 100);
    }