WebView的使用
2017-11-24 本文已影响0人
Funny灬
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数据,得到方法名,这样就可以降低耦合