您的位置:首页 > 移动开发

【Android WebView】 利用webview实现浏览器的基本功能

2014-09-01 09:35 771 查看
一个简单的浏览器:加载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

    

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: