美文网首页
WebView的使用

WebView的使用

作者: Funny灬 | 来源:发表于2017-11-24 22:59 被阅读0次

    WebView的基本使用

    1.加载本地的assets目录下的html文件 
        wv.loadUrl("file:///android_asset/hm47.html")
    2.加载网络的html文件,如果自身client打开需要设置WebViewClient
        wv.loadUrl("http://bbs.itheima.com");
    3.监听加载进度,可以用来显示进度条进度
        wv.setOnWebChromeClient(){
            onProgressChanged(WebView view,int progress);
        }
    4.监听加载完成,可以显示和隐藏进度条
        wv.setWebViewChilent(){
            //开始加载
            onPageStarted()
            //加载完成
            onPageFinished();
        }
    5.设置不跳到我们的内置浏览器
        mv.setWebViewChilent(){
             @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        }
        
    6.webView的回退操作
       重写onKeyDown,当为返回键并且webview可以回退的时候,调用webview的回调,否则直接finish
       public boolean onKeyDown(int keyCode, KeyEvent event) { 
              if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) { 
                  wv.goBack(); //goBack()表示返回WebView的上一页面 
                  return true; 
              } 
              return false; 
        }   
        
    7.设置允许代码中有js操作
        setting = wv.getSettings();
        setting.setJavaScriptEnabled(true);
    
    8.设置字体的大小
        setting.setTextSize(Textsize.Larger);
    

    WebView的中级使用

    1.java中调用js代码
        String js = "alert('加油')";
        mv.loadUrl("javascript:"+js);
    2.js中调用java
        1,在android定义一个类,在类中中定义要在js中调用的方法,要添加@JavascriptInterface注释
        2,在html中的script中调用该方法
        window.object.method();
        3,在方法中可以传递字符串,也可以传递json,但是传json前,要将json转为字符串
    

    WebView的高级使用

    js,css放在本地assets目录
    1.请求的时候,只需要返回核心的数据(body title author pubtime),而不是一个简单的url
    2.根据核心具体,拼接本地的css/js,形成最终的网页内容
    3.使用loadDataWithBaseURL去加载拼接之后的网页,而不是通过loadurl
    

    优化网页加载速度

    设置WebView, 先禁止加载图片
    覆写WebViewClient的onPageFinished()方法, 页面加载结束后再加载图片
    

    Android和JS交互

    1.写一个H5和Android通信桥梁类JavaScripteMethod ,管理所有H5和Android通信。这里面的方法用来给 JS调用(比如写一个showToast方法),需要加一个注解@JavascriptInterface,保证安全问题,防止JS通过反射调用Android中的其他方法。
    2.设置H5和android通信的接口 
    3.JS端调用Android方法:window.映射字符串.方法名 
        var json = {"message" : "你好,我是JS", "name" : "js"};
        window.jsInterface.showToast(Json.stringify(json));
    
    JS callback式回调Android
    网络请求由Android端来做。JS不用再用ajax来做网络请求,直接回掉Android端即可,减少重复的网络请求工作 
    1、先主动调用android
    window.jsInterface.getHotelData()
    2、android回掉JS,
    android调用JS中的方法,必须要放在主线程中执行 
    android调用JS中的方法,这个JS的方法名不要写死,而是解析JS传过来的json数据,得到方法名,这样就可以降低耦合
    

    相关文章

      网友评论

          本文标题:WebView的使用

          本文链接:https://www.haomeiwen.com/subject/helqbxtx.html