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(Windows Presentation Foundation)应用开发中,异步加载图片是提高用户体验的关键技术,特别是在处理大尺寸或者网络延迟较大的情况下。本知识点将详细讲解如何实现wpf异步加载图片并在加载完成后显示。 ...
在Android开发中,异步加载图片是一项至关重要的技术,尤其对于那些包含大量图像的移动应用而言,如社交网络、电商应用等。异步加载能够提高用户体验,避免UI线程阻塞,防止应用出现"卡死"现象。在这个"Android异步...
**懒加载(Lazy Load)异步加载图片技术详解** 懒加载是一种优化网页性能的技术,它主要应用于图片或者视频等大体积资源的加载。在网页初次加载时,只加载视口内的图片,当用户滚动页面,即将进入视口的图片才会被...
本资料包主要讲解了如何使用`AsyncTask`进行异步加载图片,这对于在UI线程中保持流畅用户体验至关重要。 `AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间...
在JavaScript(JS)中,异步加载图片是一种优化网页性能的技术。它允许浏览器在不影响页面主要功能的情况下,按需或后台加载非关键资源,如图片。这样可以减少页面初次加载的时间,提高用户体验,特别是对于含有大量...
"Android实现ListView异步加载图片" Android 实现 ListView 异步加载图片是一种常见的技术,旨在提高应用程序的性能和用户体验。本文将详细介绍 Android 中实现 ListView 异步加载图片的方法,并对相关的技术概念...
然而,在实际开发中,当我们需要在RecyclerView中异步加载图片时,可能会遇到图片显示乱序的问题。本文将深入探讨这个问题及其解决方案。 首先,我们来理解为什么会出现图片乱序的现象。这是因为RecyclerView在滚动...
在iOS开发中,异步加载图片是一项至关重要的技术,它能显著提升应用的性能和用户体验。标题中的"iOS异步加载图片"暗示我们讨论的是如何在iOS应用中避免UI阻塞,通过后台线程加载图片资源,使得界面始终保持流畅。在...
因此,异步加载图片是必要的,它可以在后台线程中处理图片下载和解码工作,保持UI流畅。 2. ListView与异步加载: ListView是一个常用的组件,用于展示可滚动的列表数据。每个列表项可能包含图片。当用户滚动时,...
为了解决这个问题,我们需要采用异步加载图片的策略。这就是“ListView异步加载图片”这一知识点的核心。 异步加载图片的目的是将耗时的操作(如网络请求、图片解码)从主线程分离到后台线程执行,从而保持用户界面...
Android 演示异步加载图片的实现 附源代码,这里主要是演示ListView的异步加载图片功能,异步加载一个view时,如果view里面有EditText,EditText在每次加载view都会触发焦点,这时候异步就会出错。可能我这样说不太...
在网页开发中,异步加载图片(以AJAX方式加载图片)是一种常见的优化技术,尤其在处理大量图片的场景下,比如漫画网站。通过这种方式,可以显著提高页面加载速度,提升用户体验。AJAX(Asynchronous JavaScript and ...
这是博文《异步加载图片(一)》对应的源码,这段代码仅实现了异步加载,对于滑动时暂停,停划时加载的问题会在《异步加载图片(二)》中讲解,这篇文章的地址:...
因此,"iPhone UITableView异步加载图片"是解决这个问题的关键技术。 异步加载图片的基本思想是在主线程之外的其他线程(通常为后台线程)下载和处理图片,避免阻塞用户界面。在UITableView中,我们通常会在cell...
在Android应用开发中,异步加载图片是一项至关重要的任务,特别是在处理大量图片或者网络图片时。这不仅可以提高用户体验,避免因加载图片导致的界面卡顿,还能有效地节省系统资源。本教程将深入探讨如何在Android中...
在处理大量图片时,为了提升用户体验和优化性能,通常会采用异步加载图片的技术。本文将深入探讨如何实现ListView中图片的异步加载,并结合进度条显示加载状态,使代码更加规范。 一、异步加载图片的重要性 在...
接下来,我们讨论核心主题——异步加载图片。在iOS应用中,直接在主线程上加载网络图片会阻塞用户界面,导致应用程序响应变慢,影响用户体验。因此,异步加载成为最佳实践。IconDownloader是一个用于异步下载和缓存...
在IT行业中,网络异步加载图片的轮播图是一种常见的用户界面组件,广泛应用于网站、APP等场景,用于展示多张图片并实现自动或手动切换。在这个特定的【标题】"网络异步加载图片的轮播图带点击方法"中,我们可以深入...
在WPF应用开发中,异步加载图片是一个常见的需求,特别是在处理大尺寸或者网络资源时,为了提升用户体验,我们希望图片加载不影响界面的响应速度。本文将深入探讨如何实现这一功能,并在加载失败时切换到本地备份...