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

  • 相关阅读:
    代码控制数据流量开关
    用wifi来调试应用程序
    详细解读LruCache类
    修改博客园默认的代码字体大小
    通过Gson解析Json数据
    Docker、Kubernetes的 CICD实现思路
    React中路由传参及接收参数的方式
    微信小程序开发工具调试没问题,真机调试Provisional headers are shown
    物联网卡三码
    【微信开发】-- 企业转账到用户
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6646779.html
Copyright © 2020-2023  润新知