WebView的几个常见功能使用方法
android的webview组件可以说是相当的强大,现将项目中经常用到的几个功能总结如下:
一、背景设置
webview.setbackgroundcolor(0);//先设置背景色为transparent webview.setbackgroundresource(r.drawable.yourimage);//然后设置背景图片
二、获得webview网页加载初始化和完成事件
步骤:
1 创建一个自己的webviewclient(继承 webviewclient 类)如webviewclient
2 重载 里面的 onpagefinished(webview view, string url)方法,(webview加载完成会调用这个方法),这个方法放自己想要做的事情,在webview加载完成以后
3 关联 你自己的webviewclient 与 webview 通过 这个方法:webview.setwebviewclient( new webviewclient();
mwebview.setwebviewclient(new webviewclient() { @override public void onpagefinished(webview view, string url) { //结束 super.onpagefinished(view, url); } @override public void onpagestarted(webview view, string url, bitmap favicon) { //开始 super.onpagestarted(view, url, favicon); } });
如果需要监视加载进度的,需要创建一个自己的webchromeclient类,并重载方法onprogresschanged,再
webview.setwebchromeclient(new mywebchromeclient())即可: class mywebchromeclient extends webchromeclient { @override public void onprogresschanged(webview view, int newprogress) { // todo auto-generated method stub super.onprogresschanged(view, newprogress); } } 例如: public class webpageloader extends activity { final activity activity = this; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); this.getwindow().requestfeature(window.feature_progress); setcontentview(r.layout.main); webview webview = (webview) findviewbyid(r.id.webview); webview.getsettings().setjavascriptenabled(true); webview.getsettings().setsupportzoom(true); webview.setwebchromeclient(new webchromeclient() { public void onprogresschanged(webview view, int progress) { activity.settitle("loading..."); activity.setprogress(progress * 100); if (progress == 100) activity.settitle(r.string.app_name); } }); webview.setwebviewclient(new webviewclient() { public void onreceivederror(webview view, int errorcode, string description, string failingurl) { // handle the error } public boolean shouldoverrideurlloading(webview view, string url) { view.loadurl(url); return true; } }); webview.loadurl("http://www.sohu.com"); } }
布局文件:
<?xml version="1.0" encoding="utf-8"?> <webview xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
要注意的是,其中的webview的一系列用法,比如 webview.getsettings().setjavascriptenabled(true);设置可以使用javscript;
webview.getsettings().setjavascriptenabled(true); webview.setscrollbarstyle(webview.scrollbars_outside_overlay); webview.sethorizontalscrollbarenabled(false); webview.getsettings().setsupportzoom(true); webview.getsettings().setbuiltinzoomcontrols(true); webview.setinitialscale(70); webview.sethorizontalscrollbaroverlay(true);
等等,具体参考api
而进度条的使用是在new出一个setwebchromeclient后,可以在内部类中写 onprogresschanged事件
总结:
在webview的设计中,不是什么事都要webview类干的,有些杂事是分给其他人的,这样webview专心干好自己的解析、渲染工作就行了。webviewclient就是帮助webview处理各种通知、请求事件的,具体来说包括:
- onloadresource
- onpagestart
- onpagefinish
- onreceiveerror
- onreceivedhttpauthrequest
webchromeclient是辅助webview处理javascript的对话框,网站图标,网站title,加载进度等
- onclosewindow(关闭webview)
- oncreatewindow()
- onjsalert (webview上alert是弹不出来东西的,需要定制你的webchromeclient处理弹出)
- onjsprompt
- onjsconfirm
- onprogresschanged
- onreceivedicon
- onreceivedtitle
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。