-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
高级初始化-配置网络层为OkHttp
Fresco
默认使用HttpURLConnection
作为网络层,当然也可以配置OkHttp作为它的网络层,配置OkHttp为它的网络层需要依赖下面的库:
compile "com.facebook.fresco:imagepipeline-okhttp3:0.12.0+"
- 1
然后在Application中初始化的时候注意:
`/**
- 初始话Fresco。
*/
public void initFresco() {
// 你的OkHttpClient根据你的设计来,建议是单例:
OkHttpClient okHttpClient = new OkHttpClient();
Fresco.initialize(this, OkHttpImagePipelineConfigFactory.newBuilder(App.this, okHttpClient)
.setMainDiskCacheConfig(
DiskCacheConfig.newBuilder(this)
.setBaseDirectoryPath(new File(“SD卡的路径…”))
.build()
)
.build()
);
}`
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
这里只需要注意原来的ImagePipelineConfig
换成了OkHttpImagePipelineConfigFactory
,并且需要一个OkHttpClient
的对象。
加载网络图片、url、assets、res、本地File图片
先给出支持的URI格式列表(列表来自fresco-cn.org):
| Type | Scheme | Sample |
| — | — | — |
| http远程图片 | http://或者https:// | HttpURLConnection或者OkHttp |
| 本地文件 | file:// | FileInputStream |
| Content provider | content:// | ContentResolver |
| res目录下的资源 | res:// | Resources.openRawResource |
| asset目录下的资源 | asset:// | AssetManager |
| Uri中指定图片数据 | data:mime/type;base64, | 数据类型必须符合rfc2397规定 (仅支持 UTF-8) |
SimpleDraweeView
实际开发中,如果没有特殊需求,我们一般使用SimpleDraweeView
来占位,传统的图片加载框架一般是使用ImageView
,例如:
`<ImageView
…/>`
-
1
-
2
在使用Fresco
时我们一般使用SimpleDraweeView
,它也是继承ImageView
的:
`<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv_head_background"
android:layout_width=“match_parent”
android:layout_height="@dimen/dp_200"/>`
-
1
-
2
-
3
-
4
把它当成我们平常使用的ImageView
即可,不过我们要注意Fresco
不支持wrap_content
(具体原因看这里)