Android之WebView详解


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下载



你可能感兴趣的:(webView)