Android提供WebView来加载网页数据,也可以加载本地的资源文件。使用WebView有两种方式,一种是直接在XML布局文件中定义WebView然后在Activity中使用findviewById()找到这个控件,还有一种方式是使用代码直接new一个View对象然后添加到ViewGroup中。与WebView相关的类有两个,一个是WebSettings,该类可以对WebView的一些属性进行设置,比如是否显示网页的图片,js的支持,缩放,网页字体等;还有就是WebViewClient和Webchromclient,这前一个设置可以对js处理,点击超链接不打开本地浏览器,后一个设置对一些特殊的js支持,比如alert。下面对这些类里常用的一些方法做个介绍:
webView:
clearCache(boolean includeDiskFiles)//清除缓存
clearHistory() //清除历史 前进和后退
getSettings() //获取WebSetting
goBack() //返回上一页面
goForward() //前一页面
loadUrl(String url) //打开一个页面
reload() //重新加载当前页面
stopLoading() //停止加载
setScrollBarStyle(int style) //指定
loadData("HTMLString") //加载HTML
WebSettings:
setAllowFileAccess 启用或禁止WebView访问文件数据
setBlockNetworkImage 是否显示网络图像
setBuiltInZoomControls 设置是否支持缩放
setCacheMode 设置缓冲的模式
setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码
setFixedFontFamily 设置固定使用的字体
setJavaSciptEnabled 设置是否支持Javascript
setLayoutAlgorithm 设置布局方式
setLightTouchEnabled 设置用鼠标激活被选项
setSupportZoom 设置是否改变焦点
WebViewClient:
doUpdate VisitedHistory 更新历史记录
onFormResubmission 应用程序重新请求网页数据
onLoadResource 加载指定地址提供的资源
onPageFinished 网页加载完毕
onPageStarted 网页开始加载
onReceivedError 报告错误信息
onScaleChanged WebView发生改变
shouldOverrideUrlLoading 控制新的连接在当前WebView中打开
WebChromeClient:
onCloseWindow 关闭WebView
onCreateWindow 创建WebView
onJsAlert 处理Javascript中的Alert对话框
onJsConfirm处理Javascript中的Confirm对话框
onJsPrompt处理Javascript中的Prompt对话框
onProgressChanged 加载进度条改变
onReceivedlcon 网页图标更改
onReceivedTitle 网页Title更改
onRequestFocus WebView显示焦点
ok,关键知识点就这些啦,关于web的API还是很丰富的,使用起来也很简单,下面就用一个具体的例子来看看:
public class MainActivity extends Activity { // 地址一定要加上 http:// 作为开头哦,不然会报错 private String url = "http://blog.csdn.net/qq379454816/article/details/49248787"; private String TAG = "MainActivity"; private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 得到对象 webView = (WebView) findViewById(R.id.webView); // 来一个WebViewclient WebViewClient client = new WebViewClient() { // 网页加载完毕 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Log.e(TAG, "网页加载完毕!"); } // 网页开始加载 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.e(TAG, "网页开始加载!"); } // 网页加载中,会多次调用 @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); Log.e(TAG, "网页加载中!"); } // 是否在本app中浏览超链接 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); // 消费掉事件 return true; } }; // 再来一个WebChromClient对象 WebChromeClient chrome = new WebChromeClient() { }; // 将两个client都设置到WebView上面 webView.setWebChromeClient(chrome); webView.setWebViewClient(client); // 得到WebSetting对象 WebSettings setting = webView.getSettings(); // 支持缩放 setting.setBuiltInZoomControls(true); setting.setBlockNetworkImage(true); setting.getJavaScriptEnabled(); // 都搞定之后就显示网页啦 webView.loadUrl(url); } @Override public void onBackPressed() { super.onBackPressed(); // 处理返回按钮 if (webView.canGoBack()) { webView.goBack(); } System.exit(0); } }
Demo下载