Android笔记——WebView
注:本文笔记来自慕课网
- 1、通过Intent调用系统浏览器打开页面
1. String url = "http://www.baidu.com";
2. Uri uri = Uri.parse(url);
3. Intent intent = new Intent(Intent.ACTION_VIEW, uri);
4. startActivity(intent);
2、WebView基本使用
- (1)、布局文件中使用
<webview />
标签 - (2)、在Mainfirst文件中添加网络权限
- (3)、在activity中声明WebView并通过
loadUrl(url)
函数打开页面
loadUrl(url)
函数可打开两类文件
- 一类是本地文件,存放在assets文件夹中
webView.loadUrl("file:///android_asset/xx.html")//一定要三个斜杠
- 一类是web资源
- 一类是本地文件,存放在assets文件夹中
- (4)、WebView默认使用系统或第三方浏览器打开web资源,然Android提供覆盖此行为
webView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url){ //返回值是true的时候控制网页在WebView中打开,如果为false则调用系统或第三方浏览器打开 view.loadUrl(url); return true; } //WebViewClient帮助WebView去处理一些页面控制和请求通知 });
- (1)、布局文件中使用
3、WebView启用JavaScript
1. WebSettings settings = webView.getSettings();
2. settings.setJavaScriptEnabled(true);
- 4、WebView向前的导航(返回按键)
webview已自动记录网页历史记录
//改写物理按键——返回的逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK)
{
//Toast.makeText(this, webView.getUrl(), Toast.LENGTH_SHORT).show();
if(webView.canGoBack())
{
webView.goBack();//返回上一页面
return true;
}
else
{
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode, event);
}
- 5、页面加载进度
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
//newProgress 1-100之间的整数
if(newProgress==100)
{
//网页加载完毕,关闭ProgressDialog
closeDialog();
}
else
{
//网页正在加载,打开ProgressDialog
openDialog(newProgress);
}
}
private void closeDialog() {
// TODO Auto-generated method stub
if(dialog!=null&&dialog.isShowing())
{
dialog.dismiss();
dialog=null;
}
}
private void openDialog(int newProgress) {
// TODO Auto-generated method stub
if(dialog==null)
{
dialog=new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加载");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show();
}
else
{
dialog.setProgress(newProgress);
}
}
});
- 6、WebView缓存使用
//WebView加载页面优先使用缓存加载
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);