7.5.1 WebView(网页视图)基本用法

Android基础入门教程——7.5.1 WebView(网页视图)基本用法

标签(空格分隔): Android基础入门教程

本节引言

本节给大家带来的是Android中的一个用于显示网页的控件:WebView(网页视图),现在Android应用 层开发的方向有两种:客户端开发和HTML5移动端开发!所谓的HTML5端就是:HTML5 + CSS + JS来构建 一个网页版的应用,而这中间的媒介就是这个WebView,而Web和网页端可以通过JS来进行交互,比如, 网页读取手机联系人,调用手机相关的API等!而且相比起普通的客户端开发,HTML5移动端有个优势: 可以用百分比来布局,而且如果HTML5端有什么大改,我们不用像客户端那样去重新下一个APP,然后 覆盖安装,我们只需修改下网页即可!而客户端…惨不忍睹,当然HTML5也有个缺点,就是性能的问题, 数据积累,耗电问题,还有闪屏等等…另外,针对这种跨平台我们可以使用其他的第三方快速开发 框架,比如PhoneGap,对了,还有现在网络上很多一键生成APP类的网站,用户通过拖拉,设置图片 之类的简单操作就可以生成一个应用,大部分都是用的HTML5来完成的!有模板,直接套,你懂的~ 好的,话不多说,开始本节内容!

1.什么是WebView?

答:Android内置webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个 控件,WebView直译网页视图,我们可以简单的看作一个可以嵌套到界面上的一个浏览器控件!

2.相关方法

先上官方文档:WebView 并不打算一个个地去讲属性,用到哪个写哪个,其他的自行查阅文档! 除了直接WebView外我们还可以添加你自己的行为,可以自行定制下述类:

WebChromeClient:辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等! 比如下面这些:

方法 作用

onJsAlert(WebView view,String url,String message,JsResult result) 处理Js中的Alert对话框

onJsConfirm(WebView view,String url,String message,JsResult result) 处理Js中的Confirm对话框

onJsPrompt(WebView view,String url,String message,String defaultValue,JsPromptResult result) 处理Js中的Prompt对话框

onProgressChanged(WebView view,int newProgress) 当加载进度条发生改变时调用

onReceivedIcon(WebView view, Bitmap icon) 获得网页的icon

onReceivedTitle(WebView view, String title) 获得网页的标题

WebViewClient:辅助WebView处理各种通知与请求事件! 比如下面这些方法:

方法 作用

onPageStared(WebView view,String url) 通知主程序网页开始加载

onPageFinished(WebView view,String url,Bitmap favicon) 通知主程序,网页加载完毕

doUpdateVisitedHistory(WebView view,String url,boolean isReload) 更新历史记录

onLoadResource(WebView view,String url) 通知主程序WebView即将加载指定url的资源

onScaleChanged(WebView view,float oldScale,float newScale) ViewView的缩放发生改变时调用

shouldOverrideKeyEvent(WebView view,KeyEvent event) 控制webView是否处理按键时间,如果返回true,则WebView不处理,返回false则处理

shouldOverrideUrlLoading(WebView view,String url) 控制对新加载的Url的处理,返回true,说明主程序处理WebView不做处理,返回false意味着WebView会对其进行处理

onReceivedError(WebView view,int errorCode,String description,String failingUrl) 遇到不可恢复的错误信息时调用

WebSettings:WebView相关配置的设置,比如setJavaScriptEnabled()设置是否允许JS脚本执行 部分方法如下:

方法 作用

getSettings() 返回一个WebSettings对象,用来控制WebView的属性设置

loadUrl(String url) 加载指定的Url

loadData(String data,String mimeType,String encoding) 加载指定的Data到WebView中.使用”data:”作为标记头,该方法不能加载网络数据.其中mimeType为数据类型如:textml,image/jpeg. encoding为字符的编码方式

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) 比上面的loadData更加强大

setWebViewClient(WebViewClient client) 为WebView指定一个WebViewClient对象.WebViewClient可以辅助WebView处理各种通知,请求等事件。

setWebChromeClient(WebChromeClient client) 为WebView指定一个WebChromeClient对象,WebChromeClient专门用来辅助WebView处理js的对话框,网站title,网站图标,加载进度条等

这里重要区分三个load方法的区别:

loadUrl():直接显示网页内容(单独显示网络图片),一般不会出现乱码。 loadData(data, “text/html”, “UTF-8”):用来加载URI格式的数据,不能通过网络来加载内容, 不能加载图片,而且经常会遇到乱码的问题,我们知道String类型的数据主要是Unicode编码的, 而WebView一般为了节省资源使用的是UTF-8编码,尽管我们按上面写了,但是还需要为webView设置: webview.getSettings().setDefaultTextEncodingName(“UTF -8”); loadDataWithBaseURL(baseUrl, string, “text/html”, “utf-8”, null):loadData类的一个 增强类,可以加载图片,baseUrl为你存储的图片路径,而且只需在这里设置utf-8就可以解决乱码 问题了!

这里只是列举了部分属性而已,其他的还需自行查阅官方文档:

WebChromeClient文档 WebViewClient文档 WebSettings文档

3.一些常见需求讲解需求1:根据URL加载网页

1)直接在Activity上加载一个WebView

运行效果图:

实现代码:

{private WebView webView;private long exitTime = 0;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);webView = new WebView(this);webView.setWebViewClient(new WebViewClient() {(WebView view, String url) {view.loadUrl(url);return true;}});webView.getSettings().setJavaScriptEnabled(true); //设置WebView属性,运行执行js脚本webView.loadUrl(“http://www.baidu.com/”);//调用loadView方法为WebView加入链接setContentView(webView);//调用Activity提供的setContentView将webView显示出来}() {if (webView.canGoBack()) {webView.goBack();} else {if ((System.currentTimeMillis() – exitTime) > 2000) {Toast.makeText(getApplicationContext(), “再按一次退出程序”,Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();} else {super.onBackPressed();}}}}

2)布局代码中设置WebView

相信大家都见过很多的新闻类App吧或者门户信息类的App,他的结构可能是这样的:

为我祈祷平安就好。我的旅行,会有你们的故事陪伴,所以我不会孤单。放心吧。

7.5.1 WebView(网页视图)基本用法

相关文章:

你感兴趣的文章:

标签云: