WebView的使用

来源:互联网 发布:cv模板 知乎 编辑:程序博客网 时间:2024/06/05 02:39

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),而不是一个简单的url2.根据核心具体,拼接本地的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、先主动调用androidwindow.jsInterface.getHotelData()2、android回掉JS,android调用JS中的方法,必须要放在主线程中执行 android调用JS中的方法,这个JS的方法名不要写死,而是解析JS传过来的json数据,得到方法名,这样就可以降低耦合
原创粉丝点击