Android 的WebKit

来源:转载

WebKit是一个浏览器网页排版的引擎,Chrome和Safari都使用该引擎。FireFox使用的是Gecko,IE自然就是MSHTML了,搞过web开发的大概都会被这些引擎之间的差异性折磨的生不如死,而且大概也会继续被折磨下去。不过当各大厂商对WEB标准越来越重视,以后情况应该会有所改观,不过那是后话了,现在还是一声叹息的去调兼容性吧。说到兼容性总情不自禁要骂一声:该死的IE6。

扯远了,言归正传。跟Chrome一样,Android内置的浏览器引擎是WebKit,这里不记录其底层结构图,只记录其大概用法,涉及如下4个类:

WebView

看名字即可知道该类继承自View,是视图控件,对应的标签是<WebView>主要用来显示网页内容,可以在XML配置其基本属性,也可使用另一个类来描述这些属性,可以使用其loadUrl()方法装载网页内容,获取到服务器的HTML页面后使用webkit引擎来排版显示,实践证明其并没有针对手机做特别的处理(比如抓取网页内容然后重新根据手机屏幕大小做重新排版网页元素。至于有没有这个技术还不清楚,这只是个人假想,也没那么多时间和精力去研究这个),跟在电脑上用Chrome看到的页面没什么区别。WebView还负责记录历史记录,可以调用goBack,goForward。

WebSettings

为WebView提供属性设置。其setter方法可以设置字体大小,是否支持网络,是否支持缩放,是否支持js等等。其实例通过WebView.getSettings()获取到。

WebViewClient

在web应用中,经常需要监听一些dom事件,比如onload,比如页面跳转,PC浏览器自有对这些事件的处理,在手机客户端中,我们现在仅仅只有一个WebKit引擎,它不足以满足用户对这些事件进行监听的需求,此时需要WebViewClient了,覆盖它的一些回调方法(onPageFinished(),shouldOverrideUrlLoading()等等),然后将其设入WebView中即可。

WebChromeClient

如果页面中有一些交互,比如点击按钮alert出一些东西,比如prompt,比如confirm,比如网页跳转进度条等等,此时需要WebChromeClient,同样覆盖一些回调方法,然后将其设入WebView即可。

把那些东西都用上的话,差不多就是一个简单的浏览器了。再在顶部放一个输入框和按钮,点击按钮就让下面的WebView加载输入框里面的url,再加入一些特效,比如手指滑动翻页,比如翻页的3d效果等等,还有其他一些细节,大概就是一个可以浏览网页的UCWeb了。呵呵。

这些都是从《Android应用开发揭秘》看来的,记录个大概也不够深入,需要的时候再去查阅api吧。

分享给朋友:
您可能感兴趣的文章:
随机阅读: