Fresco加载圆角图片以及定义progressbar动画

我的项目地址:请点击这里

这里写图片描述
这里写图片描述
这里我把他抽象了一个工具类,但是有个没找到相应的方法,可能是因为版本的原因,就是等待的图片的旋转。
看一下activity

package com.fanyafeng.frescopicload.activity;

import android.graphics.Color;
import android.os.Bundle;

import com.facebook.drawee.view.SimpleDraweeView;
import com.fanyafeng.frescopicload.R;
import com.fanyafeng.frescopicload.BaseActivity;
import com.fanyafeng.frescopicload.constant.PicUrlConstants;
import com.fanyafeng.frescopicload.util.FrescoAttributeUtil;
import com.fanyafeng.frescopicload.util.FrescoUtil;

import java.net.SocketImpl;

//需要搭配baseactivity,这里默认为baseactivity,并且默认Baseactivity为包名的根目录
public class CirclePicActivity extends BaseActivity {
    private SimpleDraweeView advCircle1;
    private SimpleDraweeView advCircle2;
    private SimpleDraweeView advCircle3;
    private SimpleDraweeView advCircle4;
    private SimpleDraweeView advCircle5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_circle_pic);
//这里默认使用的是toolbar的左上角标题,如果需要使用的标题为中心的采用下方注释的代码,将此注释掉即可
        title = getString(R.string.title_activity_circle_pic);

        initView();
        initData();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //toolbar_center_title.setText(getString(R.string.title_activity_circle_pic));
    }

    //初始化UI空间
    private void initView() {
        advCircle1 = (SimpleDraweeView) findViewById(R.id.advCircle1);
        advCircle1.setHierarchy(FrescoAttributeUtil.setFedInHierarchy(this));
        advCircle1.setImageURI(PicUrlConstants.imgUrl);

        advCircle2 = (SimpleDraweeView) findViewById(R.id.advCircle2);
        advCircle2.setHierarchy(FrescoAttributeUtil.setCircleHierarchy(this));
        advCircle2.setImageURI(PicUrlConstants.imgUrl);

        advCircle3 = (SimpleDraweeView) findViewById(R.id.advCircle3);
        advCircle3.setHierarchy(FrescoAttributeUtil.setCircleRingHierarchy(this, Color.BLUE, 5f));
        advCircle3.setImageURI(PicUrlConstants.imgUrl);

        advCircle4 = (SimpleDraweeView) findViewById(R.id.advCircle4);
        advCircle4.setHierarchy(FrescoAttributeUtil.setCircleRadiusHierarchy(this, 50f, 50f, 50f, 50f));
        advCircle4.setImageURI(PicUrlConstants.imgUrl);

        advCircle5 = (SimpleDraweeView) findViewById(R.id.advCircle5);
        advCircle5.setHierarchy(FrescoAttributeUtil.setCircleRadiusRingHierarchy(this, 50f, 10f, 50f, 10f, Color.BLUE, 5f));
        advCircle5.setImageURI(PicUrlConstants.imgUrl);
    }

    //初始化数据
    private void initData() {

    }

}
package com.fanyafeng.frescopicload.activity;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;

import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.generic.RoundingParams;
import com.facebook.drawee.view.SimpleDraweeView;
import com.fanyafeng.frescopicload.R;
import com.fanyafeng.frescopicload.BaseActivity;
import com.fanyafeng.frescopicload.constant.PicUrlConstants;
import com.fanyafeng.frescopicload.util.FrescoAttributeUtil;

//需要搭配baseactivity,这里默认为baseactivity,并且默认Baseactivity为包名的根目录
public class PicProgressActivity extends BaseActivity {
    private SimpleDraweeView progress1;
    private SimpleDraweeView progress2;
    private SimpleDraweeView progress3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pic_progress);
//这里默认使用的是toolbar的左上角标题,如果需要使用的标题为中心的采用下方注释的代码,将此注释掉即可
        title = getString(R.string.title_activity_pic_progress);

        initView();
        initData();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //toolbar_center_title.setText(getString(R.string.title_activity_pic_progress));
    }

    //初始化UI空间
    private void initView() {
        progress1 = (SimpleDraweeView) findViewById(R.id.progress1);
        progress2 = (SimpleDraweeView) findViewById(R.id.progress2);
        progress3 = (SimpleDraweeView) findViewById(R.id.progress3);

    }

    //初始化数据
    private void initData() {
        progress1.setHierarchy(FrescoAttributeUtil.setProgressBarHierarchy(this, R.drawable.wine_loading));
        progress1.setImageURI(PicUrlConstants.imgUrl);

        progress2.setHierarchy(FrescoAttributeUtil.setCircleProgressBarHierarchy(this, R.drawable.wine_loading));
        progress2.setImageURI(PicUrlConstants.imgUrl);

//        progress3.setHierarchy(FrescoAttributeUtil.setLoadFailHierarchy(this, R.drawable.load_holder_icon, R.drawable.load_fail_icon));
        progress3.setImageURI(PicUrlConstants.imgUrl);

    }

}

