Android开发笔记—WebView、ProgressDialog的基础使用
来源:互联网 发布:钢结构连接计算软件 编辑:程序博客网 时间:2024/04/30 09:54
调用系统自带浏览器可以使用以下方法
//调用系统自带浏览器打开网址 Uri uri = Uri.parse("http://www.baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
WebView加载本地资源
WebView webView = (WebView) findViewById(R.id.webView);webView.loadUrl("file:///android_asset/test.html");
WebView加载Web资源
webView.loadUrl("http://www.baidu.com");
覆盖WebView默认通过其他浏览器打开网页的行为,使得网页可以在webView中打开
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; //return super.shouldOverrideUrlLoading(view, url); } //WebViewClient帮助WebView去处理一些页面控制和请求通知});
启用支持javascript
WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true);
优先使用缓存加载
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
加载过程中显示进度条对话框
private ProgressDialog dialog;webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { //newProgress 1-100的整数 if(newProgress == 100){ //网页加载完毕,关闭ProgressDialog closeDialog(); }else{ //网页正在加载,打开ProgressDialog openDialog(newProgress); } } private void closeDialog() { if(dialog!=null && dialog.isShowing()){ dialog.dismiss(); dialog = null; } } private void openDialog(int newProgress) { if (dialog == null){ dialog = new ProgressDialog(MainActivity.this); dialog.setTitle("正在加载中"); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式 dialog.show(); }else{ dialog.setProgress(newProgress); } } });
重写onKeyDown方法改写手机物理按键返回逻辑
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { 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);}
完整代码
package com.example.jialin.webviewdemo;import android.app.ProgressDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private WebView webView; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);// //调用系统自带浏览器打开网址// Uri uri = Uri.parse("http://2014.qq.com");// Intent intent = new Intent(Intent.ACTION_VIEW, uri);// startActivity(intent); init(); } public void init(){ webView = (WebView) findViewById(R.id.webView); //加载本地资源。 //webView.loadUrl("file:///android_asset/test.html"); //加载Web资源 webView.loadUrl("http://2014.qq.com"); //覆盖WebView默认通过其他浏览器打开网页的行为,使得网页可以在webView中打开 webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; //return super.shouldOverrideUrlLoading(view, url); } //WebViewClient帮助WebView去处理一些页面控制和请求通知 }); //启用支持javascript WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); //优先使用缓存加载 webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { //newProgress 1-100的整数 if(newProgress == 100){ //网页加载完毕,关闭ProgressDialog closeDialog(); }else{ //网页正在加载,打开ProgressDialog openDialog(newProgress); } } private void closeDialog() { if(dialog!=null && dialog.isShowing()){ dialog.dismiss(); dialog = null; } } private void openDialog(int newProgress) { if (dialog == null){ dialog = new ProgressDialog(MainActivity.this); dialog.setTitle("正在加载中"); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式 dialog.show(); }else{ dialog.setProgress(newProgress); } } }); } //改写手机物理按键返回逻辑 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { 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); }}
0 0
- Android开发笔记—WebView、ProgressDialog的基础使用
- Android开发学习笔记:WebView的使用
- android学习笔记之ProgressDialog的使用
- Android开发之ProgressDialog的使用
- Android开发手记(8) ProgressDialog的使用
- Android WebView 开发使用笔记
- Android ProgressDialog的使用
- android progressDialog的使用
- android ProgressDialog与webview
- 【Android开发】一闪而过的ProgressDialog
- Android笔记(6) ---ProgressBar和ProgressDialog的使用
- Android中ProgressDialog的使用
- Android入门笔记 - 界面开发 - ProgressDialog
- Android开发实战之——ProgressDialog的使用(一)
- Android WebView使用基础
- Android WebView使用基础
- Android WebView使用基础
- android WebView基础使用
- Android Studio阅读Android源码
- NOJ 1133 百钱百鸡问题
- 数组倒序 & 字符串倒序
- 提升服务效率就这么简单
- java基础之 “if ”条件分支语句和switch开关语句
- Android开发笔记—WebView、ProgressDialog的基础使用
- 解决Python通过STMP发送邮件出现socket.error: [Errno 10061]
- 我的开发之路之如何让ListView滚动到第一行
- exec函数族
- [刷题]算法竞赛入门经典(第2版) 5-15/UVa12333 - Revenge of Fibonacci
- re:hdu1166敌兵布阵
- 第一篇博客!!!!!
- 原声js 的兼容(屏幕尺寸、事件处理程序、阻止事件冒泡、事件目标等等)
- web开发时自动刷新网页:liveReload安装,sublime 3