WebView简介(加速加载篇)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
当我们在使用WebView时,如果加载的网友比较大,这加载速度将非常慢。
现总结几种加速WebView加载的方法
1、提高渲染的优先级
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
2、使用 webView.getSettings().setBlockNetworkImage ,把图片加载放在最后来加载渲染。参照示例1 .
3,使用硬件加速,该功能在Android 3.0 (API level 11)才加入。具体参照http://developer.android.com/guide/topics/graphics/hardware-accel.html
示例1:
package com.robin;

import com.robin.R;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.RenderPriority;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;

/**
 * @author Administrator
 * 
 */
public class   MyActivity   extends  Activity {
private WebView webView;
final static String TAG = "MyActivity";
Handler handler = new Handler();
boolean blockLoadingNetworkImage=false;
//static long t=0;
//static long t1=0;
String link;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
link = getIntent().getStringExtra("url");
setContentView(R.layout.news_details);

webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setRenderPriority( RenderPriority.HIGH );
webView.getSettings().setBlockNetworkImage( true );
blockLoadingNetworkImage=true;
webView.setWebChromeClient( new  WebChromeClient () {
public void   onProgressChanged (WebView view, int progress) {
// Activities and WebViews measure progress with different
// scales.
// The progress meter will automatically disappear when we reach
// 100%
//Log.i(TAG, "progress:" + progress);
if(loadingProgressDialog!=null&&loadingProgressDialog.isShowing())
loadingProgressDialog.setProgress(progress);
if (progress >= 100) {
/*if(t==0)
t=System.currentTimeMillis()-t1;
else
t=(t+System.currentTimeMillis()-t1)>>1;
t1=System.currentTimeMillis()-t1;
Log.i(TAG, "t:" + t/1000+" t1:"+t1/1000);*/
if(blockLoadingNetworkImage)
{
webView.getSettings().setBlockNetworkImage( false );
blockLoadingNetworkImage=false;
}
if (loadingProgressDialog!=null&&loadingProgressDialog.isShowing())
dismissDialog(PROGRESS_DIALOG_CONNECTING);
}
}
});
Runnable r = new Runnable() {
public void run() {
webView.loadUrl(link);
//t1=System.currentTimeMillis();
Log.i(TAG, "url:" + link);
showDialog(PROGRESS_DIALOG_CONNECTING);
}
};
handler.postDelayed(r, 200);

}

protected void   onResume()  {
super.onResume();
if (webView.getProgress() < 100)
showDialog(PROGRESS_DIALOG_CONNECTING);
}

protected void   onDestroy()  {
webView.stopLoading();
webView.destroy();
super.onDestroy();
}

final static int PROGRESS_DIALOG_CONNECTING = 1000;
ProgressDialog loadingProgressDialog = null;

@Override
protected Dialog   onCreateDialog (int id) {
switch (id) {
case PROGRESS_DIALOG_CONNECTING: {
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage(getResources()
.getString(R.string.loading));
loadingProgressDialog = progressDialog;
return progressDialog;
}
default:
break;
}
return null;
}

protected void  onPrepareDialog (int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
switch (id) {
case PROGRESS_DIALOG_CONNECTING: {
loadingProgressDialog.setMax(100);
dialog.show();
}
break;
default:
break;
}
}

}

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/fjjjyf/article/details/83997876