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。