WebView的使用详情

来源:互联网 发布:网络用语pc是什么意思 编辑:程序博客网 时间:2024/05/04 08:10

WebView使用详解

 

 

***关于WebView的介绍

       官方文档:

* <p>A View that displays web pages. This class is the basis upon which you* can roll your own web browser or simply display some online content within your Activity.* It uses the WebKit rendering engine to display* web pages and includes methods to navigate forward and backward* through a history, zoom in and out, perform text searches and more.</p>* <p>Note that, in order for your Activity to access the Internet and load web pages* in a WebView, you must add the {@code INTERNET} permissions to your* Android Manifest file:</p>* <pre>&lt;uses-permission android:name="android.permission.INTERNET" /></pre>

  使用特点

1.    用来显示Web页面

2.    通过本地方法来向前 向后 浏览历史 放大 缩小 设置字体等功能

3.    需要添加网络权限

***关于WebView的用法

1.    WebView提供了一个像浏览器一样的组件,默认情况下不支持javascript并且Web所有的错误信息都忽略了,如果说你是只是单单的显示一些html的内容使用默认情况下还是挺不错的,当然你也可以通过parse网页地址,然后通过意图打开startActivity

2.    WebView的加载网页

a)      loadData(String data, String mimeType,String encoding)传入得参数 data 是你需要解析的html内容   mine text/html 说明内容(注意 时候加载出来的内容出现了乱码的情况就在后面添加charset=‘utf-8’)encoding 是编码一般是utf-8

b)      public void loadUrl(String url) 这里传入得是url  注意格式(http://地址)

3.     自定义WevView的一些功能

a)      WebChromeClient它主要是UI方面的 比如进度条javascript alerts

b)      WevViewClient当发生渲染内容 错误 的时候就会被调用 你也可以使用shouldOverrideUrlLoading拦截URL

c)      WebSetting比如是否允许javascript 映射java对象到页面JavaScript,然后通过网页进行一些读取操作

4.     使用例子

a)      进度条和错误信息的显示

getWindow().requestFeature(Window.FEATURE_PROGRESS);

 *webview.getSettings().setJavaScriptEnabled(true);

 *

 * final Activityactivity = this;

 *webview.setWebChromeClient(new WebChromeClient() {

 *   public void onProgressChanged(WebView view,int progress) {

 *     // Activities and WebViews measureprogress with different scales.

 *     // The progress meter will automaticallydisappear when we reach 100%

 *     activity.setProgress(progress * 1000);

 *   }

 * });

 *webview.setWebViewClient(new WebViewClient() {

 *   public void onReceivedError(WebView view,int errorCode, String description, String failingUrl) {

 *     Toast.makeText(activity, "Oh no!" + description, Toast.LENGTH_SHORT).show();

 *   }

 * });

 *

 *webview.loadUrl("http://www.baidu.com/");

这里我们之前也说过了 WevVIewClient是用来处理网页操作的  而WevChromeClient是用来做UI方面的处理

         b).HTML5的支持

                        1.首先支持HTML5 需要打开硬件加速android:hardwareAccelerated="true"
                 2.支持全屏幕 需要实现WevChromeClient的两个方法 onShowCustomView和onHideCustomVIew(这两个是必须的)也可以通过getVideoLoadingProgressView 自定义显示

         c).HTML地理位置的支持 

                   仅仅支持Android N或者更晚一些 比如https方面的 其他的版本自定隐藏的坐标 onGeolocationPermissionsShowPrompt

         d).关于WebView的大小推荐使用一个固定值或者MATCH_PARENT,如果WebView没有父容器应该使用WRAP_CONTENT布局高度比如HTML已经设置了布局的高度

4.关于WevView和js交互代码

WebSettings settings = web.getSettings();
//设置允许javascript
   settings.setJavaScriptEnabled(true);
//设置自动打开窗口 默认为false
   settings.setJavaScriptCanOpenWindowsAutomatically(true);
//这里注射对象到js   第二个参数是js的名字
   web.addJavascriptInterface(new MyClass(), "dojs");    //加载网页地址
b.loadUrl("http://item.btime.com/mil/35m5i48l7nj9h4ocn4aajm7jm4u?from=haoz1t1p2");    web.setWebViewClient(new WebViewClient() {        @Override        public void onPageFinished(WebView view, String url) {            super.onPageFinished(view, url);            show();        }    });}private void show() 
//这里调用格式javascript:window.js名字.方法  的格式
adUrl("javascript:window.dojs.show(document.getElementsByTagName('title')[0].innerHTML)");}private class MyClass {
//4.2以后 通过注解去找到方法    @JavascriptInterface    public void show(String s) {        getString(s);    }}private void getString(final String s) {    Toast.makeText(this, s, Toast.LENGTH_SHORT).show();    Log.i("getstring", "getString: " + s);}

 

 

 

 

 

 

              

1 0
原创粉丝点击