Android学习11

来源:互联网 发布:兰州知豆电动车租赁点 编辑:程序博客网 时间:2024/06/07 02:45

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)获得网页的icononReceivedTitle(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)加载指定的UrlloadData(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就可以解决乱码 问题了!

0 0
原创粉丝点击