[每天认真洗脸,多读书,按时睡,少食多餐。变得温柔,大度,继续善良,保持爱心。不在人前矫情,四处诉说以求宽慰,而是学会一个人静静面对,自己把道理想通。这样的你,单身也所谓啊,你在那么虔诚地做更好的自己,一定会遇到最好的,而那个人也一定值得你所有等待。]
在WebView没有出现之前,如果要访问一个网页只能通过打开手机内的浏览器,通过浏览器来加载网页,但是打开浏览器的同时,也脱离了当前的应用软件,这样就大大的降低了网页与应用软件的交互。随着Android SDK的不断升级,官方提供一个WebView控件,专门用于加载网页并实现交互。那么到底WebView是什么?又该如何使用呢?
什么是WebView?
简单来说WebView是移动端用于加载Web页面的控件。
怎么使用WebView?
1、移动端加载网页方式
A、通过打开浏览器访问网页
String weburl ="http://www.baidu.com/"; Uri uri = Uri.parse(weburl);// weburl网址Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
B、通过WebView打开本地网页
WebView.loadUrl("file:///android_asset/baidu.html");
注意1:本地文件放在assets文件中,assets文件是main的子文件,与res文件同级。
注意2:设置WebView支持加载本地文件。
WebSettings webSettings = webView.getSettings();// 允许加载Assets和resources文件webSettings.setAllowFileAccess(true);
[本地baidu.html代码]
C、通过WebView加载网址
webView.loadUrl("http://www.baidu.com/");
加载网址,需要在清单文件中加上网络请求权限
<uses-permission android:name="android.permission.INTERNET"/>
当WebView加载失败时,可以使用webView.reload();来重新加载。
注意:当加载完网页之后,如果发现网页无法点击,这很可能是WebView没有获取焦点。
webView.requestFocus();// 使页面获取焦点,防止点击无响应
2、WebView基本属性设置
WebView提供很多属性,需要通过WebSettings来进行设置,下面是对一些常用属性进行设置。
// 设置WebView相关属性WebSettings webSettings = webView.getSettings();// 是否缓存表单数据webSettings.setSaveFormData(false);// 设置WebView 可以加载更多格式页面webSettings.setLoadWithOverviewMode(true);// 设置WebView使用广泛的视窗webSettings.setUseWideViewPort(true);// 支持2.2以上所有版本webSettings.setPluginState(WebSettings.PluginState.ON);// 允许加载Assets和resources文件webSettings.setAllowFileAccess(true);// 告诉webview启用应用程序缓存apiwebSettings.setAppCacheEnabled(true);// 排版适应屏幕webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);// 支持插件webSettings.setPluginState(WebSettings.PluginState.ON);// 设置是否启用了DOM storage AP搜索IwebSettings.setDomStorageEnabled(true);// 设置缓存,默认不使用缓存-有缓存,使用缓存webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 是否允许缩放webSettings.setSupportZoom(false);// 是否支持通过js打开新的窗口webSettings.setJavaScriptCanOpenWindowsAutomatically(true);// 允许加载JSwebSettings.setJavaScriptEnabled(true);
// 隐藏滚动条webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
3、WebView默认是通过浏览器打开网页,如何使用WebView打开网页?
WebViewClient是WebView的一个重要属性,它不仅仅能够实现WebView打开网页,而且还能够实现URL重构等功能。
// WebView默认是通过浏览器打开url,使用url在WebView中打开webView.setWebViewClient(new WebViewClient() {// // 旧版本// @Override// public boolean shouldOverrideUrlLoading(WebView view, String url) { // 使url在WebView中打开,在这里可以进行重构url// webView.loadUrl(url);// return true;// } // 新版本 @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { // 返回false,意味着请求过程中,不管有多少次的跳转请求(即新的请求地址),均交给webView自己处理,这也是此方法的默认处理 // 返回true,说明你自己想根据url,做新的跳转,比如在判断url符合条件的情况下,我想让webView加载http://baidu.com/ // 加载Url,使网页在WebView中打开,在这里可以进行重构url if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) { webView.loadUrl(request.getUrl().toString()); } return true; } // WebViewClient帮助WebView去处理页面控制和请求通知 @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); } // 错误代码处理,一般是加载本地Html页面,或者使用TextView显示错误 @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { // 当网页加载出错时,加载本地错误文件// webView.loadUrl("file:///android_asset/error.html"); } // 页面开始加载-例如在这里开启进度条 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } // 页面加载结束,一般用来加载或者执行javaScript脚本 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } });
4、设置WebView的WebChromeClient属性
WebChromeClient是WebView中一个非常重要的属性,使用它可以监听网页加载的进度,获取网页主题等信息。
// 监听网页加载进度webView.setWebChromeClient(new WebChromeClient() { // 网页Title信息 @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); } // 监听网页alert方法 @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super(view, url, message, result); } // 显示网页加载进度 @Override public void onProgressChanged(WebView view, int newProgress) { // newProgress 1-100 } });
5、WebView中使用JavaScript
WebView与网页的交互大多数是使用JavaScript来实现
//设置WebView支持JavaScriptWebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);
6、下载文件监听
// 下载文件webView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { // url下载文件地址 // 处理下载文件逻辑 } });
7、后退与前进
// 返回键监听@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (webView.canGoBack()) // 判断WebView是否能够返回,能-返回 webView.canGoBack(); else finish(); return true; } return super.onKeyDown(keyCode, event); }
8、WebView优化-缓存
//设置缓存,默认不使用缓存webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//有缓存,使用缓存webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
[开心一刻]
共同学习,写下你的评论
评论加载中...
作者其他优质文章