在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(); }