Android Webview使用
来源:互联网 发布:淘宝直播镜像怎么安装 编辑:程序博客网 时间:2024/06/15 14:06
现在很多App里都内置了Web网页,比如说很多电商平台,淘宝等等…那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。
webview状态
//激活WebView为活跃状态,能正常执行网页的响应webView.onResume() ;//当页面被失去焦点被切换到后台不可见状态,需要执行onPause//通过onPause动作通知内核暂停所有的动作,比如DOM的解析、plugin的执行、JavaScript执行。webView.onPause();//当应用程序(存在webview)被切换到后台时,这个方法不仅仅针对当前的webview而是全局的全应用程序的webview//它会暂停所有webview的layout,parsing,javascripttimer。降低CPU功耗。webView.pauseTimers()//恢复pauseTimers状态webView.resumeTimers();//销毁Webview//在关闭了Activity时,如果Webview的音乐或视频,还在播放。就必须销毁Webview//但是注意:webview调用destory时,webview仍绑定在Activity上//这是由于自定义webview构建时传入了该Activity的context对象//因此需要先从父容器中移除webview,然后再销毁webview:rootLayout.removeView(webView); webView.destroy();
关于前进 / 后退网页
//是否可以后退Webview.canGoBack() //后退网页Webview.goBack()//是否可以前进 Webview.canGoForward()//前进网页Webview.goForward()//以当前的index为起始点前进或者后退到历史记录中指定的steps//如果steps为负数则为后退,正数则为前进Webview.goBackOrForward(intsteps)
通过按back键时,不退出程序而是返回上一浏览页面
public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
清除webview缓存数据
//清除网页访问留下的缓存//由于内核缓存是全局的因此这个方法不仅仅针对webview而是针对整个应用程序.Webview.clearCache(true);//清除当前webview访问的历史记录//只会webview访问历史记录里的所有记录除了当前访问记录Webview.clearHistory();//这个api仅仅清除自动完成填充的表单数据,并不会清除WebView存储到本地的数据Webview.clearFormData();// 在onDestroy()中移除webview相关操作@Override public void onDestroyView() { if (mWebView != null)// 清除 { mWebView.setWebChromeClient(null); mWebView.setWebViewClient(null); // 先让 WebView 加载null内容,然后移除 WebView,再销毁 WebView,最后置空。 mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null); mWebView.clearCache(true); mWebView.clearHistory(); mWebView.clearFormData(); mWebView.clearSslPreferences(); mWebView.clearMatches(); mWebView.clearView(); } if (mMainView != null) { mMainView.removeAllViews(); if (mWebView != null) { mWebView.destroy(); mWebView = null; } } super.onDestroyView(); }
配置步骤1:添加访问网络权限(AndroidManifest.xml)
<uses-permission android:name="android.permission.INTERNET"/>
配置步骤2:生成一个WebView组件(有两种方式)
//方式1:直接在在Activity中生成WebView webView = new WebView(this)//方法2:在Activity的XML文件里添加webview控件:WebView webview = (WebView) findViewById(R.id.webView1);
配置步骤3:进行配置-利用WebSettings子类(常见方法)
//声明WebSettings子类WebSettings webSettings = webView.getSettings();//其他细节设置webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存 webSettings.setAllowFileAccess(true); //设置可以访问文件 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式//如果访问的页面中要与Javascript交互,则webview必须设置支持JavascriptwebSettings.setJavaScriptEnabled(true); //支持插件webSettings.setPluginsEnabled(true); //设置自适应屏幕,两者合用webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小 webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小//缩放操作webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件// 缓存 webSetting.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);webSetting.setAppCacheMaxSize(Long.MAX_VALUE);webSetting.setAppCacheEnabled(true);
WebViewClient 的方法全解
doUpdateVisitedHistory(WebView view, String url, boolean isReload) //(更新历史记录) onFormResubmission(WebView view, Message dontResend, Message resend) //(应用程序重新请求网页数据) onLoadResource(WebView view, String url) // 在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。 onPageStarted(WebView view, String url, Bitmap favicon) //这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。 onPageFinished(WebView view, String url) //在页面加载结束时调用。同样道理,我们知道一个页面载入完成,于是我们可以关闭loading 条,切换程序动作。 onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (报告错误信息) onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(获取返回信息授权请求) onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //重写此方法可以让webview处理https请求。onScaleChanged(WebView view, float oldScale, float newScale) // (WebView发生改变时调用) onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key事件未被加载时调用) shouldOverrideKeyEvent(WebView view, KeyEvent event)//重写此方法才能够处理在浏览器中的按键事件。 shouldOverrideUrlLoading(WebView view, String url) //在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。
阅读全文
0 0
- 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使用
- Android-WebView的使用
- C#:异步编程和线程的使用(.NET 4.5 )
- 四元数与旋转——学习笔记(二)
- 数组划分
- Float、double和Bigdecimal的区别
- Paint paint.setShader 着色器
- Android Webview使用
- 更改mysql字段的编码为utf8mb4
- Git Clone报错git did not exit cleanly (exit code 128)
- Java-继承
- nginx匹配规则说明以及匹配的优先级
- 动态添加瀑布流布局
- CentOS 7下sqlite3的问题修复
- 集成Dubbo服务(Spring)
- JAVA正则表达式 Pattern和Matcher