我们在开发直播的时候,要显示电视台的图标,而OOM也是经常遇到的,为了解决这个问题,我使用了网上一个开源的网络图片加载工具Android-Universal-Image-Loader,它的官网:https://github.com/nostra13/Android-Universal-Image-Loader 能够帮助我们解决这个问题,而且种类多样性,代码里面不仅给出的源码而且给出来demo实例,我们先可以看看它官方实例的图片:
当然布局我们可以自己定义,下面介绍一下使用时候需要注意的地方:
1、首先要在application中的onCreate添加
-
public static void initImageLoader(Context context) {
-
// This configuration tuning is custom. You can tune every option, you may tune some of them,
-
// or you can create default configuration by
-
// ImageLoaderConfiguration.createDefault(this);
-
// method.
-
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
-
.threadPriority(Thread.NORM_PRIORITY - 2)
-
.denyCacheImageMultipleSizesInMemory()
-
.discCacheFileNameGenerator(new Md5FileNameGenerator())
-
.tasksProcessingOrder(QueueProcessingType.LIFO)
-
.writeDebugLogs() // Remove for release app
-
.build();
-
// Initialize ImageLoader with configuration.
-
ImageLoader.getInstance().init(config);
-
}
否则你使用ImageLoader的时候会提示你先要init才能使用
2、直播一般是获取服务器数据,所以我们还需要解析服务器返回的数据(可能是json,xml),把解析完后的数据我们可以放在List里面,然后在Adapter中的getView中调用
imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);
其中的animateFirstListener为:
-
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
-
-
static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
-
-
@Override
-
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
-
if (loadedImage != null) {
-
ImageView imageView = (ImageView) view;
-
boolean firstDisplay = !displayedImages.contains(imageUri);
-
if (firstDisplay) {
-
FadeInBitmapDisplayer.animate(imageView, 500);
-
displayedImages.add(imageUri);
-
}
-
}
-
}
-
}
这样就完成了,非常方便。