AysncTask异步加载图片 AysncTask异步加载图片

Java代码 复制代码  收藏代码
  1. package com.lilin.async;   
  2.   
  3. import cn.riddles.activity.R;   
  4. import android.app.Activity;   
  5. import android.content.Context;   
  6. import android.os.Bundle;   
  7. import android.view.LayoutInflater;   
  8. import android.view.View;   
  9. import android.view.ViewGroup;   
  10. import android.widget.BaseAdapter;   
  11. import android.widget.ImageView;   
  12. import android.widget.ListView;   
  13. import android.widget.TextView;   
  14.   
  15. public class Main extends Activity {   
  16.     public ListView listView;   
  17.     public static String[] strings = { "王力宏""吴尊""何润东" };   
  18.     public static String[] paths = {   
  19.             "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wang_li_hong.jpg",   
  20.             "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_zun.jpg",   
  21.             "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/he_run_dong.jpg" };   
  22.   
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState) {   
  25.         super.onCreate(savedInstanceState);   
  26.         setContentView(R.layout.main);   
  27.         listView = (ListView) this.findViewById(R.id.test_lv);   
  28.         listView.setAdapter(new MyAdapter(this));   
  29.     }   
  30.   
  31. }   
  32.   
  33. class MyAdapter extends BaseAdapter {   
  34.     private Context context;   
  35.   
  36.     public MyAdapter(Context context) {   
  37.         this.context = context;   
  38.     }   
  39.   
  40.     public void setcontext(Context context) {   
  41.         this.context = context;   
  42.     }   
  43.   
  44.     public int getCount() {   
  45.         return Main.paths.length;   
  46.     }   
  47.   
  48.     public Object getItem(int position) {   
  49.         return null;   
  50.     }   
  51.   
  52.     public long getItemId(int position) {   
  53.         return 0;   
  54.     }   
  55.   
  56.     public View getView(int position, View convertView, ViewGroup parent) {   
  57.         convertView = LayoutInflater.from(context).inflate(R.layout.listview,   
  58.                 null);   
  59.         ImageView imageView = (ImageView) convertView.findViewById(R.id.image);   
  60.         TextView songer_tv = (TextView) convertView.findViewById(R.id.songer);   
  61.         imageView.setTag(Main.paths[position]);   
  62.         songer_tv.setText(Main.strings[position]);   
  63.         new ImageTask().execute(imageView);   
  64.         return convertView;   
  65.     }   
  66.   
  67. }  
package com.lilin.async;

import cn.riddles.activity.R;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Main extends Activity {
	public ListView listView;
	public static String[] strings = { "王力宏", "吴尊", "何润东" };
	public static String[] paths = {
			"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wang_li_hong.jpg",
			"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_zun.jpg",
			"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/he_run_dong.jpg" };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		listView = (ListView) this.findViewById(R.id.test_lv);
		listView.setAdapter(new MyAdapter(this));
	}

}

class MyAdapter extends BaseAdapter {
	private Context context;

	public MyAdapter(Context context) {
		this.context = context;
	}

	public void setcontext(Context context) {
		this.context = context;
	}

	public int getCount() {
		return Main.paths.length;
	}

	public Object getItem(int position) {
		return null;
	}

