感觉这个排版看起来更舒服 Android WebView简单使用以及实现native与h5交互
一、WebView
谷歌提供的系统组件,用来加载和展现html网页,其采用webkit内核驱动,来实现网页浏览功能。
拥有load() URL和本地html文件。
// 云端 webView.loadUrl("https://www.baidu.com");
// 本地 webView.loadUrl("file:///android_asset/demo.html");
注意:
1. loadUrl()必须在主线程中执行。
2. 加载在线网页地址是会用到联网permission
权限的,所以需要在AndroidManifest.xml
中写入下面代码申请权限:
<uses-permission android:name="android.permission.INTERNET" />
3. 打开本地html文件时,是不需要设置WebViewClient
,对应的asstes
目录的url为:file:///android_asset/xxxxx
。
4. WebView基本设置
如果我们需要设置WebView的属性,是通过WebView.getSettings()获取设置WebView的WebSettings对象,然后调用WebSettings中的方法来实现的。
// 是否支持缩放,配合方法setBuiltInZoomControls使用,默认true
setSupportZoom(boolean support)
//是否需要用户手势来播放Media,默认true
setMediaPlaybackRequiresUserGesture(boolean require)
是否显示窗口悬浮的缩放控制,默认true
setDisplayZoomControls(boolean enabled)
是否允许访问WebView内部文件,默认true
setAllowFileAccess(boolean allow)
是否保存表单数据,默认false
setSaveFormData(boolean save)
// 设置页面文字缩放百分比,默认100%
setTextZoom(int textZoom)
。。。。。。
二、WebViewClient
WebViewClient主要辅助WebView执行处理各种响应请求事件的,比如:
1. onLoadResource(WebView view, String url)
在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onLoadResource ");
}
super.onLoadResource(view, url);
}
- onPageStarted(WebView view, String url, Bitmap favicon)
在页面加载开始时调用。
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
if (DEBUG) {
Log.d(TAG, " onPageStarted ");
}
if (url.endsWith(".apk")) {
download(url);//下载处理
}
super.onPageStarted(view, url, favicon);
}
- onPageFinished(WebView view, String url)
在页面加载结束时调用。
- onReceivedError(WebView view, int errorCode,String description, String failingUrl)
加载错误的时候会回调,在其中可做错误处理,比如再请求加载一次,或者提示404的错误页面
这里有四个参数:
+ WebView view:当前的WebView实例
2. int errorCode:错误码
3. String description:错误描述
4. String failingUrl:当前出错的URL
如加载返回错误时,重新加载错误页面:
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
mWebView.loadUrl("file:///android_asset/error.html");
}
});
- shouldOverrideUrlLoading(WebView view, String url)
拦截 url 跳转,在里边添加点击链接跳转或者操作
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//拦截某个URL,将其转换成其它URL可以在这里做
view.loadUrl(url);
return true;
}
在点击请求的是链接是才会调用,重写此方法返回tr