package fr.ydelouis.selfoss.view; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.drawable.Drawable; import java.util.List; public class ColorsOvalDrawable extends Drawable { private Paint paint; private List<Integer> colors; public ColorsOvalDrawable(List<Integer> colors) { paint = new Paint(); paint.setFlags(Paint.ANTI_ALIAS_FLAG); this.colors = colors; } public List<Integer> getColors() { return colors; } public void setColors(List<Integer> colors) { this.colors = colors; this.invalidateSelf(); } @Override public void draw(Canvas canvas) { if (colors != null && !colors.isEmpty()) { RectF rect = new RectF(getBounds()); float startAngle = -90; float angle = 360 / colors.size(); for (Integer color : colors) { paint.setColor(color); canvas.drawArc(rect, startAngle, angle, true, paint); startAngle += angle; } } } @Override public void setAlpha(int alpha) { paint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { paint.setColorFilter(cf); } @Override public int getOpacity() { return paint.getAlpha(); } }