WebView的使用详情

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值