android之WebView详解

本文介绍了如何使用WebView控件浏览网页与HTML代码,并详细解释了加载网页、处理请求、缓存浏览历史、本地资源获取及JavaScript支持等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        WebView是一个使用开源的WebKit引擎的浏览器控件,可以将其当成一个浏览器来用,WebView能够搜索网址、查看电子邮件、播放视频节目,其不仅支持HTML、CSS等静态元素,还支持JavaScript.

★WebView浏览网页

public class MainActivity extends Activity {

	private EditText et_uri;
	private Button btn;
	private WebView webView;
	
	private final int BACK = 0;
	private final int FORWARD = 1;
	private final int CLEAR_CACHE = 2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		et_uri = (EditText)findViewById(R.id.et_uri);
		btn = (Button)findViewById(R.id.search);
		webView = (WebView)findViewById(R.id.webView);
		
		//处理各种通知和请求事件,如果不使用该句代码,
		//将使用内置浏览器访问网页,不会显示在WebView上
		webView.setWebViewClient(new WebViewClient());
		
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				String uri = et_uri.getText().toString().trim();
				/**
				 * loadUrl()可以装载任何有效的网址
				 * 1.浏览Internet上的网页
				 * 2.浏览本地网页文件
				 * webView.loadUrl("file:///sdcard/test.html");
				 */
				if(URLUtil.isNetworkUrl(uri)){
					webView.loadUrl(uri);
				}else {
					Toast.makeText(MainActivity.this, "输入的网址不正确!", Toast.LENGTH_LONG).show();
				}
			}
		});
	}

	/**
	 * WebView支持缓存浏览历史页面
	 */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		
		menu.add(0, BACK, 0, "向后(back)");
		menu.add(0, FORWARD, 0, "向前(forward)");
		menu.add(0, CLEAR_CACHE, 0, "清除缓存");
		return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		switch(item.getItemId()){
		case BACK:
			webView.goBack();
			break;
		case FORWARD:
			webView.goForward();
			break;
		case CLEAR_CACHE:
			/**includeDiskFiles if false, only the RAM cache is cleared
			 * true:硬盘文件和RAM缓存全部清除
			 * false:只清除RAM缓存
			 */
			webView.clearCache(true);
		
		}
		
		return super.onOptionsItemSelected(item);
	}
}

★WebView浏览HTML

        ◇WebView还可以直接装载HTML代码有以下两个方法:

public void loadData(String data, String mimeType, String encoding);

public void loadDataWithBaseURL(String baseUrl, String data, 

String mimeType, String encoding, String failUrl);

data:html代码

mimeType:Mime类型,一般为text/html

encoding:html代码编码

baseUrl:获取相对路径的跟URL,null默认为about:blank

failUrl:如果html代码装载失败,则则装载该html。

支持javascript

        WebView默认是不支持JavaScript的用以下方法设置:

//打开JavaScript功能

webView.getSettings().setJavaScriptEnabled(true);

//设置处理JavaScript的引擎

webView.setWebChromeClient(new WebChromeClient());

        ◇WebView放大缩小网页

webView.getSettings().setSupportZoom(true);

webView.getSettings().setBuiltlnZoomControls(true);

        ◇本地资源的获取

        文件若位于工程中的assets目录下,如果要在HTML代码中显示apk文件中的assets目录中的资源必须以

“file://android_asset”开头,后面跟文件和路径名,注意asset后面没有s。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值