这里忘了上xml的代码了:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.fanyafeng.frescopicload.activity.PicProgressActivity"
    tools:showIn="@layout/activity_pic_progress">

    <!--需要v4或者v7包,不过一般as创建的工程都默认存在,此处采用滑动嵌套布局,为了解决滑动冲突-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/progress1"
            android:layout_width="150dp"
            android:layout_height="150dp" />

        <com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/progress2"
            android:layout_width="150dp"
            android:layout_height="150dp" />
        <!--顺时针旋转动图-->
        <!--progressBarImageScaleType 中间显示-->
        <com.facebook.drawee.view.SimpleDraweeView
            android:id="@+id/progress3"
            android:layout_width="150dp"
            android:layout_height="150dp"
            app:progressBarAutoRotateInterval="5000"
            app:progressBarImage="@drawable/icon_progress_bar"
            app:progressBarImageScaleType="centerInside" />


    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

还有相应的工具类:

package com.fanyafeng.frescopicload.util;

import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.CompoundButtonCompat;

import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.generic.RoundingParams;
import com.fanyafeng.frescopicload.R;

/**
 * Author: fanyafeng
 * Data: 16/7/25 17:10
 * Email: fanyafeng@live.cn
 */
public class FrescoAttributeUtil {
    private static GenericDraweeHierarchy fedInHierarchy;

    private static GenericDraweeHierarchy circleHierarchy;

    /**
     * 淡入淡出动画效果
     *
     * @param context
     * @return
     */
    public static GenericDraweeHierarchy setFedInHierarchy(Context context) {
        if (fedInHierarchy == null) {
            fedInHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                    .setFadeDuration(300)
                    .build();
        }
        return fedInHierarchy;
    }

    /**
     * 获取圆形图片
     *
     * @param context
     * @return
     */
    public static GenericDraweeHierarchy setCircleHierarchy(Context context) {
        if (circleHierarchy == null) {
            circleHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                    .setRoundingParams(RoundingParams.asCircle())
                    .build();
        }
        return circleHierarchy;
    }

    /**
     * 获取圆环图片
     *
     * @return
     */
    public static GenericDraweeHierarchy setCircleRingHierarchy(Context context, int ringColor, float ringWidth) {
        RoundingParams roundingParams = new RoundingParams();
        roundingParams.setBorder(ringColor, ringWidth);
        roundingParams.setRoundAsCircle(true);
        GenericDraweeHierarchy circleRingHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                .setRoundingParams(roundingParams)
                .build();
        return circleRingHierarchy;
    }

    /**
     * 获取圆角图片
     *
     * @param context
     * @param topLeft
     * @param topRight
     * @param bottomRight
     * @param bottomLeft
     * @return
     */
    public static GenericDraweeHierarchy setCircleRadiusHierarchy(Context context, float topLeft, float topRight, float bottomRight, float bottomLeft) {
        RoundingParams roundingParams = new RoundingParams();
        roundingParams.setCornersRadii(topLeft, topRight, bottomRight, bottomLeft);
        GenericDraweeHierarchy circleRadiusHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                .setRoundingParams(roundingParams)
                .build();
        return circleRadiusHierarchy;
    }

    /**
     * 获取圆角环图片
     *
     * @param context
     * @param topLeft
     * @param topRight
     * @param bottomRight
     * @param bottomLeft
     * @param ringColor
     * @param ringWidth
     * @return
     */
    public static GenericDraweeHierarchy setCircleRadiusRingHierarchy(Context context, float topLeft, float topRight, float bottomRight, float bottomLeft, int ringColor, float ringWidth) {
        RoundingParams roundingParams = new RoundingParams();
        roundingParams.setBorder(ringColor, ringWidth);
        roundingParams.setCornersRadii(topLeft, topRight, bottomRight, bottomLeft);
        GenericDraweeHierarchy circleRadiusRingHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                .setRoundingParams(roundingParams)
                .build();
        return circleRadiusRingHierarchy;
    }

    /**
     * 加载图片过程中动图progressbar显示,可以为动画图,也可以为非动图
     *
     * @param context
     * @param resId
     * @return
     */
    public static GenericDraweeHierarchy setProgressBarHierarchy(Context context, int resId) {
        GenericDraweeHierarchy progressBarDraweeHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                .setProgressBarImage(ContextCompat.getDrawable(context, resId))
                .build();
        return progressBarDraweeHierarchy;
    }

    /**
     * 加载图片过程中动图progressbar显示,可以为动画图,也可以为非动图
     * 图片为圆形图片
     *
     * @param context
     * @param resId
     * @return
     */
    public static GenericDraweeHierarchy setCircleProgressBarHierarchy(Context context, int resId) {
        RoundingParams roundingParams = new RoundingParams();
        roundingParams.setRoundAsCircle(true);
        GenericDraweeHierarchy circleProgressBarDraweeHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                .setProgressBarImage(ContextCompat.getDrawable(context, resId))
                .setRoundingParams(roundingParams)
                .build();
        return circleProgressBarDraweeHierarchy;
    }

    public static GenericDraweeHierarchy setLoadFailHierarchy(Context context, int holderResId, int failResId) {
        GenericDraweeHierarchy loadFailHierarchy = GenericDraweeHierarchyBuilder.newInstance(context.getResources())
                .setPlaceholderImage(holderResId)
                .setFailureImage(failResId)
                .setRetryImage(failResId)
//                .setRetryImage()   加载失败后的重试图片
                .build();
        return loadFailHierarchy;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值