Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android WebChromeClient

Android WebChromeClient

編輯:關於Android編程

主程序:

public class WebPageLoader extends Activity{   

      final Activity activity = this;  

      @Override  

      public void onCreate(Bundle savedInstanceState)  

      {   

          super.onCreate(savedInstanceState);   

          this.getWindow().requestFeature(Window.FEATURE_PROGRESS);  

          setContentView(R.layout.main); 

          WebView webView = (WebView) findViewById(R.id.webView); 
 

          webView.getSettings().setJavaScriptEnabled(true);

      webView.getSettings().setSupportZoom(true);
                 //點擊鏈接在當前browser中響應,而不是新開Android系統browser中響應該鏈接

          webView.setWebChromeClient(new WebChromeClient()

          {         

              public void onProgressChanged(WebView view, int progress)  

              {           

                  activity.setTitle("Loading...");      

                  activity.setProgress(progress * 100);    

                  if(progress == 100){           

                      activity.setTitle(R.string.app_name);      

                  }     

              }

          );     

          webView.setWebViewClient(new WebViewClient() {  

                      

              public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)  

              {                 // Handle the error      

                   

              }            

                     

              public boolean shouldOverrideUrlLoading(WebView view, String url)

              {             

                  view.loadUrl(url);  

                  return true;      

                  }     

              }); 

          webView.loadUrl("http://www.sohu.com"); 

          }

	}



而進度條的使用是在new出一個setWebChromeClient後,可以在內部類中寫 onProgressChanged事件


在WebView的設計中,不是什麼事都要WebView類干的,有些雜事是分給其他人的,這樣WebView專心干好自己的解析、渲染工作就行了。WebViewClient 就是幫助WebView處理各種通知、請求事件的,具體來說包括:

WebChromeClient是輔助WebView處理Javascript的對話框,網站圖標,網站title,加載進度等


判斷加載的頁面URL地址是否正確: if(URLUtil.isNetworkUrl(url)==true)

另一種情況:

應用開發中需要獲取WebView當前頁面的標題,可能通過對WebChromeClient.onReceivedTitle()方法的重寫來實現

效果圖如下:

\

代碼如下:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. public class MainActivity extends Activity {
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main_layout);
  5. final TextView txtTitle = (TextView) findViewById(R.id.txtTitle);
  6. final WebView webView = (WebView)findViewById(R.id.btnWebView);
  7. WebChromeClient wvcc = new WebChromeClient() {
  8. @Override
  9. public void onReceivedTitle(WebView view, String title) {
  10. super.onReceivedTitle(view, title);
  11. Log.d("ANDROID_LAB", "TITLE=" + title);
  12. txtTitle.setText("ReceivedTitle:" +title);
  13. }
  14. };
  15. // 設置setWebChromeClient對象
  16. webView.setWebChromeClient(wvcc);
  17. // 創建WebViewClient對象
  18. WebViewClient wvc = new WebViewClient() {
  19. @Override
  20. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  21. // 使用自己的WebView組件來響應Url加載事件,而不是使用默認浏覽器器加載頁面
  22. webView.loadUrl(url);
  23. // 消耗掉這個事件。Android中返回True的即到此為止吧,事件就會不會冒泡傳遞了,我們稱之為消耗掉
  24. return true;
  25. }
  26. };
  27. webView.setWebViewClient(wvc);
  28. final Button btnLoadWeb = (Button)findViewById(R.id.btnLoadWeb);
  29. btnLoadWeb.setOnClickListener(new Button.OnClickListener(){
  30. public void onClick(View v){
  31. webView.loadUrl("http://www.baidu.com");
  32. }
  33. });
  34. }
  35. }


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved