这里我把他抽象了一个工具类,但是有个没找到相应的方法,可能是因为版本的原因,就是等待的图片的旋转。
看一下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;
}
}