在android中,经常要加载一些网页,有很属性是常用的,也有很多是必须的,做过笔记备用
settings = mIdWebMain.getSettings();
settings.setUseWideViewPort(true);//将图片调整到适合webView的大小
settings.setDefaultTextEncodingName("utf-8");//编码格式
settings.setSupportZoom(false);//是否支持缩放
settings.setBuiltInZoomControls(false);//是否显示缩放工具
settings.setLoadsImagesAutomatically(true);//是否支持自动加载图片
settings.setAllowFileAccess(true);//设置可以访问文件
settings.setJavaScriptEnabled(true);//支持JS
settings.setDomStorageEnabled(true);//DOM的连接支持
settings.setAppCacheEnabled(true);//是否使用缓存api集
// settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
settings.setCacheMode(WebSettings.LOAD_DEFAULT);//根据cache-control决定是否从网络上取数据
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);// 重新布局
//解决5.0以上ssl不兼容的问题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
常见的在自己的webView的操作
//打开网页时不调用系统浏览器, 而是在本WebView中显示
mWebView.setWebViewClient(new webOnclick());
/**
* webView内事件的处理
*/
private class webOnclick extends WebViewClient {
/**
* ssl验证
*
* @param view
* @param handler
* @param error
*/
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();//接受ssl验证
}
/**
* 这个事件就是开始载入页面调用的
*/
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
/**
* 在点击请求的是链接是才会调用
* 打开网页时不调用系统浏览器, 而是在本WebView中显示
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
WebView.HitTestResult hit = view.getHitTestResult();
// ------ 对相关的scheme处理 -------
if (!url.startsWith("http:") && !url.startsWith("https:")) {//对不是网页开头的当成scheme
try {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));//启动app操作
} catch (Exception e) {
Log.i(TAG, "未安装:" + url);
return false;
}
return true;
}
int hitType = hit.getType();
if (hitType == WebView.HitTestResult.SRC_ANCHOR_TYPE) {//点击超链接
//访问链接
view.loadUrl(url);
return true;//返回true浏览器不再执行默认的操作
} else if (hitType == 0) {//重定向时hitType为0
return false;//不捕获302重定向
} else {
return false;
}
}
/**
* 在页面加载结束时调用
*/
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
}
再退出activity的时候可以清理一些数据
@Override
protected void onDestroy() {
mWebView.onPause();
mWebView.destroy();
super.onDestroy();
}