前言
最近用了许多图片加载的框架,都各有利弊。
尝试寻找一种比较吊的图片框架,没错就是Fresco了。
他真正实现了三级缓存,而且速度快,不会出现图片过大造成OOM的现象发生。
Fresco和Picasso类似,用起来十分方便,为一区别是他必须使用自己类库的SimpleDraweeView来代替ImageView。下面是其基础使用方式
Android Studio 导入到项目
不知道为什么我在添加依赖里搜不到fresco
如果你也和我一样,可以通过Gradel添加依赖
compile 'com.facebook.fresco:fresco:0.10.0'
准备工作
为了下载网络图片,请确保在 AndroidManifest.xml 中有以下权限:
<uses-permission android:name="android.permission.INTERNET"/>
在 Application 初始化时,在应用调用 setContentView() 之前,进行始化
Fresco.initialize(context);
布局
在xml布局文件中, 加入命名空间:
<!-- 其他元素 -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto">
加入SimpleDraweeView:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width="20dp"
android:layout_height="20dp"
fresco:placeholderImage="@drawable/my_drawable"
/>
加载图片
Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/fresco-logo.png");
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);
剩下的,Fresco会替你完成:
• 显示占位图直到加载完成;
• 下载图片;
• 缓存图片;
• 图片不再显示时,从内存中移除;