	public long getItemId(int position) {
		return 0;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		convertView = LayoutInflater.from(context).inflate(R.layout.listview,
				null);
		ImageView imageView = (ImageView) convertView.findViewById(R.id.image);
		TextView songer_tv = (TextView) convertView.findViewById(R.id.songer);
		imageView.setTag(Main.paths[position]);
		songer_tv.setText(Main.strings[position]);
		new ImageTask().execute(imageView);
		return convertView;
	}

}
Java代码 复制代码  收藏代码
  1. package com.lilin.async;   
  2.   
  3. import java.io.InputStream;   
  4. import java.net.HttpURLConnection;   
  5. import java.net.URL;   
  6. import android.graphics.Bitmap;   
  7. import android.graphics.BitmapFactory;   
  8. import android.os.AsyncTask;   
  9. import android.webkit.URLUtil;   
  10. import android.widget.ImageView;   
  11.   
  12. /**  
  13.  * 通过AsyncTask实现图片的异步加载  
  14.  *   
  15.  * @author lilin  
  16.  * @date 2011-9-5 上午08:45:12  
  17.  * @ClassName: ImageTask  
  18.  * @Description: 特点:任务不在主线程中执行,而回调方法在主线程中执行,比Handler更轻量级些,适用于简单的异步处理  
  19.  */  
  20. public class ImageTask extends AsyncTask<ImageView, Void, Bitmap> {   
  21.     private ImageView imageView;   
  22.   
  23.     protected Bitmap doInBackground(ImageView... views) {   
  24.         // 后台线程执行,完成任务的主要操作   
  25.         Bitmap bitmap = null;   
  26.         ImageView imageView = views[0];   
  27.         if (imageView.getTag() != null) {   
  28.             try {   
  29.                 if (URLUtil.isHttpUrl(imageView.getTag().toString())) {// 首先判断是不是url   
  30.                     System.out.println(imageView.getTag().toString());   
  31.                     URL url = new URL(imageView.getTag().toString());   
  32.                     HttpURLConnection conn = (HttpURLConnection) url   
  33.                             .openConnection();   
  34.                     conn.setDoInput(true);   
  35.                     conn.connect();   
  36.                     InputStream stream = conn.getInputStream();   
  37.                     bitmap = BitmapFactory.decodeStream(stream);// 将stream流转化成bitmap   
  38.                     stream.close();   
  39.                 } else {   
  40.                     bitmap = BitmapFactory.decodeFile(imageView.getTag()   
  41.                             .toString());   
  42.                 }   
  43.             } catch (Exception e) {   
  44.                 return null;   
  45.             }   
  46.         }   
  47.         this.imageView = imageView;   
  48.         return bitmap;   
  49.     }   
  50.   
  51.     protected void onPostExecute(Bitmap bitmap) {   
  52.         // 主线程中执行   
  53.         if (bitmap != null) {   
  54.             this.imageView.setImageBitmap(bitmap);   
  55.             this.imageView = null;   
  56.         }   
  57.     }   
  58.   
  59. }  
Java代码 复制代码  收藏代码
  1. package com.lilin.async;   
  2.   
  3. import cn.riddles.activity.R;   
  4. import android.app.Activity;   
  5. import android.content.Context;   
  6. import android.os.Bundle;   
  7. import android.view.LayoutInflater;   
  8. import android.view.View;   
  9. import android.view.ViewGroup;   
  10. import android.widget.BaseAdapter;   
  11. import android.widget.ImageView;   
  12. import android.widget.ListView;   
  13. import android.widget.TextView;   
  14.   
  15. public class Main extends Activity {   
  16.     public ListView listView;   
  17.     public static String[] strings = { "王力宏""吴尊""何润东" };   
  18.     public static String[] paths = {   
  19.             "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wang_li_hong.jpg",   
  20.             "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_zun.jpg",   
  21.             "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/he_run_dong.jpg" };   
  22.   
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState) {   
  25.         super.onCreate(savedInstanceState);   
  26.         setContentView(R.layout.main);   
  27.         listView = (ListView) this.findViewById(R.id.test_lv);   
  28.         listView.setAdapter(new MyAdapter(this));   
  29.     }   
  30.   
  31. }   
  32.   
  33. class MyAdapter extends BaseAdapter {   
  34.     private Context context;   
  35.   
  36.     public MyAdapter(Context context) {   
  37.         this.context = context;   
  38.     }   
  39.   
  40.     public void setcontext(Context context) {   
  41.         this.context = context;   
  42.     }   
  43.   
  44.     public int getCount() {   
  45.         return Main.paths.length;   
  46.     }   
  47.   
  48.     public Object getItem(int position) {   
  49.         return null;   
  50.     }   
  51.   
  52.     public long getItemId(int position) {   
  53.         return 0;   
  54.     }   
  55.   
  56.     public View getView(int position, View convertView, ViewGroup parent) {   
  57.         convertView = LayoutInflater.from(context).inflate(R.layout.listview,   
  58.                 null);   
  59.         ImageView imageView = (ImageView) convertView.findViewById(R.id.image);   
  60.         TextView songer_tv = (TextView) convertView.findViewById(R.id.songer);   
  61.         imageView.setTag(Main.paths[position]);   
  62.         songer_tv.setText(Main.strings[position]);   
  63.         new ImageTask().execute(imageView);   
  64.         return convertView;   
  65.     }   
  66.   
  67. }  
