【Android WebView】 利用webview实现浏览器的基本功能
一个简单的浏览器:加载URL,管理书签,记录已经打开的窗口,上/下/首页。
1,加载url。
a,如果Url为:http://www.baidu.com或者https://github.com类似样式的。那么直接load(url);
b,如果Url为:www.baidu.com。就load("http://"+ url);
c,如果地址栏中输入的为关键词,如“北京 旅游”。那么我们可以使用百度的搜索,跳到百度的搜索结果页:load("http://www.baidu.com/s?wd="+keyWord);
2,书签管理:遇到的主要问题是书签的数据持久化。
具体解决办法,我使用sp存储一个书签list解决的。
sp存储复杂数据类型,详见:http://www.cnblogs.com/outOfview/p/3467248.html
3,记录多窗口
像书签一样使用list存储。需要注意的是,对应窗口list的item的各个属性的变换,及记录。
4,上/下/首页
使用webClint中的goBack/goForward。
webView.setWebViewClient(new WebViewClient());
//自定义client集成实现WebviewClient。最基本的方法:shouldOverrideUrlloading(WebView view,String url).
//webviewclient的该方法实现了让url在自定义的Webview中打开,而不是调用自身的浏览器。
webView.goBack();
webView.goForward();
Tips:1,返回键事件处理;
2,历史窗口,书签都要获得当前页面的title和url,这时用到WebChromeClient.
webView.setWebChromeClient(new WebChromeClient());//自定义一个chromeClient。
//使用OnReciveTitle,OnReciveIcon,OnProgressChanged 获取当前页面的标题,图标和加载进度
3,webviewclient的其他重要方法:
(1)doUpdateVisitedHistory(WebView view, String url, boolean isReload); //更新历史记录
(2)onFormResubmission(WebView view, Message dontResend, Message resend); //重新请求网页数据
(3)onLoadResource(WebView view, String url); //加载指定网址提供的资源
(4)onPageFinished(WebView view, String url); //网页加载完毕
(5)onPageStarted(WebView view, String url, Bitmap favicon); //网页开始加载
(6)onReceivedError(WebView view, int errorCode, String description, String failingUrl); //报告错误信息
4,WebSettings提供的一些常用的设置WebView的属性和状态的方法如下:
(1)setAllowFileAccess(boolean allow); //设置启用或禁止访问文件数据
(2)setBuiltInZoomControls(boolean enabled); //设置是否支持缩放
(3)setDefaultFontSize(int size); //设置默认的字体大小
(4)setJavaScriptEnabled(boolean flag); //设置是否支持JavaScript
(5)setSupportZoom(boolean support); //设置是否支持变焦
5,实验发现,Webview和iewFlipper联用,会出现手势无法识别的现象。而ViewPager则能很好的解决Webview界面和其他自定义界面自由切换的效果。
6,浏览器中如果需要侧滑的抽屉,建议使用SlidingMenu。https://github.com/jfeinstein10/SlidingMenu
鸣谢:http://www.cnblogs.com/menlsh/p/3139498.html