首页 > 代码库 > (三) Android Webview 深入 (中)

(三) Android Webview 深入 (中)

  建立在对webView控件有了一定的认识和了解之后,我们就可以继续研究一下这个控件了,这篇文章主要介绍一下如何使webView与ProgressDialog结合。

WebView 组件支持直接加载网页,可以将其视为一个浏览器,要实现该功能,具体步骤如下:

1.新建xml布局文件,如下:

<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout></span>
2.在主Activity中对控件进行初始化和设置相应的参数

<span style="font-size:18px;">package com.happy.wbpd;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity {

	private WebView webView;
	private AlertDialog alertDialog;
	private ProgressDialog progressBar;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initWebView();
	}

	/**
	 * 初始化webView
	 */
	private void initWebView() {
		webView = (WebView) this.findViewById(R.id.webView);
		progressBar = ProgressDialog.show(MainActivity.this, null,
				"正在进入网页,请稍后...");
		webView.getSettings().setJavaScriptEnabled(true);
		webView.loadUrl("http://www.baidu.com/");
		alertDialog = new AlertDialog.Builder(MainActivity.this).create();
		webView.setWebViewClient(new WebViewClient() {

			@Override
			public void onPageFinished(WebView view, String url) {
				if (progressBar.isShowing()) {
					progressBar.dismiss();
				}
			}

			@Override
			public void onReceivedError(WebView view, int errorCode,
					String description, String failingUrl) {
				Toast.makeText(MainActivity.this, "网页加载出错!", Toast.LENGTH_LONG);
				alertDialog.setTitle("ERROR");
				alertDialog.setMessage(description);
				alertDialog.setButton("OK",
						new DialogInterface.OnClickListener() {
							@Override
							public void onClick(DialogInterface dialog,
									int which) {

							}
						});
				alertDialog.show();
			}

			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}

		});
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
			webView.goBack();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}</span>
3.在需要在AndroidManifest.xml 中添加访问互联网的权限,否则不能显示:
<uses-permission android:name="android.permission.INTERNET"/>


该逻辑比较简单,外加今天比较忙,所以就大体介绍一下,下篇文章会说一下webView与javaScript的互相调用以及listView加入webView实现下拉刷新。

(三) Android Webview 深入 (中)