首页 > 代码库 > 关于android的webview

关于android的webview

之前对于webview的认识很肤浅,这次正好研究一下:

  1. 在webview当中加载网址的时候,使用load.url(""),但是要记得在AndroidManifest.xml中对其进行配置。配置语句为:<uses-permission android:name="android.permission.INTERNET" />

  2. 重载shouldOverrideUrlLoading(WebView view, String url),当时链接的时候,在本软件进行加载而不是跳到浏览器那里。

  3. 返回键的处理:我们打开多个网页后,点击返回目的是返回上一个网页,但是事实上会关闭当前activity,于是要对返回键做处理.

     

    @Override  

        public boolean onKeyDown(int keyCode, KeyEvent event) {  

           if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {  

              webView.goBack();  

             return true;  

            } else  

                return super.onKeyDown(keyCode, event);  

        }  

  4. 网页前进按钮。

     

    if(webView.canGoForward()){  

                    webView.goForward();  

     }else{  

             Toast("已经是最后一页了,不能再前进了");  

     }  

  5. 点击刷新按钮的时候,执行webview.reload();

  6. 如果想在页面加载的时候添加提示信息,可以复写webclient的

    onPageStarted(WebView view, String url, Bitmap favicon){

    }

    onPageFinished(WebView view, String url){}

    例子:

     

    @Override 
                public void onPageStarted(WebView view, String url, Bitmap favicon) { 
                    if(progDlg == null || !progDlg.isShowing()){ 
                        progDlg = new ProgressDialog(ctx); 
                       progDlg.setMessage("正在加载,请稍候。。。"); 
                    } 
                   progDlg.show(); 
                } 

          @Override 
           public void onPageFinished(WebView view, String url) { 
                progDlg.dismiss(); 
            } 

7.如果想知道加载进度,需要调用另一个类WebChromeClient。

例子:

webView.setWebChromeClient(new WebChromeClient(){ 
 
            @Override 
           public void onProgressChanged(WebView view, int newProgress) { 
                Message msg = new Message(); 
                                msg.what = 200; 
                                msg.obj = newProgress; 
                                handler.sendMessage(msg); 
            } 
}

然后在handler里更新进度条。

private Handler handler = new Handler(){ 
        public void handleMessage(android.os.Message msg) { 
            switch (msg.what) { 
            case 200: 
                int progress = (Integer) msg.obj; 
                progressBar.setProgress(progress); 
               break; 
 
            default: 
               break; 
            } 
        }; 
    };