《第一行代码-Android》学习笔记(二十一)WebView控件总结【修改】
2015-04-19 20:44
645 查看
1.加载页面
1.1.web资源
webview.loadUrl("http://192.168.1.100:8080/Web/index.html")
1.2.本地资源
本地文件使用:webView.loadUrl("file://android_asset/XX.html"); 本地文件存放位置:assets文件夹中
2.监听页面加载状态,提高用户体验
// 监听加载是否完成 webview.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if(newProgress == 100) { // 网页加载完成,关闭progressdialog closeDialog(); } else { // 加载中,打开progressdialog openDialog(newProgress); } } }); protected void closeDialog() { if(dialog!=null&&dialog.isShowing()){ dialog.dismiss(); dialog=null; } } protected void openDialog(int newProgress) { if(dialog == null) { dialog = new ProgressDialog(this); dialog.setTitle("加载中..."); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setProgress(newProgress); dialog.setCancelable(false); dialog.show(); }else{ dialog.setProgress(newProgress); dialog.show(); } }
3.Android调用js
3.1.android代码
// activity调用webview页面中的js 因为是网络请求,需要开启线程执行 这里使用了handler findViewById(R.id.ask_js_btn).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mHandler.post(new Runnable() { public void run() { //执行页面的某个js方法 webview.loadUrl("javascript:wave()"); } }); } });
3.2.页面js代码
<script type="text/javascript"> function wave() { document.getElementById("droid").src="portrait1.jpeg"; }; </script>
4.js调用Android方法
4.1.js代码
<a onClick="window.demo.clickOnAndroid()"> <img id="droid"src="portrait2.jpeg"/> <br>Click me! </a>
4.2.android代码
//addJavascriptInterface(Object obj,String interfaceName)这个方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo), //作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。
webview.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(WebActivity.this, "页面点击了!", Toast.LENGTH_SHORT).show(); webview.loadUrl("javascript:wave()"); } }); } }, "demo");
5.提升webview浏览网页速度提升
5.1.代码实现
//设置webview优先使用缓存加载 webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
5.2.缓存位置
data/data/包名/cache;data/data/包名/database ===>缓存在这个里面 如果我们要清缓存,只要清除这两个文件夹就可以了;
6.注意点总结
1.网络权限的设置
AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
2.JavaScript属性开关设置
如果访问的页面中有Javascript,则webview必须设置支持Javascript。 webview.getSettings().setJavaScriptEnabled(true);
3.是否新开android浏览器打开连接设置
如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
mWebView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } });
6.4.4.系统BACK键功能拦截
如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身; 如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } else if((keyCode == KeyEvent.KEYCODE_BACK) && !webview.canGoBack()) { finish();// 退出此activity return true; } return super.onKeyDown(keyCode, event); }
相关文章推荐
- 使用Android的WebView控件调用本地代码
- 第一行代码笔记10(WebView控件)
- 第一行代码总结:10网络:10.1WebView的用法
- Android代码与webview控件的交互
- 修复android下webView控件的总结
- Android之WebView控件简单使用总结
- [置顶] Android开发之常用框架WebView详解代码。超详细,送给初学者,完全掌握此控件
- android之WebView控件的使用方法总结
- Android开发之常用框架WebView详解代码。超详细,送给初学者,完全掌握此控件
- 在android开发中遇到的WebView控件相应的总结
- HTML5学习总结-10 Android 控件WebView显示网页
- Android控件WebView的属性设置和相关常用方法总结
- Android WebView通过代码修改网页的字体大小
- Android第一行代码 第九章 webview以及httpUrlConnection,okhttp
- Android上实现WebView控件的完整截图
- [置顶] 【Android开发技巧】 关于Webview拍照或从相册上传图片处理总结
- android第一行代码 第三章 常用基础控件
- Android 视频展示控件之 SurfaceView、GLSurfaceView、SurfaceTexture、TextureView 对比总结
- Android WebView —— Java 与 JavaScript 交互总结
- android 调用webview控件,为逆向h5app做准备