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还在使用中,此文会随着使用更新注意事项.