• Fresco的使用及注意事项


    Fresco的使用及注意事项

    添加引用

    1.build.gradle添加依赖

    compile 'com.facebook.fresco:fresco:0.12.0'
    //以下是加载Gif使用,按需添加
    compile 'com.facebook.fresco:animated-gif:0.12.0'

    2.配置Jni库

    根据需要配置需要的jni库,在module的build.gradle中配置

    buildTypes {
        debug {
            ndk {
                abiFilters = ["armeabi"]
            }
            ...
        }
    }

    基本使用

    1.初始化

    在Application中或者MainActivity中调用:

    Fresco.initialize(this);

    2.加载基本的图片

    加载图片一般是给SimpleDraweeView添加Uri,具体的参见Fresco加载图片封装

    注意事项

    1.列表中加载图片,滚动时请暂停加载.

    我们经常在列表中显示图片,为了减少列表的卡顿现象,需要在列表滚动时暂停加载图片,当停止滚动时再恢复加载.

    ListView中设置暂停恢复加载:

    listView.setOnScrollListener(new AbsListView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            switch (scrollState) {
                case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
                case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                    //ImageLoader.pauseLoader();
                    if (!Fresco.getImagePipeline().isPaused()) {
                        Fresco.getImagePipeline().pause();
                    }
                    break;
                case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
                //ImageLoader.resumeLoader();
                    if (Fresco.getImagePipeline().isPaused()) {
                        Fresco.getImagePipeline().resume();
                    }
                    break;
            }
        }
    
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    
        }
    });

    RecyclerView与ListView类似,请自行设置.

    2.图片必须设置为具体尺寸或者match_parent

    3.清除缓存

    当图片改变时我们需要清除缓存重新加载,可调用Fresco提供的方法.清除缓存分为清除内存缓存和清除磁盘缓存.

    public static void clearDiskCache(Uri uri) {
        Fresco.getImagePipeline().evictFromDiskCache(uri);
    }
    
    public static void clearMemoryCache(Uri uri) {
        Fresco.getImagePipeline().evictFromMemoryCache(uri);
    }

    未完待续...

    Fresco还在使用中,此文会随着使用更新注意事项.

  • 相关阅读:
    [Swift]字符串(String类、NSString类)常用操作
    [Swift实际操作]九、完整实例-(1)在iTunesConnect网站中创建产品
    很无语,吐个槽
    很无语,吐个槽
    创业有感-表达能力很关键
    宏定义#define整理
    C++ tab键实现自动补全输入功能
    cmake的使用笔记
    c++智能指针使用笔记
    用static 创建类的单例
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6646779.html
Copyright © 2020-2023  润新知