首先导入依赖
implementation 'com.facebook.fresco:fresco:1.11.0'
初始化
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//缓存路径
DiskCacheConfig config = DiskCacheConfig.newBuilder(this)
.setBaseDirectoryName("images")
.setBaseDirectoryPath(Environment.getDataDirectory())
.build();
//设置磁盘缓存的配置并设置文件
ImagePipelineConfig config1 = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(config)
.build();
Fresco.initialize(this,config1);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bind = ButterKnife.bind(this);
builder = new GenericDraweeHierarchyBuilder(getResources());
//静态图片网址
path ="http://www.zhaoapi.cn/images/quarter/ad1.png";
}
@OnClick({R.id.btn_cricle,R.id.btn_radiu,R.id.btn_sclace,R.id.btn_gif,R.id.zhu,R.id.addlist,})
public void setOnClick(Button btn){
switch (btn.getId()){
case R.id.btn_cricle:
//加载圆形图片
RoundingParams params = RoundingParams.asCircle(); //形状
GenericDraweeHierarchy hierarchy = builder.setRoundingParams(params).build();
image.setHierarchy(hierarchy);
image.setImageURI(path);
break;
case R.id.btn_radiu:
//圆角 7dp
RoundingParams cornersRadius = RoundingParams.fromCornersRadius(20);
GenericDraweeHierarchy hierarchy1 = builder.setRoundingParams(cornersRadius).build();
image.setHierarchy(hierarchy1);
image.setImageURI(path);
break;
case R.id.btn_sclace:
//设置宽高比
image.setImageURI(path);
ViewGroup.LayoutParams layoutParams = image.getLayoutParams();
int width = image.getWidth();
layoutParams.height=(int)(width*0.71);
image.setLayoutParams(layoutParams);
break;
case R.id.btn_gif:
//动图
AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(Uri.parse("http://s1.dwstatic.com/group1/M00/FD/B0/1878f20ee96e34481a404cf9e80358b7.gif"))
.setAutoPlayAnimations(true)
.setOldController(image.getController())
.build();
image.setController(controller);
Animatable animatable = image.getController().getAnimatable();
if (animatable!=null && !animatable.isRunning()){
animatable.start();
}
break;