WebView功能详解

要实现的功能

(1) 将WebView加入到你的应用

(2) 使用WebView加载页面

(3) 获取网络访问权限

(4)在WebView中使用Javascript

(5)处理页面导航

(6)后退与前进

(7)判断页面加载过程

(8)WebView缓存的运用


1.通过Intent调用系统浏览器

Uri uri = Uri.parse(url);          url为你要链接的地址

Intent intent = new Intent(Intent.ACTION_VIEW,uri);

startActivity(intent);


处理页面导航

         当用户点击一个WebView中的页面的链接时,通常,是由默认的浏览器打开加载目标URL的,然而,你可以再WebView中覆盖这一行为,那么链接就会在WebView中打开。

                 webView.setWebViewClient(new WebViewClient());

                覆盖WebView默认通过第三方或者是系统浏览器打开网页的行为,使得网页可以在webview中打开

在WebView中使用Javascript

         如果你想要你加载在WebView中的web页面使用Javascript,你需要在WebView中启用Javascript。启用Javascript你可以通过WebView中带有的WedSettings来启用它。你可以通过getSettings()来获取WebSettings的值,然后通过setJavascriptEnabled()来启用Javascript。


我们会遇到点击返回键,没有返回上一页,而是退出程序的结果,这样的结果显然不是hi我们想要的,于是我们要给webview做一个后退和前进的功能:

当你的WebView覆盖了URL加载,它会自动生成历史访问记录,你可以通过goBack()或goForward()向前或向后访问已访问过的站点。

//改写物理按键--返回的逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {

Toast.makeText(this, mWebView.getUrl(), Toast.LENGTH_LONG).show();
if (mWebView.canGoBack()) {
mWebView.goBack(); //返回上一页
return true;
}else {
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}


判断页面加载过程:

由于有些网页可能加载缓慢,所以我们需要去判断页面的加载过程,制作进度条给与用户良好的体验效果。

mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
super.onProgressChanged(view, newProgress);
if (newProgress == 100) {
//网页加载完毕
closeDialog();
}else {
//网页正在加载
openDialog(newProgress);
}
}


private void openDialog(int newProgress) {
// TODO Auto-generated method stub
if (dialog == null) {
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加载。。");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show();
}else {
dialog.setProgress(newProgress);
}
}


private void closeDialog() {
// TODO Auto-generated method stub
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
dialog = null;
}
}
});

那么为了使我们访问过的网页速度加快,我们可以加入缓存的功能

settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

代码下载地址:http://download.csdn.net/detail/weimo1234/8429045

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章