1. 程式人生 > >WebView簡介(加速載入篇)

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

這裡寫圖片描述