1.回顾
上篇学习了 ProgressBar和ProgressBarDialog 的使用
2.重点
(1)调用系统浏览器打开网页
(2)使用WebView 加载 android 本地资源
(3)使用 webView 加载 网址上页面
(4)设置 webView支持 javaScript
(5)设置 WebView 支持 缓存
(6)友好化处理——添加进度条 (ProgressBarDialog实现)
(7)重新 OnkeyBack 使得 加载的网页可以后退
3.调用安卓浏览器打开网页
使用Intent实现:
Uri uri=Uri.parse("http://www.baidu.com");
Intent intent=new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
4.实现webView
布局文件中 ,新添 webView布局
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" />
初始化控件:findviewById 实现
webView1=(WebView) findViewById(R.id.webView1);
5.加载本地网页
网页放在安卓工程下的 assets 目录下 ,新建 index.html ,一句话实现加载:
webView1.loadUrl("file:///android_asset/index.html");
6.加载csdn 我的博客主页
webView1.loadUrl("http://blog.youkuaiyun.com/lablenet");
7.重写加载方法
//覆盖 webview 默认通过第三方浏览器打开行为
webView1.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 重写 shouldOverrideUrlLoading 方法
view.loadUrl(url);
//为 true 的时候 ,是为 webView加载
return true;
}
});
8.设置javaScript 权限和 页面缓存
//设置 支持javascript
WebSettings settings=webView1.getSettings();
settings.setJavaScriptEnabled(true);
//设置 缓存
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
9. 加载 进度条实现
//添加进度条
webView1.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//webView 进度条设置
//newProgress 1-100之间的整数
if(newProgress==100){
//加载完毕了
closeDialog();
}else{
//正在加载
openDialog(newProgress);
}
}
private void closeDialog() {
// 关闭 进度 dialog
prod.dismiss();
prod=null;
}
private void openDialog(int newProgress) {
// 打开进度 dialog
if(prod==null){
prod=new ProgressDialog(WebviewActivity.this);
prod.setTitle("加载中。。。");
prod.setProgress(newProgress);
prod.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prod.show();
}else{
prod.setProgress(newProgress);
}
}
});
10.重新返回键
是的点击返回,网页返回,而不是程序退出
//重写返回按键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 重新 返回键
if(keyCode==KeyEvent.KEYCODE_BACK){
if(webView1.canGoBack()){
webView1.goBack();
return true;
}else{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
11.demo 免积分下载
http://download.youkuaiyun.com/detail/lablenet/9039147