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