android 加载webview网页

一:xml
<WebView
                android:id="@+id/wb_details"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                android:layout_alignParentTop="true" />


二:初始化布局

mWebView = (WebView) findViewById(R.id.wb_details);
三:优化webview的加载,设置监听
private void initWebView() {
		LogUtils.e("初始化webview······");
//		获得用于控制设置的WebSettings对象 * WebView
		WebSettings settings = mWebView.getSettings();

		if (mWebView != null){
			settings.setJavaScriptEnabled(true);// 设置可以运行JS脚本
			settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
			settings.setSupportZoom(false);// 用于 设置webview放大
			settings.setBuiltInZoomControls(true);

			mWebView.requestFocus();
			mWebView.setScrollBarStyle(0);

			/*webview加载缓慢*/

			//1、提高渲染的优先级

			settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
			//2,把图片放到最后渲染
			settings.setBlockNetworkImage(true);
			// 开启H5(APPCache)缓存功能
			settings.setAppCacheEnabled(true);
			// 开启 DOM storage 功能
			settings.setDomStorageEnabled(true);
			// 应用可以有数据库
			settings.setDatabaseEnabled(true);

			// 根据网络连接情况,设置缓存模式,
			if (NetTools.isConnected(mContext)) {
				settings.setCacheMode(WebSettings.LOAD_DEFAULT);// 根据cache-control决定是否从网络上取数据
			} else {
				settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 先查找缓存,没有的情况下从网络获取。
			}
			// 可以读取文件缓存(manifest生效)
			settings.setAllowFileAccess(true);

			settings.setSupportMultipleWindows(true);//支持多窗口打开

			// 清除缓存和记录   用来处理webview开始载入时候出现白屏
			mWebView.clearCache(true);
			mWebView.clearHistory();

			mWebView.setBackgroundResource(R.color.transparent);
			mWebView.setWebViewClient(mWebViewClient);
			LogUtils.e("监听webview······");
		}

	}

四:实现监听:

private WebViewClient mWebViewClient = new WebViewClient() {
		@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
				//防止白屏
				view.loadUrl(url);
			LogUtils.e(url);
//			}
			return true;
		}
		/*通知主机完成加载*/
		@Override
		public void onPageFinished(WebView view, String url) {
			view.getSettings().setJavaScriptEnabled(true);
			//判断webview是否加载了,图片资源
			view.getSettings().setBlockNetworkImage(false);
			if (!view.getSettings().getLoadsImagesAutomatically()) {
				//设置wenView加载图片资源
				view.getSettings().setLoadsImagesAutomatically(true);
			}
			super.onPageFinished(view, url);

//			内容出现空白处理
			//这个是一定要加上那个的,配合scrollView和WebView的height=wrap_content属性使用
			int w = View.MeasureSpec.makeMeasureSpec(0,
					View.MeasureSpec.UNSPECIFIED);
			int h = View.MeasureSpec.makeMeasureSpec(0,
					View.MeasureSpec.UNSPECIFIED);
			//重新测量
			mWebView.measure(w,h);

		}
		/*开始加载*/
		@Override
		public void onPageStarted(WebView view, String url, Bitmap favicon) {
			view.getSettings().setJavaScriptEnabled(true);
			super.onPageStarted(view, url, favicon);

//			LogUtils.e("开始加载网页·······" + url.toString() + url);
		}

		@Override
		public void onLoadResource(WebView view, String url) {
			super.onLoadResource(view, url);
//			LogUtils.e("正在加载网页·······");
		}

		//防止白屏
		@Override
		public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
			super.onReceivedSslError(view, handler, error);
			handler.proceed();//接受所有证书
		}

		@Override
		public void onReceivedError(WebView view, int errorCode,
				String description, String failingUrl) {
			mProgressBar.setVisibility(View.GONE);
			Toast.makeText(mContext, "加载失败!", Toast.LENGTH_SHORT).show();
			super.onReceivedError(view, errorCode, description, failingUrl);
		}
	};


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值