Android中 "WebView"的使用
来源:互联网 发布:linux运行级别介绍 编辑:程序博客网 时间:2024/05/21 11:26
很多知识点还是得总结总结,尽管用过多次,没总结就注定得忘记
1.”WebView” 加载的监听:
WebView.setWebViewClient(new WebViewClient(){ /**页面开始加载的时候调用的方法*/ @Override public void onPageStarted(WebView v,String url,Bitmap favicon){ super.onPageStarted2(v,url,favicon); //.... mLoading.setVisibility(View.VISIBLE); } /**页面结束的时候调用的方法*/ @Override public void onPageFinished(WebView view,String url){ super.onPageFinished(); mLoading.setVisibility(View.INVISIBLE); } /网页加载失败时调用,隐藏加载提示旋转进度条 @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); progressBar.setVisibility(android.view.View.GONE); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 注意:当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器 //要返回true,就得加view.loadUrl(url);否则网页链接无法跳转 //除非需求是不让网页上的链接被点击的时候执行跳转 view.loadUrl(url); return true; } });
2.”WebView” 加载网页
WebView.loadUrl(url);// 载入这个html页面WebView.loadData(htmlString, "text/html", "utf-8"); //显示文字与图片内容 (模拟器1.5、1.6) webView.LoadDataWithBase(String baseUrl, String data, String mimeType, String encoding, String historyUrl); //显示文字与图片内容(支持多个模拟器版本) 示例: String baseURL = "file:///mnt/sdcard/"; //根URL String html = "<html><body>" + "<h3>image from sdcard:<h3><br/>" + "<img src='webview_capture.jpg' style='border:2px solid #FF0000;'/>" + "</body></html>"; //加载相对于根URL下的数据,historyUrl设为null即可 webView.loadDataWithBaseURL(baseURL, html, "text/html", "utf-8", null);
3.”WebView” 设置页面字体大小
WebSettings webSettings = WebView.getSettings();//设置字体大小webSettings.setTextSize(TextSize.LARGER);webSettings.setTextSize(TextSize.LARGEST);webSettings.setTextSize(TextSize.NORMAL);webSettings.setTextSize(TextSize.SMALLER);
4.”WebView” 设置JS可用
WebSettings webSettings = WebView.getSettings();webSettings.setJavascriptEnabled(true);
5.”WebView” 设置支持缩放
WebSettings webSettings = WebView.getSettings();//设置WebView是否支持使用屏幕控件或手势进行缩放,默认是true,支持缩放,需要和"setBuiltInZoomControls一起使用"settings.setSupportZoom(true); //是否使用其内置的变焦机制,默认false,不使用webSettings.setBuiltInZoomControls(true); //设置WebView是否显示缩放显示(+ -)按钮,默认true,使用的 webSettings.setDisplayZoomControls(false); webSettings.setUseWideViewPort(true); //支持双击缩放(wap网页不支持)
6.”WebView” 设置禁止浏览器打开,只许在WebView打开网页
webView.setWebChromeClient(new WebChromeClient(){ @Override public void onReceivedTitle(WebView v,String title){ super.onReceivedTitle(v,title); //title 为WebView网页的标题 } @Override public void onProgressChanged(WebView view,int newProgress){ super.onProgressChanged(view,newProgress); //newProgress 为网页被加载的进度 }});
7.”WebView” 设置前进后退
api: WebView.canGoBack(); //判断webView是否可后退 WebView.goBack(); //WebView当前的网页后退 WebView.canGoForward(); //判断webView是否可前进 WebView.goForward(); //WebView当前的网页前进
8.”WebView” 设置加载缓存模式,当网页支持缓存的时候缓存才能起效果
WebSettings webSettings = WebView.getSettings();WebSettings.LOAD_CACHE_ELSE_NETWORK //先加载缓存再从网络加载WebSettings.LOAD_CACHE_ONLY //只加载缓存WebSettings.LOAD_NO_CACHE //不加载缓存webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);缓存在本地的数据可以通过代码设置进行清除操作WebView.clearCache(true);另一种方式: File file = CacheManager.getCacheFileBaseDir(); if(file!=null && file.exists() && file.isDirectory()){ for(File item:file.listFiles()){ item.delete(); } file.delete(); }//删除数据库context.deleteDatabase("webview.db");context.deleteDatabase("webViewCache.db");
9.Js调用Android代码
注意: 将demo.html导入到资产目录assets中,在onCreate()方法中直接使用webView加载本地Html,这 里要注意本地路径是android_asset。本地创建一个接口onJSCallAndroid,设置一个抽象方法 onCallback(),这个方法名是与js中设置的方法名相对应的,WebView通过 addJavaScriptInterface()方法就可以实现js调用android代码了,它需要传2个参数,第一个 刚定义的接口,第二个是要与js中对应的对象名字"demo" webview.loadUrl("file:///android_asset/demo.html"); //添加一个js接口 //第一个参数表示添加的接口 //第二个参数,表示接口的第二个名字一致 webView.addJavascriptInterface(new onJSCallAndroid(){ //onCallback必须和接口的第三个参数名字一致 @JavascriptInterface //注意:此处一定要加该注解,否则在4.1+系统上运行失败 @Override public void onCallback(){ Toast.makeText(getApplicationContext(),"js调用android代码",0).show(); } } },"demo"); /**js调用android代码*/ public interface onJSCallAndroid(){ public void onCallback(); }/**demo.html*/<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <script language="javascript"> function wave(){ alert("Android调用JS"); } </script> <body> <!--Js调用Android代码--> <a onClick="window.demo.onCallback()"></a> //注意这里调用的名称与上面的一致 </body></html>
10.android调用js代码
api: webView.loadUrl("javascript:wave()");
11.webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。
api: webview.requestFocusFromTouch(); requestFocus(); // 触摸焦点起作用
12.注意:
webView与js的交互中,涉及到的提供给js去调用的接口类不能混淆,否则会导致找不到而报错,将as中的proguard-rules.pro文件下面这行注释打开,包名进行替换即可-keepclassmembers class com.test.webview.DemoJavaScriptInterface$onJSCallAndroid{ public *;}高版本需加上-keepattributes *Annotation* -keepattributes *JavascriptInterface*
13.参考Url
http://blog.csdn.net/liuhe688/article/details/6549263http://blog.csdn.net/chenshijun0101/article/details/7045394http://teachcourse.cn/android-webview-websettings
0 0
- Android中webview的使用
- android 中webView的使用
- Android中webview的使用
- Android中WebView的使用
- Android 中WebView的使用
- Android中webview的使用
- Android中WebView的使用
- android中webview的使用
- android中WebView 的使用
- Android中webview的使用
- Android中 "WebView"的使用
- Android中WebView的使用
- Android中WebView的使用
- Android中WebView的使用
- Android中webview的使用
- Android中WebView的使用
- Android中webView的使用
- Android中WebView的使用
- c++ 调用 oc
- itoa的实现
- ListView中嵌套ListView
- scrollView ——自动轮播并且设置图片底部小圆点
- Android ANR问题
- Android中 "WebView"的使用
- codeforces 703C
- 拦截器在struts2中的应用
- 【60】把二叉树打印成多行
- 侧滑菜单HorizontalScrollView,类中如何使用intent跳转
- OkHttp
- ZooKeeper的原生API
- nginx负载均衡配置
- jzoj 2549. 【NOIP2011模拟9.4】家庭作业