android 开源框架nostra13的使用

本文详细介绍了Android开源框架nostra13的使用方法,包括配置ImageLoader、显示图片的两种方式以及如何清理缓存和停止加载。通过示例代码展示了如何设置DisplayImageOptions、监听图片加载状态,并提供了图片淡入效果的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)

                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs() // Remove for release app
                .build();
        // Initialize ImageLoader with configuration.

        ImageLoader.getInstance().init(config);

使用

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)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();

使用方法一:

imageLoader.displayImage(imageUrls[position], holder.imageView, options, new SimpleImageLoadingListener() {
                                         @Override
                                         public void onLoadingStarted(String imageUri, View view) {
                                             holder.progressBar.setProgress(0);
                                             holder.progressBar.setVisibility(View.VISIBLE);
                                         }

                                         @Override
                                         public void onLoadingFailed(String imageUri, View view,
                                                 FailReason failReason) {
                                             holder.progressBar.setVisibility(View.GONE);
                                         }

                                         @Override
                                         public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                                             holder.progressBar.setVisibility(View.GONE);
                                         }
                                     }, new ImageLoadingProgressListener() {
                                         @Override
                                         public void onProgressUpdate(String imageUri, View view, int current,
                                                 int total) {
                                             holder.progressBar.setProgress(Math.round(100.0f * current / total));
                                         }
                                  }

imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {
                @Override
                public void onLoadingStarted(String imageUri, View view) {
                    spinner.setVisibility(View.VISIBLE);
                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    String message = null;
                    switch (failReason.getType()) {
                        case IO_ERROR:
                            message = "Input/Output error";
                            break;
                        case DECODING_ERROR:
                            message = "Image can't be decoded";
                            break;
                        case NETWORK_DENIED:
                            message = "Downloads are denied";
                            break;
                        case OUT_OF_MEMORY:
                            message = "Out Of Memory error";
                            break;
                        case UNKNOWN:
                            message = "Unknown error";
                            break;
                    }
                }

使用方法二:

private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();

imageLoader.displayImage(imageUrls[position], holder.image, options, animateFirstListener);

//第一次加载



        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);
                }
            }
        }
    }

清理缓存

imageLoader.clearMemoryCache();

imageLoader.clearDiscCache();

AnimateFirstDisplayListener.displayedImages.clear();

停止加载

imageLoader.stop()

1.displayImages及其重载,用来显示Imageview的图片。

public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options,             ImageLoadingListener listener, ImageLoadingProgressListener progressListener)  
2.loadImages及其重载,它的内部其实也会调用displayImages方法。
public void loadImage(String uri, ImageSize targetImageSize, DisplayImageOptions options,   ImageLoadingListener listener, ImageLoadingProgressListener progressListener)  
3.loadImageSync及其重载,它会返回一个Bitmap对象,自定义View的时候,需要bitmap来绘制图形,就可以使用该方法了。 public Bitmap loadImageSync(String uri, ImageSize targetImageSize, DisplayImageOptions options)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值