依赖
//使用+代表依赖库的最新版本
//Fresco
compile 'com.facebook.fresco:fresco:+'
//支持GIF
compile 'com.facebook.fresco:animated-gif:+'
MainActivity.java
package com.example.fresco;
import android.graphics.drawable.Animatable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.AbstractDraweeController;
import com.facebook.drawee.controller.BaseControllerListener;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.image.ImageInfo;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
public class MainActivity extends AppCompatActivity {
public String mImageUrl="http://imgstore.cdn.sogou.com/app/a/100540002/661782.jpg";
public String mErrorUrl="http://imgstore.cdn.sogou.com/app/a/100542/661782.jpg";
public String mGifUrl="http://p0.ifengimg.com/pmop/2017/0729/FE0633609A001942214FB696CB2EFA2C2FF30E2B_size413_w500_h226.gif";
public String mJpegUrl="http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=041e9e287acf3bc7fc0dc5afb969d0d4/9e3df8dcd100baa1ae06259e4d10b912c8fc2ee8.jpg";
private SimpleDraweeView sdv;
private Button btn;
private int LKH=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//需要初始化Fresco
Fresco.initialize(this);
setContentView(R.layout.activity_main);
//获取控件
sdv = (SimpleDraweeView) findViewById(R.id.sdv);
btn = (Button) findViewById(R.id.btn);
//得到URI
Uri uri = Uri.parse(mGifUrl);
//设置图片地址
sdv.setImageURI(uri);
//
// // 在java代码中设置view的一些xml属性 失败、重试
// GenericDraweeHierarchy draweeHierarchy = new GenericDraweeHierarchyBuilder(getResources())
// .setFailureImage(ContextCompat.getDrawable(this, R.drawable.icon_failure))
// .build();
//
// sdv.setHierarchy(draweeHierarchy);
//也可以控制图片请求的一些特性
ImageRequest build = ImageRequestBuilder.newBuilderWithSource(uri)
//射中支持JPEG的渐进展示(从模糊到清晰)
.setProgressiveRenderingEnabled(true)
.build();
//控制图片加载的一些特性
AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(build)
.setUri(uri)
//设置可重新设置(4次)
// .setTapToRetryEnabled(true)
//设置自动播放
// .setAutoPlayAnimations(true)
//设置监听图片加载
.setControllerListener(new BaseControllerListener<ImageInfo>(){
@Override
public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {
}
@Override
public void onFailure(String id, Throwable throwable) {
Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_SHORT).show();
}
})
.build();
sdv.setController(controller);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Animatable animatable = sdv.getController().getAnimatable();
if (LKH%2==0){
LKH++;
animatable.start();
}else {
LKH++;
animatable.stop();
}
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<!--fresco:viewAspectRatio="1.5" 设置宽高比-->
<!--fresco:failureImage="@drawable/icon_failure" 网络加载失败图片-->
<!--fresco:progressBarImage="@drawable/icon_progress_bar" 网络缓慢过度图片-->
<!--fresco:progressBarAutoRotateInterval="3000" 旋转-->
<!--fresco:roundedCornerRadius="30dp" 设置弧度-->
<!--fresco:roundTopLeft="false" 设置是否有弧度-->
<!--fresco:roundAsCircle="true" 设置圆边框-->
<!--fresco:roundingBorderWidth="20dp" 设置边框宽度-->
<!--fresco:roundingBorderColor="#00f" 设置边框颜色-->
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv"
android:layout_gravity="center"
android:layout_width="400dp"
android:layout_height="wrap_content"
fresco:viewAspectRatio="1.5"
fresco:failureImage="@drawable/icon_failure"
fresco:progressBarImage="@drawable/icon_progress_bar"
fresco:progressBarAutoRotateInterval="3000"
fresco:fadeDuration="5000"
fresco:retryImage="@drawable/icon_retry"
fresco:roundedCornerRadius="30dp"
fresco:roundTopLeft="false"
fresco:roundBottomRight="false"
fresco:roundAsCircle="true"
fresco:roundingBorderWidth="20dp"
fresco:roundingBorderColor="#00f"
/>
<!--<com.facebook.drawee.view.SimpleDraweeView-->
<!--android:id="@+id/sdv"-->
<!--android:layout_gravity="center"-->
<!--android:layout_width="400dp"-->
<!--android:layout_height="wrap_content"-->
<!--fresco:viewAspectRatio="1.5"-->
<!--/>-->
<Button
android:id="@+id/btn"
android:layout_gravity="center"
android:background="#ffab77"
android:layout_width="300dp"
android:layout_height="60dp"
android:textColor="#fff"
android:text="点击"/>
</LinearLayout>