在XML中设置Fresco图片加载进度条比较简单 官方文档有给出方法
添加
fresco:progressBarImage="@drawable/progress_bar"
fresco:progressBarAutoRotateInterval="1000"
但是这样比较繁琐 之前想实现一个自己的 SimpleDraweeView
在代码中动态加载图片 进度条就没法配置了 看了下官方API现在也不支持在代码配置
就跑去看了下GenericDraweeView源码,自己重写了一下 主要代码如下
private DraweeHolder<GenericDraweeHierarchy> mDraweeHolder;
Object roundingParams = getResources().getDrawable(R.drawable.ic_common_progress);
roundingParams = new AutoRotateDrawable((Drawable) roundingParams, 5000);
//设置进度条
final GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(getResources())
.setProgressBarImage((Drawable) roundingParams, ScalingUtils.ScaleType.CENTER_INSIDE).build();
mDraweeHolder = DraweeHolder.create(hierarchy, getContext());
酱紫就可以啦~~~
补充下全部代码
package com.dance.magic.viewstudyapplication.base.view;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import com.dance.magic.viewstudyapplication.R;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.backends.pipeline.PipelineDraweeController;
import com.facebook.drawee.drawable.AutoRotateDrawable;
import com.facebook.drawee.drawable.ScalingUtils;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.DraweeHolder;
import com.facebook.drawee.view.SimpleDraweeView;
/**
* Created by magicDance on 2015/12/8.
*/
public class BasicDraweeView extends SimpleDraweeView {
public DraweeHolder<GenericDraweeHierarchy> mDraweeHolder;
public BasicDraweeView(Context context, GenericDraweeHierarchy hierarchy) {
super(context, hierarchy);
initBaseInfo();
}
public BasicDraweeView(Context context) {
super(context);
initBaseInfo();
}
public BasicDraweeView(Context context, AttributeSet attrs) {
super(context, attrs);
initBaseInfo();
}
public BasicDraweeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initBaseInfo();
}
private void initBaseInfo() {
if (isInEditMode()) {
return;
}
Object roundingParams = getResources().getDrawable(R.drawable.ic_common_progress);
roundingParams = new AutoRotateDrawable((Drawable) roundingParams, 5000);
//设置进度条
final GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(getResources())
.setProgressBarImage((Drawable) roundingParams, ScalingUtils.ScaleType.CENTER_INSIDE).build();
mDraweeHolder = DraweeHolder.create(hierarchy, getContext());
}
/**
* URL加载图片请求
*
* @param url
*/
public void LoadImageUri(String url) {
PipelineDraweeController pipelineDraweeController = getDraweeController(url);
setController(pipelineDraweeController);
}
public PipelineDraweeController getDraweeController(String url) {
PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
.setUri(Uri.parse(url))
.setOldController
(mDraweeHolder.getController())
.setAutoPlayAnimations(true)
.build();
return controller;
}
}