当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

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

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:26:54

本节引言本节给大家带来的是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)获得网页的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就可以解决乱码问题了!这里只是列举了部分属性而已,其他的还需自行查阅官方文档:WebChromeClient文档WebViewClient文档WebSettings文档3.一些常见需求讲解需求1:根据URL加载网页1)直接在Activity上加载一个WebView运行效果图:实现代码:public class MainActivity extends AppCompatActivity { private WebView webView; private long exitTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = new WebView(this); webView.setWebViewClient(new WebViewClient() { //设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); webView.getSettings().setJavaScriptEnabled(true); //设置WebView属性,运行执行js脚本 webView.loadUrl("http://www.baidu.com/"); //调用loadUrl方法为WebView加入链接 setContentView(webView);

[1] [2] [3] [4]  下一页


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