android 加载webview网页

来源:互联网 发布:淘宝友邦电器城假货 编辑:程序博客网 时间:2024/05/16 23:54
一: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对象 * WebViewWebSettings 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() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//防止白屏view.loadUrl(url);LogUtils.e(url);//}return true;}/*通知主机完成加载*/@Overridepublic 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);}/*开始加载*/@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {view.getSettings().setJavaScriptEnabled(true);super.onPageStarted(view, url, favicon);//LogUtils.e("开始加载网页·······" + url.toString() + url);}@Overridepublic void onLoadResource(WebView view, String url) {super.onLoadResource(view, url);//LogUtils.e("正在加载网页·······");}//防止白屏@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {super.onReceivedSslError(view, handler, error);handler.proceed();//接受所有证书}@Overridepublic 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 0
原创粉丝点击