零.这里可以看具体步骤
一.dependence依赖:
compile 'com.facebook.fresco:fresco:0.6.0'
二.加入权限:用于在网络下载图片:
<uses-permission android:name="android.permission.INTERNET" />
三.创建application 初始化Fresco.initialize(this) 并在AndroidManifest.xml修改android:name=”.TianMaoApplication”
public class TianMaoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
<application
...
android:label="@string/app_name"
android:name=".TianMaoApplication"
>
四.SimpleDraweeView控件
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width="130dp"
android:layout_height="130dp"
fresco:placeholderImage="@drawable/my_drawable" //加载图片之前替代的图片
/>
五.具体设置图片到SimpleDraweeView
Uri uri = Uri.parse(“https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/logo.png“);
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);
六.使用fresco渐进式地加载显示图片
1.TianMaoApplication中的配置PipeLineConfig
@Override
public void onCreate() {
super.onCreate();
//这段代码是用于application中使用渐进式图片
ImagePipelineConfig config=ImagePipelineConfig.newBuilder(this)
.setProgressiveJpegConfig(new SimpleProgressiveJpegConfig())
.build();
Fresco.initialize(this,config);
}
2.使用fresco渐进式加载图片
simpleDraweeView= (SimpleDraweeView) view.findViewById(R.id.my_image_view);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setProgressiveRenderingEnabled(true)
.build();
PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.build();
simpleDraweeView.setController(controller);
七.多图请求(先显示一个缩略图,然后显示加载后的完成的图片)
缩略图
private Uri lowResUri=Uri.parse(
"http://img4q.duitang.com/uploads/item/201411/20/20141120132318_3eAuc.thumb.700_0.jpeg");
高清图
private Uri highResUri=Uri.parse(
"http://heilongjiang.sinaimg.cn/2015/0326/U10061P1274DT20150326104659.jpg");
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setLowResImageRequest(ImageRequest.fromUri(lowResUri))
.setImageRequest(ImageRequest.fromUri(highResUri))
.setOldController(simpleDraweeView.getController())
.build();
simpleDraweeView.setController(controller);
八.加载单个图片的方法中加入监听事件
//所有的图片加载,onFinalImageSet 或者 onFailure 都会被触发。前者在成功时,后者在失败时。
//如果允许呈现渐进式JPEG,同时图片也是渐进式图片,onIntermediateImageSet会在每个扫描被解码后回调。
ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() {
@Override
public void onFinalImageSet(
String id,
@Nullable ImageInfo imageInfo,
@Nullable Animatable anim) {
if (imageInfo == null) {
return;
}
QualityInfo qualityInfo = imageInfo.getQualityInfo();
FLog.d("Final image received! " +
"Size %d x %d",
"Quality level %d, good enough: %s, full quality: %s",
imageInfo.getWidth(),
imageInfo.getHeight(),
qualityInfo.getQuality(),
qualityInfo.isOfGoodEnoughQuality(),
qualityInfo.isOfFullQuality());
}
@Override
public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) {
// FLog.d("Intermediate image received");
}
@Override
public void onFailure(String id, Throwable throwable) {
FLog.e(getClass(), throwable, "Error loading %s", id);
}
};