1,在布局文里添加WebView , 记得在清单文件中添加访问网络的权限
<WebView android:id="@+id/wv" android:layout_width="match_parent" android:layout_height="match_parent"> </WebView>
2,在Activity中实例化一个WebView对象
WebView wv = (WebView)findViewById(R.id.wv);
3,为webView初始化一个加载资源并进行一些设置
wv.loadUrl("https://www.baidu.com/");
wv.setWebViewClient(new WebViewClient(){ //覆盖原来加载资源的方法(默认通过第三方浏览器加载),这里设置通过自身加载 @Override public boolean shouldOverrideUrlLoading(WebView view,String url) { view.loadUrl(url); return true; } });
4,为webView设置一些其他功能,并添加一个加载进度条(progressbar)
a,添加使用javascript功能
//启用javaScript WebSettings webSettings = wv.getSettings(); webSettings.setJavaScriptEnabled(true);
b,优化加载速度,尝试优先从缓存加载网页
//优先从缓存获取资源
WebSettings webSettings = wv.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
c,增加一个进度条来显示网页加载的情况
ProgressDialog progressDialog;
wv.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if(newProgress==100){ //网页加载完成 closeDialog(); } else { //网页正在加载 openDialog(newProgress); } } public void openDialog(int newProgress){ if (progressDialog==null){ progressDialog=new ProgressDialog(MainActivity.this); progressDialog.setTitle("正在加载网页"); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setProgress(newProgress); progressDialog.show(); } else progressDialog.setProgress(newProgress); } public void closeDialog(){ if (progressDialog!=null&&progressDialog.isShowing()){ progressDialog.dismiss(); progressDialog=null; } } }); }
d,重写物理返回键,让网页浏览时能退回上一个页面
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {//重写物理返回键 if (keyCode==KeyEvent.KEYCODE_BACK){ Toast.makeText(MainActivity.this,wv.getUrl(),Toast.LENGTH_SHORT).show(); if (wv.canGoBack()){ //判断网页是否可以返回 wv.goBack(); return true; } else { System.exit(0); } } return super.onKeyDown(keyCode, event); }