在Android中,可以使用Webview控件来浏览网页。
下面我们就来介绍webView控件的使用方式:
---------------------------------------------
目录:
1.webview加载url的方式
2.webview的配置
(1)WebSettings
(2)WebViewClient
(3)WebChoromeClient
---------------------------------------------
1.webview加载url的方式
使用loadUrl方法可以加载本地或者远程的url
(1)本地资源:
比如html文件在assets目录下,可以采用这种方式(wv为webView对象):
wv.loadUrl("file:///android_asset/test1.html");
(2)远程资源:
直接将地址字符串传入即可。
wv.loadUrl("http://blog.csdn.net");注意,访问远程资源必须加上权限:
<uses-permission android:name="android.permission.INTERNET"/>其实除了loadurl方式,你也可以调用LoadData 或者 loadDataWithBaseURL方法。
2.webView的配置:
(1)WebSettings
WebSettings用来设置WebView的属性和状态。可以通过如下方式获取该对象:
WebSettings webSettings = wv.getSettings();得到该对象后便可设置一些属性:
(1)setAllowFileAccess(boolean allow); //设置启用或禁止访问文件数据 (2)setBuiltInZoomControls(boolean enabled); //设置是否支持缩放 (3)setDefaultFontSize(int size); //设置默认的字体大小 (4)setJavaScriptEnabled(boolean flag); //设置是否支持JavaScript (5)setSupportZoom(boolean support); //设置是否支持变焦
(2)WebViewClient
WebViewClient主要用来辅助WebView处理各种通知、请求等事件。
通过setWebViewClient方法设置,提供的方法也有很多,下面列举一部分:
(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); //报告错误信息
(3)WebChoromeClient
WebChromeClient主要用来辅助WebView处理Javascript的对话框、网站图标、网站标题以及网页加载进度等。通过WebView的setWebChromeClient()方法设置。
(1)onProgressChanged(WebView view, int newProgress)//监听网页加载进度 (2)onReceivedTitle(WebView view, String title)//监听网页标题 (3)onReceivedIcon(WebView view, Bitmap icon)//监听网页图标小案例:
package com.example.webviewdemo1; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { protected static final String TAG = null; private WebView wv = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wv = (WebView) findViewById(R.id.wv); WebSettings settings = wv.getSettings(); settings.setBuiltInZoomControls(true);//设置是否显示缩放工具 settings.setSupportZoom(true);//设置是否支持缩放 settings.setJavaScriptEnabled(true); settings.setDefaultFontSize(15); //加载本地assets目录下的html // wv.loadUrl("file:///android_asset/test1.html"); //加载远程网页 wv.loadUrl("http://blog.csdn.net"); wv.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //让新打开的网页在当前webview显示 view.loadUrl(url); return true; } }); wv.setWebChromeClient(new WebChromeClient() { //获得网页的加载进度(0-100) @Override public void onProgressChanged(WebView view, int newProgress) { if(newProgress <= 100) { Log.i(TAG,"progress"+newProgress); } } //获得网页的标题 @Override public void onReceivedTitle(WebView view, String title) { Log.i(TAG,"titile="+title); } @Override public void onReceivedIcon(WebView view, Bitmap icon) { // TODO Auto-generated method stub super.onReceivedIcon(view, icon); } }); } }演示效果:
logcat打印的日志: