Android中使用WebView, WebChromeClient和WebViewClient載入網頁

來源:互聯網
上載者:User

在android應用中,有時要載入一個網頁,如果能配上一個進度條就更好了,而android 
中提供了其很好的支援,下面是一個例子程式,先帖: 

<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 


主程式: 

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);  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");    }   }


 要注意的是,其中的webView的一系列用法,比如 webView.getSettings().setJavaScriptEnabled(true);設定可以使用javscript; 

webView.getSettings().setJavaScriptEnabled(true);   webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);   webView.setHorizontalScrollBarEnabled(false);   webView.getSettings().setSupportZoom(true);   webView.getSettings().setBuiltInZoomControls(true);   webView.setInitialScale(70);   webView.setHorizontalScrollbarOverlay(true);  

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

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

onLoadResource

onPageStart

onPageFinish

onReceiveError

onReceivedHttpAuthRequest

WebChromeClient是輔助WebView處理Javascript的對話方塊,網站表徵圖,網站title,載入進度等

onCloseWindow(關閉WebView)

onCreateWindow()

onJsAlert (WebView上alert是彈不出來東西的,需要定製你的WebChromeClient處理彈出)

onJsPrompt

onJsConfirm

onProgressChanged

onReceivedIcon

onReceivedTitle

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.