package com.lilin.async;

import cn.riddles.activity.R;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Main extends Activity {
	public ListView listView;
	public static String[] strings = { "王力宏", "吴尊", "何润东" };
	public static String[] paths = {
			"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wang_li_hong.jpg",
			"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_zun.jpg",
			"http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/he_run_dong.jpg" };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		listView = (ListView) this.findViewById(R.id.test_lv);
		listView.setAdapter(new MyAdapter(this));
	}

}

class MyAdapter extends BaseAdapter {
	private Context context;

	public MyAdapter(Context context) {
		this.context = context;
	}

	public void setcontext(Context context) {
		this.context = context;
	}

	public int getCount() {
		return Main.paths.length;
	}

	public Object getItem(int position) {
		return null;
	}

	public long getItemId(int position) {
		return 0;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		convertView = LayoutInflater.from(context).inflate(R.layout.listview,
				null);
		ImageView imageView = (ImageView) convertView.findViewById(R.id.image);
		TextView songer_tv = (TextView) convertView.findViewById(R.id.songer);
		imageView.setTag(Main.paths[position]);
		songer_tv.setText(Main.strings[position]);
		new ImageTask().execute(imageView);
		return convertView;
	}

}
Java代码 复制代码  收藏代码
  1. package com.lilin.async;   
  2.   
  3. import java.io.InputStream;   
  4. import java.net.HttpURLConnection;   
  5. import java.net.URL;   
  6. import android.graphics.Bitmap;   
  7. import android.graphics.BitmapFactory;   
  8. import android.os.AsyncTask;   
  9. import android.webkit.URLUtil;   
  10. import android.widget.ImageView;   
  11.   
  12. /**  
  13.  * 通过AsyncTask实现图片的异步加载  
  14.  *   
  15.  * @author lilin  
  16.  * @date 2011-9-5 上午08:45:12  
  17.  * @ClassName: ImageTask  
  18.  * @Description: 特点:任务不在主线程中执行,而回调方法在主线程中执行,比Handler更轻量级些,适用于简单的异步处理  
  19.  */  
  20. public class ImageTask extends AsyncTask<ImageView, Void, Bitmap> {   
  21.     private ImageView imageView;   
  22.   
  23.     protected Bitmap doInBackground(ImageView... views) {   
  24.         // 后台线程执行,完成任务的主要操作   
  25.         Bitmap bitmap = null;   
  26.         ImageView imageView = views[0];   
  27.         if (imageView.getTag() != null) {   
  28.             try {   
  29.                 if (URLUtil.isHttpUrl(imageView.getTag().toString())) {// 首先判断是不是url   
  30.                     System.out.println(imageView.getTag().toString());   
  31.                     URL url = new URL(imageView.getTag().toString());   
  32.                     HttpURLConnection conn = (HttpURLConnection) url   
  33.                             .openConnection();   
  34.                     conn.setDoInput(true);   
  35.                     conn.connect();   
  36.                     InputStream stream = conn.getInputStream();   
  37.                     bitmap = BitmapFactory.decodeStream(stream);// 将stream流转化成bitmap   
  38.                     stream.close();   
  39.                 } else {   
  40.                     bitmap = BitmapFactory.decodeFile(imageView.getTag()   
  41.                             .toString());   
  42.                 }   
  43.             } catch (Exception e) {   
  44.                 return null;   
  45.             }   
  46.         }   
  47.         this.imageView = imageView;   
  48.         return bitmap;   
  49.     }   
  50.   
  51.     protected void onPostExecute(Bitmap bitmap) {   
  52.         // 主线程中执行   
  53.         if (bitmap != null) {   
  54.             this.imageView.setImageBitmap(bitmap);   
  55.             this.imageView = null;   
  56.         }   
  57.     }   
  58.   
  59. }  

猜你喜欢

转载自zhouxuebao87.iteye.com/blog/1609757