依赖
implementation ‘com.facebook.fresco:drawee:1.10.0’
implementation ‘com.facebook.fresco:fresco:1.11.0’
implementation ‘com.facebook.fresco:animated-gif:1.10.0’//动图所需依赖
权限
布局
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/imageView"
android:layout_marginLeft="20dp"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
fresco:placeholderImage="@mipmap/ic_launcher"
/>
public class FrescoUtil {
/**
*基础加载图片
* @param url 图片路径
* @param simpleDraweeView 控件
*/
public static void setPic(String url, SimpleDraweeView simpleDraweeView){
Uri uri=Uri.parse(url);
simpleDraweeView.setImageURI(uri);
}
//渐进式加载图片
public static void setGradual(String url,SimpleDraweeView simpleDraweeView){
Uri uri=Uri.parse(url);
ImageRequest request=ImageRequestBuilder.newBuilderWithSource(uri)
.setProgressiveRenderingEnabled(true)
.build();
DraweeController controller=Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(simpleDraweeView.getController())
.build();
simpleDraweeView.setController(controller);
}
//圆角
public static void Corner(String url,SimpleDraweeView simpleDraweeView,float radius,int color,float width){
Uri uri=Uri.parse(url);
RoundingParams roundingParams=RoundingParams.fromCornersRadius(0f);
if(width>0f){
roundingParams.setBorder(color,width);//描边线
roundingParams.setCornersRadius(radius);
simpleDraweeView.getHierarchy().setRoundingParams(roundingParams);
simpleDraweeView.setImageURI(uri);
}
}
//动图
public static void setGif(String url,SimpleDraweeView simpleDraweeView){
Uri uri=Uri.parse(url);
DraweeController controller=Fresco.newDraweeControllerBuilder()
.setUri(uri)
.setTapToRetryEnabled(true)
.setAutoPlayAnimations(true)
.setOldController(simpleDraweeView.getController())
.build();
simpleDraweeView.setController(controller);
}
}
初始化
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
File sd = Environment.getExternalStorageDirectory();
String mPath = sd.getPath() + "/image";
File file = new File(mPath);
if (!file.exists()) {
file.mkdir();
}
Fresco.initialize(this,ImagePipelineConfig.newBuilder(App.this)
.setMainDiskCacheConfig(
DiskCacheConfig.newBuilder(this)
.setBaseDirectoryPath(file)
.build()
)
.build()
);
}
}
//在MainActivity应用
public class MainActivity extends AppCompatActivity {
private SimpleDraweeView imageView;
private String uri="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523079111408&di=7783555b20885592a8034c6e729a6414&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F01ea90595f5ca4a8012193a3d93648.jpeg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
FrescoUtil.setPic(uri,imageView);
FrescoUtil.Corner(uri,imageView,50,Color.RED,2);
FrescoUtil.setGif(uri,imageView);
}
}