参考链接:http://www.cnblogs.com/qingblog/archive/2012/06/15/2550735.html
接上一篇文章:Android网络通信(3):Socket通信
WebKit应用
Android 浏览器的内核是Webkit引擎,WebKit的前身是KDE小组的KHTML.
WebKit 是一个开源浏览器网页排版引擎。与之对应的引擎有Gecko和Trident等。
WebKit 由3个模块组成:
WebKit :整个项目的名称
JavaScriptCore :JavaScrip解释器
WebCore :整个项目的核心,用来实现Render引擎,解析Web页面,生成一个DOM树和一个Render树。
WebKit的解析过程:
1、CURL获得网站的stream。
2、解析划分字符串。
3、通过DOM Builer按合法的HTML规范生成DOM树。
4、如果有Javascript,JSEngine就通过ECMA-262标准完善DOM树。
5、把DOM传给LayoutEngine进行布局,如果有CSS样式,就通过CSSParser解析。
6、最后Rendering渲染出来。
WebView
WebView控件是WebKit类中专门用来浏览网页的控件。
其使用需要在XML文件中定义一个WebView控件:
<WebView
android:id="@+id/WebView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
然后需要在程序代码中转载这个控件 ,并设置其颜色、字体、要访问的网址(也可在XML文件中设置)。
通过loadUrl方法设置当前WebView需要访问的网址代码如下:
mWebView= (WebView)findViewById(R.id.WebView01);
mWebView.loadUrl("http://www.google.com");
在Android中可以通过WebSettings来设置WebKit的一些属性、状态等。在创建WebView时,系统有一个默认的设置,可以通过WebView.getSettings来得到如下:
WebSettings webSettings = mWebView.getSetting();//得到mWebView的WebSettings对象
WebSettings和WebView 都在同一生命周期中存在,当WebView被销毁后,如果再使用WebSettings则会抛出IllegalStateException异常。
下为时设置一些常用属性、状态的方法。将下面的set改为get即可得到WebView的一些属性和状态。
setAllowFileAccess 启动或禁止WebView访问文件数据
setBlockNetworkImage 是否显示图像
setBuiltInZoomControls 设置是否支持缩放
setCacheMode 设置缓冲模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaScriptEnabled 设置是否支持JavaScript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否支持变焦
WebViewClient
在程序中可以用WebViewClient来自定义网页浏览程序。此类就是专门辅助WebView处理各种通知,请求等事件的类。可以通过WebView的setWebViewClient方法来创建一个WebViewClient对象。
WebViewClient常用方法:
doUpdateVisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开
我们可以覆盖这些方法来辅助WebView浏览网页.如下:我们设置覆盖shouldOverrideUrlLoading方法。
public boolean shouldOverrideUrlLoading(WebView view ,String url){
view.loadUrl(url);//设置访问的网址
ruturn true;
}
WebChromeClient
在Android中通过WebChromeClient专门来辅助WebView处理Javascript的对话框、网站图标、网站Title、加载进度等。
WebChromeClient中常用方法
onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm 处理Javascript中的Confirm对话框
onJsPrompt 处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedIcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点
下面来实现onReceiveTitle方法,用于更改应用程序的Title 代码如下:
public void onReceivedTitle(WebView view,String title){
Activity01.this.setTitle(title);
super.onReceivedTitle(view,title);
}
WebView与Javascript
WebView不但可以运行一段HTML代码,而且还有一个最重要的特点,就是WebView可以通Javascript互相调用。有了它我们就可以用HTML和Javascript来编写Android应用。
下面来制作一个浏览器,界面使用EditText来输入网址,用Button来确认连接,用WebView来显示网页内容。
代码下载链接:http://www.apkbus.com/android-116905-1-1.html
喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你指的拥有哦!