当前位置:操作系统 > 安卓/Android >>

Android应用List图标异步加载

 

1、创建异步加载类:

 

 

 

 

 

Java代码 

import android.graphics.drawable.Drawable;  

import android.os.Handler;  

import android.os.Message;  

import android.widget.ImageView;  

 

import java.io.IOException;  

import java.io.InputStream;  

import java.lang.ref.SoftReference;  

import java.net.MalformedURLException;  

import java.net.URL;  

import java.util.HashMap;  

 

public class AsyncImageLoader {  

    // SoftReference是软引用,是为了更好的为了系统回收变量  

    private HashMap<String, SoftReference<Drawable>> imageCache;  

 

    public AsyncImageLoader() {  

        imageCache = new HashMap<String, SoftReference<Drawable>>();  

    }  

 

    public Drawable loadDrawable(final String imageUrl, final ImageView imageView,  

            final ImageCallback imageCallback) {  

        if (imageCache.containsKey(imageUrl)) {  

            // 从缓存中获取  

            SoftReference<Drawable> softReference = imageCache.get(imageUrl);  

            Drawable drawable = softReference.get();  

            if (drawable != null) {  

                return drawable;  

            }  

        }  

        final Handler handler = new Handler() {  

            public void handleMessage(Message message) {  

                imageCallback.imageLoaded((Drawable) message.obj, imageView, imageUrl);  

            }  

        };  

        // 建立新一个新的线程下载图片  

        new Thread() {  

            @Override 

            public void run() {  

                Drawable drawable = loadImageFromUrl(imageUrl);  

                imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));  

                Message message = handler.obtainMessage(0, drawable);  

                handler.sendMessage(message);  

            }  

        }.start();  

        return null;  

    }  

 

    public static Drawable loadImageFromUrl(String url) {  

        URL m;  

        InputStream i = null;  

        try {  

            m = new URL(url);  

            i = (InputStream) m.getContent();  

        } catch (MalformedURLException e1) {  

            e1.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

        Drawable d = Drawable.createFromStream(i, "src");  

        return d;  

    }  

 

    // 回调接口  

    public interface ImageCallback {  

        public void imageLoaded(Drawable imageDrawable, ImageView imageView, String imageUrl);  

    }  

 

import android.graphics.drawable.Drawable;

import android.os.Handler;

import android.os.Message;

import android.widget.ImageView;

 

import java.io.IOException;

import java.io.InputStream;

import java.lang.ref.SoftReference;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.HashMap;

 

public class AsyncImageLoader {

    // SoftReference是软引用,是为了更好的为了系统回收变量

    private HashMap<String, SoftReference<Drawable>> imageCache;

 

    public AsyncImageLoader() {

        imageCache = new HashMap<String, SoftReference<Drawable>>();

    }

 

    public Drawable loadDrawable(final String imageUrl, final ImageView imageView,

            final ImageCallback imageCallback) {

        if (imageCache.containsKey(imageUrl)) {

            // 从缓存中获取

            SoftReference<Drawable> softReference = imageCache.get(imageUrl);

            Drawable drawable = softReference.get();

            if (drawable != null) {

                return drawable;

            }

        }

        final Handler handler = new Handler() {

            public

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,