`

AysncTask异步加载图片

 
阅读更多
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;
	}

}

 

package com.lilin.async;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.webkit.URLUtil;
import android.widget.ImageView;

/**
 * 通过AsyncTask实现图片的异步加载
 * 
 * @author lilin
 * @date 2011-9-5 上午08:45:12
 * @ClassName: ImageTask
 * @Description: 特点:任务不在主线程中执行,而回调方法在主线程中执行,比Handler更轻量级些,适用于简单的异步处理
 */
public class ImageTask extends AsyncTask<ImageView, Void, Bitmap> {
	private ImageView imageView;

	protected Bitmap doInBackground(ImageView... views) {
		// 后台线程执行,完成任务的主要操作
		Bitmap bitmap = null;
		ImageView imageView = views[0];
		if (imageView.getTag() != null) {
			try {
				if (URLUtil.isHttpUrl(imageView.getTag().toString())) {// 首先判断是不是url
					System.out.println(imageView.getTag().toString());
					URL url = new URL(imageView.getTag().toString());
					HttpURLConnection conn = (HttpURLConnection) url
							.openConnection();
					conn.setDoInput(true);
					conn.connect();
					InputStream stream = conn.getInputStream();
					bitmap = BitmapFactory.decodeStream(stream);// 将stream流转化成bitmap
					stream.close();
				} else {
					bitmap = BitmapFactory.decodeFile(imageView.getTag()
							.toString());
				}
			} catch (Exception e) {
				return null;
			}
		}
		this.imageView = imageView;
		return bitmap;
	}

	protected void onPostExecute(Bitmap bitmap) {
		// 主线程中执行
		if (bitmap != null) {
			this.imageView.setImageBitmap(bitmap);
			this.imageView = null;
		}
	}

}

 

分享到:
评论

相关推荐

    wpf 异步加载图片完成后再显示

    在WPF(Windows Presentation Foundation)应用开发中,异步加载图片是提高用户体验的关键技术,特别是在处理大尺寸或者网络延迟较大的情况下。本知识点将详细讲解如何实现wpf异步加载图片并在加载完成后显示。 ...

    Android异步加载图片例子

    在Android开发中,异步加载图片是一项至关重要的技术,尤其对于那些包含大量图像的移动应用而言,如社交网络、电商应用等。异步加载能够提高用户体验,避免UI线程阻塞,防止应用出现"卡死"现象。在这个"Android异步...

    lazyload异步加载图片

    **懒加载(Lazy Load)异步加载图片技术详解** 懒加载是一种优化网页性能的技术,它主要应用于图片或者视频等大体积资源的加载。在网页初次加载时,只加载视口内的图片,当用户滚动页面,即将进入视口的图片才会被...

    Android AsyncTask用法和异步加载图片.rar

    本资料包主要讲解了如何使用`AsyncTask`进行异步加载图片,这对于在UI线程中保持流畅用户体验至关重要。 `AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间...

    JS异步加载图片

    在JavaScript(JS)中,异步加载图片是一种优化网页性能的技术。它允许浏览器在不影响页面主要功能的情况下,按需或后台加载非关键资源,如图片。这样可以减少页面初次加载的时间,提高用户体验,特别是对于含有大量...

    Android实现ListView异步加载图片

    "Android实现ListView异步加载图片" Android 实现 ListView 异步加载图片是一种常见的技术,旨在提高应用程序的性能和用户体验。本文将详细介绍 Android 中实现 ListView 异步加载图片的方法,并对相关的技术概念...

    使用Android Studio 练习RecyclerView 异步加载图片,解决图片乱序问题。

    然而,在实际开发中,当我们需要在RecyclerView中异步加载图片时,可能会遇到图片显示乱序的问题。本文将深入探讨这个问题及其解决方案。 首先,我们来理解为什么会出现图片乱序的现象。这是因为RecyclerView在滚动...

    iOS异步加载图片 (需要至少12个字的名称,过分!)

    在iOS开发中,异步加载图片是一项至关重要的技术,它能显著提升应用的性能和用户体验。标题中的"iOS异步加载图片"暗示我们讨论的是如何在iOS应用中避免UI阻塞,通过后台线程加载图片资源,使得界面始终保持流畅。在...

    图片异步加载,照片墙,异步加载listview图片2

    因此,异步加载图片是必要的,它可以在后台线程中处理图片下载和解码工作,保持UI流畅。 2. ListView与异步加载: ListView是一个常用的组件,用于展示可滚动的列表数据。每个列表项可能包含图片。当用户滚动时,...

    ListView异步加载图片

    为了解决这个问题,我们需要采用异步加载图片的策略。这就是“ListView异步加载图片”这一知识点的核心。 异步加载图片的目的是将耗时的操作(如网络请求、图片解码)从主线程分离到后台线程执行,从而保持用户界面...

    Android 演示异步加载图片的实现 附源代码.rar

    Android 演示异步加载图片的实现 附源代码,这里主要是演示ListView的异步加载图片功能,异步加载一个view时,如果view里面有EditText,EditText在每次加载view都会触发焦点,这时候异步就会出错。可能我这样说不太...

    以AJAX方式加载图片=异步加载图片,先显示个图片的占位图片 此技术常见于漫画网站.zip

    在网页开发中,异步加载图片(以AJAX方式加载图片)是一种常见的优化技术,尤其在处理大量图片的场景下,比如漫画网站。通过这种方式,可以显著提高页面加载速度,提升用户体验。AJAX(Asynchronous JavaScript and ...

    《异步加载图片(一)》源码----仅实现异步加载 .

    这是博文《异步加载图片(一)》对应的源码,这段代码仅实现了异步加载,对于滑动时暂停,停划时加载的问题会在《异步加载图片(二)》中讲解,这篇文章的地址:...

    iphone UITableView异步加载图片

    因此,"iPhone UITableView异步加载图片"是解决这个问题的关键技术。 异步加载图片的基本思想是在主线程之外的其他线程(通常为后台线程)下载和处理图片,避免阻塞用户界面。在UITableView中,我们通常会在cell...

    Android 异步加载图片实现_图片缓存.zip

    在Android应用开发中,异步加载图片是一项至关重要的任务,特别是在处理大量图片或者网络图片时。这不仅可以提高用户体验,避免因加载图片导致的界面卡顿,还能有效地节省系统资源。本教程将深入探讨如何在Android中...

    ListView异步加载图片进度条

    在处理大量图片时,为了提升用户体验和优化性能,通常会采用异步加载图片的技术。本文将深入探讨如何实现ListView中图片的异步加载,并结合进度条显示加载状态,使代码更加规范。 一、异步加载图片的重要性 在...

    iOS从网络异步加载图片

    接下来,我们讨论核心主题——异步加载图片。在iOS应用中,直接在主线程上加载网络图片会阻塞用户界面,导致应用程序响应变慢,影响用户体验。因此,异步加载成为最佳实践。IconDownloader是一个用于异步下载和缓存...

    网络异步加载图片的轮播图带点击方法

    在IT行业中,网络异步加载图片的轮播图是一种常见的用户界面组件,广泛应用于网站、APP等场景,用于展示多张图片并实现自动或手动切换。在这个特定的【标题】"网络异步加载图片的轮播图带点击方法"中,我们可以深入...

    wpf 异步加载图片完成后再显示,失败则显示本地图片

    在WPF应用开发中,异步加载图片是一个常见的需求,特别是在处理大尺寸或者网络资源时,为了提升用户体验,我们希望图片加载不影响界面的响应速度。本文将深入探讨如何实现这一功能,并在加载失败时切换到本地备份...

Global site tag (gtag.js) - Google Analytics