1,实现效果
2,实现逻辑
【1】github 地址
https://github.com/nostra13/Android-Universal-Image-Loader
-
下载对应的ZIP包
【2】项目导入
-
重新打开一个项目,只需要导入Module
-
导入Modul时,自动需要一个依赖库,library 自己加载进来
-
出现错误,不存在就注释掉
-
找到对应的位置
导入成功
【3】查看源码
-
查看布局,XML找到启动页面
-
找到Listview 展示图片效果 ,查看适配器,在构造中初始化了LmageLoader
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
//.displayer(new CircleBitmapDisplayer(Color.WHITE, 5))
.displayer(new RoundedBitmapDisplayer(6)) //给矩形添加圆角
.build();
-
圆环的理解
-
在getView利用单例模式ImagerLoader 对象
//1,图片加载的URL地址 2,要加载的控件 3,空参构造配置的信息 4,实现的动画效果
ImageLoader.getInstance().displayImage(IMAGE_URLS[position], holder.image, options, animateFirstListener);
-
创建获取实现动画的效果
private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
查看实现的过程
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);
}
}
}
}
点击发现是AlphaAnimation动画
public static void animate(View imageView, int durationMillis) {
if (imageView != null) {
AlphaAnimation fadeImage = new AlphaAnimation(0, 1);
fadeImage.setDuration(durationMillis);
fadeImage.setInterpolator(new DecelerateInterpolator());
imageView.startAnimation(fadeImage);
}
}
3,使用
-
访问的图片地址已经过时了。我们自己修改服务器的图片进行展示,实现效果