Fresco 代码设置圆形进度条实现

Fresco官方文档


在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;
    }


}


猜你喜欢

转载自blog.csdn.net/blackholeAC/article/details/50240479
今日推荐