修改android中webview的默认进度

时间:2013-01-30 10:40:43

标签: android webview

enter image description here

如何修改webview的进度条或如何在顶级webview上创建自定义进度?

2 个答案:

答案 0 :(得分:0)

要实现自定义进度条,您需要一个Runnable线程和一个消息处理程序,它将不断更新您的进度条。

检查以下代码段: -

获取进度条,然后启动新的主题

myProgressBar=(ProgressBar)findViewById(R.id.progressbar);
new Thread(myThread).start();

新主题: -

private Runnable myThread = new Runnable(){

@Override
public void run() {
while (myProgress<100){
try{
myHandle.sendMessage(myHandle.obtainMessage());
Thread.sleep(1000);
}
catch(Throwable t){
}
}
}
}

上面的try块发送的消息将在以下处理程序 handleMessage 方法中处理: -

Handler myHandle = new Handler(){

@Override
public void handleMessage(Message msg) {
myProgress++;
myProgressBar.setProgress(myProgress);
}
}

希望这有帮助!

答案 1 :(得分:0)

那是自定义进度条。如果您需要使用 Webview ,那么我认为这可以帮助您。

WebView有几个自定义点,您可以在其中添加自己的行为。他们是:

  • 创建和设置 WebChromeClient 子类。这个类叫做 例如,当某些可能影响浏览器UI的事件发生时 进度更新和JavaScript警报在此处发送。

  • 创建和设置 WebViewClient 子类。它将在何时被调用 发生的事情会影响内容的呈现,例如错误 或提交提交。你也可以在这里拦截网址加载(通过 的 shouldOverrideUrlLoading ())。

    // To display the progress in the activity title bar, like the
    // browser app does.
    getWindow().requestFeature(Window.FEATURE_PROGRESS);
    
    webview.getSettings().setJavaScriptEnabled(true); // javascript if needed.
    
    final Activity activity = this;
    webview.setWebChromeClient(new WebChromeClient() {
       public void onProgressChanged(WebView view, int progress) {
         // The progress meter will automatically disappear when we reach 100%
         activity.setProgress(progress * 1000);
       }
     });
    
     webview.setWebViewClient(new WebViewClient() {
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, "Page Load Error! " + description, Toast.LENGTH_SHORT).show();
       }
     });
    
     webview.loadUrl("http://www.stackoverflow.com");
    

请参阅this和此too以获得更清晰的信息。