Android加载网页控件WebView

时间:2023-01-18 19:10:11

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