展会信息港展会大全

android 异步加载图片
来源:互联网   发布日期:2016-01-19 10:53:43   浏览:2024次  

导读:[代码]AsyncImageLoader.java01packagecn.com.mzba.service;0203importjava.io.InputStream;04importjava.lang.ref.SoftReference;05importjava.net.URL;06importjava.util.HashMap;0708importandroid.graphics.......

[代码] AsyncImageLoader.java

01

package cn.com.mzba.service;

02

03

import java.io.InputStream;

04

import java.lang.ref.SoftReference;

05

import java.net.URL;

06

import java.util.HashMap;

07

08

import android.graphics.drawable.Drawable;

09

import android.os.Handler;

10

import android.os.Message;

11

import android.widget.ImageView;

12

/**

13

* 实现图片的异步载入显示

14

* @author kandanle

15

*

16

*/

17

public class AsyncImageLoader {

18

19

/**

20

* 软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象。软引用对象最常用于实现内存敏感的缓存。

21

*/

22

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

23

24

public AsyncImageLoader(){

25

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

26

}

27

28

public Drawable loadDrawable(final String imageUrl,final ImageView imageView,finalImageCallback imagecallback){

29

if(imageCache.containsKey(imageUrl)){

30

//从缓存中读取人人

31

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

32

Drawable drawable = softReference.get();

33

if(drawable != null){

34

return drawable;

35

}

36

}

37

final Handler handler = new Handler(){

38

@Override

39

public void handleMessage(Message msg) {

40

super.handleMessage(msg);

41

imagecallback.imageLoaded((Drawable)msg.obj, imageView, imageUrl);

42

}

43

};

44

new Thread(){

45

public void run() {

46

Drawable drawable = loadImageFromUrl(imageUrl);

47

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

48

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

49

handler.sendMessage(message);

50

}

51

}.start();

52

53

return null;

54

}

55

56

public static Drawable loadImageFromUrl(String urlPath){

57

URL url;

58

InputStream is = null;

59

try{

60

url = new URL(urlPath);

61

is = (InputStream)url.getContent();

62

}catch(Exception e){

63

e.printStackTrace();

64

}

65

Drawable drawable = Drawable.createFromStream(is, "src");

66

return drawable;

67

}

68

69

}

[代码] ImageCallback.java

01

package cn.com.mzba.service;

02

03

import android.graphics.drawable.Drawable;

04

import android.widget.ImageView;

05

06

public interface ImageCallback {

07

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

08

}

09

10

Drawable drawable = asyncImageLoader.loadDrawable(weiboInfo.getUserIcon(), viewUserIcon,new ImageCallback() {

11

@Override

12

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

13

imageView.setImageDrawable(imageDrawable);

14

}

15

});

16

if(drawable == null){

17

viewUserIcon.setImageResource(R.drawable.portrait);

18

}else{

19

viewUserIcon.setImageDrawable(drawable);

20

}

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港