Fresco的使用及注意事项

添加引用

1.build.gradle添加依赖

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

2.配置Jni库

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

  1. buildTypes {
  2. debug {
  3. ndk {
  4. abiFilters = ["armeabi"]
  5. }
  6. ...
  7. }
  8. }

基本使用

1.初始化

在Application中或者MainActivity中调用:

  1. Fresco.initialize(this);

2.加载基本的图片

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

注意事项

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

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

ListView中设置暂停恢复加载:

  1. listView.setOnScrollListener(new AbsListView.OnScrollListener() {
  2. @Override
  3. public void onScrollStateChanged(AbsListView view, int scrollState) {
  4. switch (scrollState) {
  5. case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
  6. case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
  7. //ImageLoader.pauseLoader();
  8. if (!Fresco.getImagePipeline().isPaused()) {
  9. Fresco.getImagePipeline().pause();
  10. }
  11. break;
  12. case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
  13. //ImageLoader.resumeLoader();
  14. if (Fresco.getImagePipeline().isPaused()) {
  15. Fresco.getImagePipeline().resume();
  16. }
  17. break;
  18. }
  19. }
  20.  
  21. @Override
  22. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  23.  
  24. }
  25. });

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

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

3.清除缓存

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

  1. public static void clearDiskCache(Uri uri) {
  2. Fresco.getImagePipeline().evictFromDiskCache(uri);
  3. }
  4.  
  5. public static void clearMemoryCache(Uri uri) {
  6. Fresco.getImagePipeline().evictFromMemoryCache(uri);
  7. }

未完待续...

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

Fresco的使用及注意事项的更多相关文章

  1. Android之图片加载框架Fresco基本使用(一)

    PS:Fresco这个框架出的有一阵子了,也是现在非常火的一款图片加载框架.听说内部实现的挺牛逼的,虽然自己还没研究原理.不过先学了一下基本的功能,感受了一下这个框架的强大之处.本篇只说一下在xml中 ...

  2. 8.4.2 Fresco

    Fresco是Facebook公司的黑科技:http://fresco-cn.org/ 真三级缓存,变换后的BItmap(内存),变换前的原始图片(内存),硬盘缓存.在内存管理上做到了极致.对于重度图 ...

  3. Fresco

    1.简介 Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络.本地存储和本地资源中加载图片.相对于ImageLoader,拥有更快的图片下载速度以及可 ...

  4. 【Android - 框架】之Fresco的使用

    当下有很多图片加载框架,常见的有Glide.Fresco.Picasso等.Glide因为其体积小.缓存机制强大等优点,受到了广大程序员的青睐:Fresco虽然体积比较大,缓存机制也没有Glide强大 ...

  5. Android必知必会-发布开源 Android 项目注意事项

    如果移动端访问不佳,请使用 –> Github版 1. 合理配置 .gitignore 文件 配置 .gitignore 可以排除一些非必要文件和保护保密信息,下面是在项目根目录下 .gitig ...

  6. jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

    这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...

  7. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  8. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  9. app开发外包注意事项,2017最新资讯

    我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...

随机推荐

  1. macOS Sierra 触控板无法三指拖移窗口、三指选中文字的解决方法

    问题:升级macOS Sierra新系统后,发现触摸板无法进行三指拖移窗口.三指选定文字的操作.在“系统偏好设置”——“触控板”内无法进行设置. 解决:“系统偏好设置”——“辅助功能”——“鼠标与触控 ...

  2. js深度复制

    项目过程遇到需要对一个对象处理,然后独立出来用,结果怎么处理都会影响到原有变量,原来是引用导致,只有深度复制才行. 最终用下面的赋值方法才搞成功 var result=$.extend( true, ...

  3. JDBC 学习笔记(十二)—— DataSource

    在 JDBC 的实现过程中,最消耗资源的从来不是执行 SQL 之类的过程,而是获取-释放 数据库连接 Connection 的过程. 之前通过 DriverManager 获得的数据库连接对象,每一个 ...

  4. 【bzoj4589】Hard Nim FWT

    题目描述 Claris和NanoApe在玩石子游戏,他们有n堆石子,规则如下: 1. Claris和NanoApe两个人轮流拿石子,Claris先拿. 2. 每次只能从一堆中取若干个,可将一堆全取走, ...

  5. 【bzoj3944/bzoj4805】Sum/欧拉函数求和 杜教筛

    bzoj3944 题目描述 输入 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 输出 一共T行,每行两个用空格分隔的数ans1,ans2 样例输 ...

  6. List里面的对象被覆盖

    对于for循环,当对象创建在for循环外时,list里面的内容会被覆盖··· 解决办法:把对象创建放入for循环里面: 具体原理:若是放到在for外,对象是同一个,放到for到里面,每次都创建一个新的 ...

  7. mac os 80端口的间接使用

    资料显示 MAC OS本质是Unix系统,默认非root用户无法使用1024一下的端口,要是非要用,比如一般情况下,本地项目用tomcat运行,一般都是localhost:8080/XXXX,如果想通 ...

  8. mapserver+openlayers实现左键点击查询

    效果图 第一步,配置自己的mapfile,在要查询的图层LAYER对象内加上HEADER,TEMPLATE,FOOTER三个参数,同时,TEMPLATE fooOnlyForWMSGetFeature ...

  9. 实例对比 Julia, R, Python,谁是狼语言?

    对于一个平台来说,使用者对技术本身是不敏感的,所以我们需要增加一些限制来减少集群的一些不可控情况,例如不断的写入新表/新数据却不记得删除,大量不按规范创建的表名等情况.与此同时应尽量让技术对用户透明, ...

  10. 事务ACID特性,其中I代表隔离性(Isolation)。

    事务ACID特性,其中I代表隔离性(Isolation). 什么是事务的隔离性? 隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互隔离 ...