1、因爲要加載網頁,先給應用添加網絡權限。
<uses-permission android:name="android.permission.INTERNET"/>2、在佈局文件中添加WebView控件。
<WebView android:id="@+id/mWebView" android:layout_width="match_parent" android:layout_height="match_parent"> </WebView>3、在代碼中找到該控件。
mWebView = (WebView) findViewById (R.id.mWebView);4、直接加載網頁,這時運行項目,發現是打開系統網頁,而不是在我們的WebView中呈現出來。
mWebView.loadUrl ("http://www.baidu.com");5、要解決這個問題,需要設置WebViewClient對象,在shouldOverridUrlLoading()方法中,調用view.loadUrl(url)方法即可。
mWebView.setWebViewClient (new WebViewClient (){ @Override public boolean shouldOverrideUrlLoading (WebView view, String url) { view.loadUrl (url); return true; } //加載頁面出錯時回調 @Override public void onReceivedError (WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError (view, request, error); } //加載資源 @Override public void onLoadResource (WebView view, String url) { super.onLoadResource (view, url); } //頁面加載完成後回調 @Override public void onPageFinished (WebView view, String url) { super.onPageFinished (view, url); } });6、當加載了網頁,我們可以點擊跳轉到其它網頁,如果想回到上一頁時,發現點擊返回鍵就直接退出APP了,要解決這個問題,可以重新監聽返回鍵。
@Override public boolean onKeyDown (int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)&&mWebView.canGoBack ()){ mWebView.goBack (); return true; } return super.onKeyDown (keyCode, event); }7、關於WebView的一些設置。
WebSettings webSettings = mWebView.getSettings (); webSettings.setJavaScriptEnabled (true);//支持JS //將圖片調整到適合webview的大小 webSettings.setUseWideViewPort (false); //支持縮放 webSettings.setSupportZoom (true); //支持內容重新佈局 webSettings.setLayoutAlgorithm (WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //支持多窗口 webSettings.supportMultipleWindows (); //關閉webview中緩存 webSettings.setCacheMode (WebSettings.LOAD_CACHE_ELSE_NETWORK); //設置可以訪問文件 webSettings.setAllowContentAccess (true); //設置支持縮放 webSettings.setBuiltInZoomControls (true); //支持通過JS打開新窗口 webSettings.setJavaScriptCanOpenWindowsAutomatically (true); //縮放至屏幕的大小 webSettings.setLoadWithOverviewMode (true); //設置支持自動加載圖片 webSettings.setLoadsImagesAutomatically (true); webSettings.setNeedInitialFocus (true);