【Android之SmartImageView图片控件】

本文介绍了一个Android图片控件SmartImageView,它继承自ImageView并提供了丰富的功能,如从网络和本地加载图片,多线程加载,以及使用内存和SD卡缓存图片以提高性能。通过面向接口编程,该控件方便用户进行扩展。文章包含类图及核心方法解析。

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

源码地址是https://github.com/loopj/android-smart-image-view,没有sample,本文最后会提供一个sample。


smartimageview提供的主要功能有:

1. 继承ImageView控件,在原生ImageView控件上扩展了多个功能

2. 可以根据url地址加载网络上的一张图片

3. 可以根据uri加载本地手机里面联系人的一张图片

4. 加载图片是放在多线程中,与UI线程并发执行

5. 使用了内存和sd卡缓存图片技术,提高重复加载效率

6. 图片源采用面向接口编程,易于使用者扩展


类图如下:


SmartImageView核心方法:

public void setImage(final SmartImage image, final Integer fallbackResource, final Integer loadingResource, final SmartImageTask.OnCompleteListener completeListener) {
        // Set a loading resource
        if(loadingResource != null){
            setImageResource(loadingResource);
        }

        // Cancel any existing tasks for this image view
        if(currentTask != null) {
            currentTask.cancel();
            currentTask = null;
        }

        // Set up the new task
        currentTask = new SmartImageTask(getContext(), image);
        currentTask.setOnCompleteHandler(new SmartImageTask.OnCompleteHandler() {
            @Override
            public void onComplete(Bitmap bitmap) {
                if(bitmap != null) {
                    setImageBitmap(bitmap);
                } else {
                    // Set fallback resource
                    if(fallbackResource != null) {
                        setImageResource(fallbackResource);
                    }
                }

                if(completeListener != null){
                    completeListener.onComplete(bitmap);
                }
            }
        });

        // Run the task in a threadpool
        threadPool.execute(currentTask);
    }
在加载过程中可以设置默认图片、加载中图片,并且可以设置图片加载完成监听器,此方法会启动一个线程去加载图片,然后在onComplete方法中将图片显示到SmartImageView上去。


【Android之SmartImageView图片控件】下载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值