關於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; 
            } 
        }; 
    };

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章