WebView 3:Handlerと組み合わせてネットワークリソースを読み込みながらコンテンツをロードする

3874 ワード

AndroidManifest.xmlファイルにネットワークアクセスを追加する権限の設定:

activity_main.xmlコード
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jt.http_01.MainActivity" >
    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />
</RelativeLayout>

WebViewLoadData2.JAvaコード
/**   
 *    HttpURLConnection      ,      
 *    WebView loadData(String data, String mimeType, String encoding)  ,  HTML  (        )
 *     Handler    UI  
 * @author jiatao   
 * @date 2015-5-1 
 * @version 1.0 
 */
package com.jt.http_01;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;
public class WebViewLoadData2 extends Activity {
 
 private WebView webView;
 private Handler handler = new Handler(); 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  initDisplay();//         
 }
 
 /**
  *      
  */
 public void initDisplay() {
  webView = (WebView) findViewById(R.id.webView1);
  //  HttpThread(String url,WebView webView,Handler handler)        
  new HttpThread("http://www.163.com", webView, handler).start();
 }
 
}

HttpThread.JAvaコード
 /**   
 *    HttpURLConnection      ,      
 *    WebView loadData(String data, String mimeType, String encoding)  ,  HTML  (        )
 *     Handler    UI  
 * @author jiatao   
 * @date 2015-5-1 
 * @version 1.0 
 */
package com.jt.http_01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.os.Handler;
import android.webkit.WebView;
public class HttpThread extends Thread {
 private String url;
 private WebView webView;
 private Handler handler;
 
 public HttpThread(String url,WebView webView,Handler handler){
  this.url = url;
  this.webView = webView;
  this.handler = handler;
 }
 
 @Override
 public void run() {
  // TODO Auto-generated method stub
  super.run();
  try {
   //  URL   HTTP   URL  
   URL httpUrl = new URL(url); 
   try {
    //  URL openConnection()      URL     HttpURLConnection    
    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
    //           
    conn.setReadTimeout(5000);
    //        
    conn.setRequestMethod("GET");
    final StringBuffer sb = new StringBuffer();
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String str;
    while((str = reader.readLine())!=null){
     sb.append(str);
    }
    handler.post(new Runnable() {
     
     @Override
     public void run() {
      // TODO Auto-generated method stub
      webView.loadData(sb.toString(), "text/html;charset=gb2312", "utf-8");
     }
    });
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}