package com.appassit.widget.googleprogress;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ProgressBar;
import com.appassit.R;
public class GoogleProgressBar extends ProgressBar {
private enum ProgressType {
FOLDING_CIRCLES, GOOGLE_MUSIC_DICES, NEXUS_ROTATION_CROSS
}
public GoogleProgressBar(Context context) {
this(context, null);
}
public GoogleProgressBar(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.progressBarStyle);
}
public GoogleProgressBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.GoogleProgressBar, defStyle, 0);
final int typeIndex = a.getInteger(R.styleable.GoogleProgressBar_type, context.getResources().getInteger(R.integer.default_type));
final int colorsId = a.getResourceId(R.styleable.GoogleProgressBar_colors, R.array.google_colors);
a.recycle();
Drawable drawable = buildDrawable(context, typeIndex, colorsId);
if (drawable != null)
setIndeterminateDrawable(drawable);
}
private Drawable buildDrawable(Context context, int typeIndex, int colorsId) {
Drawable drawable = null;
ProgressType type = ProgressType.values()[typeIndex];
switch (type) {
case FOLDING_CIRCLES:
drawable = new FoldingCirclesDrawable.Builder(context).colors(getResources().getIntArray(colorsId)).build();
break;
case GOOGLE_MUSIC_DICES:
drawable = new GoogleMusicDicesDrawable.Builder().build();
break;
case NEXUS_ROTATION_CROSS:
drawable = new NexusRotationCrossDrawable.Builder(context).colors(getResources().getIntArray(colorsId)).build();
}
return drawable;
}
}