您的位置:首页 > 移动开发

Android之WebView详解

2015-11-12 14:11 393 查看
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下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: